Ordner CMS-Seiten CMSFOLDER als Liste im Footer

Hallo zusammen,

ich sitze gerade an einem Template für einen eShop, bei dem der Kunde gerne CMS-Seiten pflegen will.

Dazu habe ich ein kleines Modul geschrieben, dass die oxcontent-IDs von CMS-Seiten zurückgibt.

Habe ich mir da umsonst Gedanken gemacht, weil es diese Funktion schon gibt?
Haben die CMS-Ordner irgendeinen weiteren Sinn, als im Admin-Bereich ein wenig Ordnung in die CMS-Seiten zu bringen?

Grüße

Gregor

content_page_by_cms_folder/content_page_by_cms_folder.php


class content_page_by_cms_folder extends content_page_by_cms_folder_parent
{
	// 
	protected $_page_list = null;
	
	public function get_cms_pages_by_cms_folder($cms_folder) {
		if($this->_page_list[$cms_folder] === null) {
			// getAllContentIDs
			$sql = "
				SELECT OXID FROM oxcontents WHERE OXFOLDER='".mysql_real_escape_string($cms_folder)."'
			;";
			$temp = oxDb::getDB(true)->GetAll($sql);
			if(sizeof($temp)) {
				foreach($temp as $content_id) {
					$this->_page_list[$cms_folder][] = $content_id[0];
				}				
			} else {
				$this->_page_list[$cms_folder] = false;
			}
		}

		return $this->_page_list[$cms_folder];
	}
}

content_page_by_cms_folder/metadata.php


/**
 * Metadata version
 */
$sMetadataVersion = '1.0';

/**
 * Module information
 */
$aModule = array(
    'id'           => 'content_page_by_cms_folder',
    'title'        => 'Content Pages by Content Folder ',
    'description'  => 'Module for displaying Content Pages lists by Content Folders.',
    'thumbnail'    => 'picture.png',
    'version'      => '1.0',
    'author'       => 'Gregor Wendland',
    'extend'       => array(
        'oxviewconfig' => 'content_page_by_cms_folder/content_page_by_cms_folder'
    )
);

footer.tpl


...
		            [{if $oViewConf->get_cms_pages_by_cms_folder("CMSFOLDER_MOREABOUTUS")}]
		            	<h4>[{oxmultilang ident="CMSFOLDER_MOREABOUTUS"}]</h4>
		            	[{foreach from=$oViewConf->get_cms_pages_by_cms_folder("CMSFOLDER_MOREABOUTUS") item="content_ident"}]
                            [{oxifcontent ident=$content_ident object="oCont"}]
                            	<a href="[{ $oCont->getLink() }]">[{ $oCont->oxcontents__oxtitle->rawValue }]</a>
                            [{/oxifcontent}]
		            	[{/foreach}]
		            [{/if}]
		            
		            [{if $oViewConf->get_cms_pages_by_cms_folder("CMSFOLDER_INFO")}]
		            	<h4>[{oxmultilang ident="CMSFOLDER_INFO"}]</h4>
		            	[{foreach from=$oViewConf->get_cms_pages_by_cms_folder("CMSFOLDER_INFO") item="content_ident"}]
                            [{oxifcontent ident=$content_ident object="oCont"}]
                            	<a href="[{ $oCont->getLink() }]">[{ $oCont->oxcontents__oxtitle->rawValue }]</a>
                            [{/oxifcontent}]
		            	[{/foreach}]
		            [{/if}]
		            
		            [{if $oViewConf->get_cms_pages_by_cms_folder("CMSFOLDER_SERVICE")}]
		            	<h4>[{oxmultilang ident="CMSFOLDER_SERVICE"}]</h4>
		            	[{foreach from=$oViewConf->get_cms_pages_by_cms_folder("CMSFOLDER_SERVICE") item="content_ident"}]
                            [{oxifcontent ident=$content_ident object="oCont"}]
                            	<a href="[{ $oCont->getLink() }]">[{ $oCont->oxcontents__oxtitle->rawValue }]</a>
                            [{/oxifcontent}]
		            	[{/foreach}]
		            [{/if}]
...

meines Wissens nach haben die “Folder” nur eine Filterfunktion fürs den Admin-Bereich, äquivalent zu den “Foldern” der Bestellübersicht

Hallo,

nette Idee zum Beispiel für ne FAQ oder so.

Gruß Joscha

[QUOTE=jkrug;117116]
nette Idee zum Beispiel für ne FAQ oder so.
[/QUOTE]

Und an sich ist das ja auch einfach gemacht… und wenn ein Kunde so ein bisschen CMS haben will aber nur den Shop bezahlt, dann ist das, würde ich meinen, eine passable Lösung.

Na ja … oben ist der Ansatz.

Grüße+schönes WE

Gregor

schick - stellst Du das auf Github, bevors im Forum verschütt geht?

ich könnte noch ein Minimodul beisteuern, mit dem bisschen Struktur á la “Ober-CMS-Seite mit Unter-CMS-Seiten” reinbekommt

[QUOTE=vanilla thunder;117167]ich könnte noch ein Minimodul beisteuern, mit dem bisschen Struktur á la “Ober-CMS-Seite mit Unter-CMS-Seiten” reinbekommt[/QUOTE]

Klingt spannend, finde ich. Und schon haben wir ein CMS ^^

das wär super - und ist ein gutes Beispiel für Crowd-Entwicklung via Github :slight_smile:

Ich muss gestehen, dass ich mich mit Github noch gar nicht beschäftigt habe. Vermutlich meldet man sich da an und los geht, oder wie?

Hallo Gewend,

genau so sieht das aus! Eigentlich ist GitHub ja nur ein Hoster für GitRepositories. Die Doku ist aber prima und es macht den Einstieg sehr viel leichter.

Meiner Erfahrung nach hier aus dem Team ist. Am Anfang hassen Git alle und nach recht kurzer Zeit fragt man sich, wie man jemals ohne konnte. :wink:

Gruß Joscha

Lang hat’s gedauert …

Klasse, danke :slight_smile:
Und wie findest Du’s, kommst Du gut damit klar?

Gruß

An sich finde ich github super … momentan hab’ ich nur nicht so viel Zeit mich damit zu beschäftigen ^^ … aber ist ne schöne Möglichkeit um seinen Code öffentlich zu Verfügung zu stellen. Gut um ggf. mal was an die Welt zurück zu geben, falls jemand was damit anfangen kann :slight_smile:

Ach, prima - da war es ja schon :slight_smile:

@Vanilla_Thunder: bringst Du Deine Änderungen hier noch unter?

@gewend: Kannst Du am 18. Juni zum UG-Treffen in Berlin dabei sein?

Gruß

klar,
hier ist mein Modul: https://github.com/vanilla-thunder/oxid-module-cmsmenu
:slight_smile:

Hallo,

was gehört denn für die Aktivierung des Moduls auf die linke Seite?

? = content_page_by_cms_folder/content_page_by_cms_folder

Vielen Dank schon mal.

ganerc

oxviewconfig => content_page_by_cms_folder/content_page_by_cms_folder

welche Shopversion verwendest Du denn?

Vielen Dank. Ich habe noch die 4.5.9. und wahrscheinlich liegt es daran, dass es noch nicht ganz funktioniert. Folgenden Code habe ich benutzt, inkl.“Debugwerte” von mir:


[{if $oViewConf->get_cms_pages_by_cms_folder("CMSFOLDER_BERICHT")}]
   [{foreach from=$oViewConf->get_cms_pages_by_cms_folder("CMSFOLDER_BERICHTE") item="content_ident"}]
     <p>foreach</p>
     [{oxifcontent ident=$content_ident object="oCont"}]
        <li><p>Link</p><a href="[{ $oCont->getLink() }]">[{ $oCont->oxcontents__oxtitle->rawValue }]</a></li>
     [{/oxifcontent}]
   [{/foreach}]
[{/if}]

Die Schleife wird genau so oft durchlaufen, wie CMS-Seiten vorhanden sind. Nur der Link wird nicht angezeigt, d.h. das Wort “Link” taucht nicht auf. Leider kenne ich mich mit der Programmierung vom Shop gar nicht aus. Muss ich updatgen oder kann man das noch anpassen?

ganerc

Hallo,

ich habe dasselbe Problem die Schleife wird zwar durchlaufen und die
die $content_ident kann ich ausgeben aber in oxifcontent passiert nichts.
Das Script habe ich im _left.tpl in einem angepassten basic theme eingefügt.
Wenn ich eine ident Manuell eingebe funktioniert es.
[{oxifcontent ident=“news1” object=“oCont”}]
die Ausgabe der [{$content_ident}] geht auch.
Kann mir das nicht erklären und finde auch kein Hinweis im Forum warum das nicht gehen soll.
Evtl. habe ich was übersehen?.

[{foreach from=$oViewConf->get_cms_pages_by_cms_folder(“CMSFOLDER_NEWS”) name=contc item=“content_ident”}]
<li class=“newslist”>[{$content_ident}]
[{oxifcontent ident=$content_ident object=“oCont”}]
<a href="[{ $oCont->getLink() }]">[{ $oCont->oxcontents__oxtitle->Value }]</a>
[{/oxifcontent}]
</li>
[{/foreach}]

oxid Version 4.7.9

Danke für die Hilfe

Viele Grüße

Hallo zusammen,

ich habe mal eine neue Version gepushed, die jetzt auch das sortieren ermöglicht. Außerdem war in der SQL-Abfrage des Moduls noch nicht berücksichtigt, ob eine CMS-Seite aktiviert ist oder nicht.

Wenn Ihr dieses neue verwenden wollt, muss noch eine SQL-Anweisung ausgeführt werden:
ALTER TABLE oxcontents ADD CONTENT_PAGE_ORDER INT(8) NOT NULL;

Dann TMP-Ordner leeren und Views updaten. Danach könnt ihr unter CMS-Seiten eine Sortiernummer für die CMS-Seiten angeben - ginge sicher schöner aber erfüllt seinen Zweck erstmal :wink:

Ihr findet die neue Version weiterhin unter:


Ich habe das aktuelle Modul gerade in der CE 4.8.1 getestet und es hat wunderbar funktioniert. Die Probleme, die ihr beschreibt, konnte ich nicht feststellen.
Getestet habe ich mit folgendem Smarty-Template-Code:


[{if $oViewConf->get_cms_pages_by_cms_folder("CMSFOLDER_MOREABOUT")}]
	<ul>
    	[{foreach from=$oViewConf->get_cms_pages_by_cms_folder("CMSFOLDER_MOREABOUT") item="content_ident"}]
            [{oxifcontent ident=$content_ident object="oCont"}]
            	<li><a href="[{ $oCont->getLink() }]">[{ $oCont->oxcontents__oxtitle->rawValue }]</a></li>
            [{/oxifcontent}]
    	[{/foreach}]
   	</ul>
[{/if}]

[{ $oCont->oxcontents__oxtitle->Value }]

Da scheint mir “Value” mit großem “V” falsch zu sein.

Schaut doch mal, ob die Inhaltselemente aktiviert sind, vielleicht liegt da der Hund begraben, denn das Modul holte ja bisher auch reaktivierte CMS-Seiten (jetzt nicht mehr der Fall) und oxifcontent wird dies sicher berücksichtigen und deshalb wurde wohl die foreach-Schleife durchlaufen, nicht aber der Link dargestellt. Dieser Fehler sollte aber nun mit Version 1.2 verschwunden sein.

Schöne Grüße

Gregor