hallo zusammen,
ich möchte mehrere cms-inhalte auf der startseite anzeigen. mein problem dabei ist, daß ich für jeden einzelnen cms-eintrag die start.tpl editieren muss und dort einen entsprechenden eintrag vorzunehmen habe. hier ein beispiel:
[{if werbung1 }]
[{ oxcontent ident="werbung1" }]
[{/if}]
ich suche nach einer lösung dies dynamisch zu erledigen, sodaß ich zukünftig im CMS, durch vergabe eines ident nach einem bestimmten muster, das einbinden automatisch gleich mit erledige. dafür sehe ich zwei lösungswege:
-
über eine schleife, die überprüft, ob werbung1, werbung2, werbung3, werbung4 usw. existiert. bei einem treffer wird entsprechendes CMS-seite eingebunden. ich würde die maximalzahl auf 15 begrenzen, weil ich denke, daß 15 werbeabsätze (oder mit welchem inhalt auch immer) zuviel sind. ich muss ja nicht alle füllen, aber man weiß ja nie, was kommt.
-
benötige ich ein array aller CMS-seiten. dieses durchlaufe ich mit einer schleife und überprüfe den ident jeder seite. ist eine dabei, welche mit dem substring “werbung” beginnt, wird die seite miteingebunden. das wäre eigentlich die lösung, die ich favorisieren würden
bezüglich lösung 1 wüsste ich ja schon, wie man eine schleife macht und auf vorhandensein von seiten prüft und diese ggf. einbindet. ich weiß nur nicht, wie ich einen string (“werbung”) und den zähler der scheife zu einem ident einer cms-seite vereine.
zu lösung 2 fehlt mir, wie ich an das array aller CMS-seiten gelange.
kann mir jemand helfen?
vielen dank
wayne
helfen nicht direkt - dafür bin zu wenig Programmierer…
Aber vielleicht einen neuen / zusätzlichen Denkanstoss liefern. Warum nicht einen der Templateblocks verwenden und die Inhalte aus der DB ziehen? Das hält das Template sauber.
[{oxifcontent ident="werbung1" object="oCont"}]
[{$oCont->oxcontents__oxcontent->value}]
[{/oxifcontent}]
mit dieser Funktion kannst du schauen ob die CMS Seite aktiv ist, und wenn das so ist, wird sie angezeigt
vielen dank vanilla.
hier der code der daraus entstanden ist, um mein problem zu lösen (gemäß des zuerst vorgeschlagenen lösungswegs 1):
[{php}]
for( $i = 0; $i < 15; $i++ ){
$this->_tpl_vars["werbungID"] = "werbung".$i;
[{/php}]
[{oxifcontent ident=$werbungID object="oCont"}]
[{ oxcontent ident=$werbungID }]
[{/oxifcontent}]
[{php}]
}
[{/php}]
zunächst wollte ich das über eine smarty-section-schleife machen (also quasi eine for-schleife im template). jedoch stellte es mich dann vor das nächste problem, daß ich nicht wusste, wie ich einen string und eine variable (den zähler) zu einem neuen string verbinde. so hab ich mich halt kurzerhand für direkte php im template entschieden. würde mich sehr freuen, wenn jemand es noch zeigen könnte, wie das rein per smarty zu lösen wäre.
diese lösung hat natürlich auch noch einen weiteren vorteil: hierdurch kann nun festlegt werden welcher reihenfolge die einzelnen cms-seiten erscheinen sollen.
nochmals vielen dank
wayne
Ich verstehe dein Vorhaben immer noch nicht wirklich.
Du hast 15 CMS Seiten angelegt, und falls eime davon aktiv ist, soll sie auf der Startseite angezeigt werden?
so hab ich das verstanden - quasi 15 “Dummy” - Möglichkeiten, die entweder aktiv und zu Werbe- / Infozwecken angezeigt werden, oder falls nicht benötigt eben ausgeblendet sind
Moin zusammen,
na dann kanner die doch einfach als Snippet dort einbinden wo sie hinsollen und sie im Backend ein- oder ausschalten… Ist doch schon als Grundfunktion implementiert.
Beste Grüsse
Thomas
hallo zusammen,
vanilla: ich möchte auf meiner startseite diverse einzelne cms-seiten einbinden, ohne für jede extra in der start.tpl eine if-abfrage und entsprechendes include hinterlegen zu müssen. so, wie ich das jetzt gelöst hab, kann ich jederzeit hergehen und eine cms-seite (snippet) mit dem ident z.B. “werbung5” erstellen, die durch ihre bloße existenz, den speziellen ident und das aktiv-schalten sofort sichtbar ist, ohne daß ich start.tpl editiere. will ich einen weiteren eintrag davor haben, nenn ich den einfach “werbung4”, will ich einen zusätzlichen danach haben, nenn ich den “werbung6”. über die lösung mit den indizes kann ich auch gleich die reihenfolge festlegen. eine andere lösung für das ganze wäre natürlich in start.tpl eine einzige cms-seite einzubinden und in dieser auf andere zu verweisen. nur ist das halt wesentlich komplexer zu verwalten, für jemanden, der sich mit programmierung nicht auskennt (wie mein auftraggeber in diesem fall). letzterem kann ich viel besser erklären, daß er einfach seine werbung durchnummerieren soll, als das ich ihm erkläre, wie er in einem baustein andere einbindet (natürlich immer mit if-abfrage davor).
Hebsacker: ja, du hast mich richtig verstanden.
Tom Long: wie kann ich das mit snippet lösen? ich verwende ja schon snippets für die einzelnen cms-seiten, die ich alle auf der startseite einbinden will. kann ich das ganze auch im cms selbst festlegen, daß die alle nacheinander angezeigt werden sollen?
Moin Wayne,
hmm… Snippets im CMS-Content…
So auf Anhieb fällt mir da kein Grund ein, warum das nicht gehen sollte.
Probiert hab ich das allerdings noch nicht.
Mach dir doch einfach mal ein paar Snippets in die start.tlp_Begrüssungstext rein und post danach mal das Ergebnis. Ich meine, das müsste problemlos gehen (editieren bitte als Quelltext und nicht in inrgendeinem Editor…)
Beste Grüsse
Thomas
hallo zusammen,
Thomas: snippets in der start.tpl direkt einzubinden ist ja genau das, was ich nicht mehr machen will, weil ich meinem auftraggeber selbst die möglichkeit geben will, jederzeit einen textbaustein (also ein einzelnes snippet) der startseite hinzu zu fügen bzw. weg zu nehmen. ein einziges langes snippet zu haben, indem die gesamte startseite editierbar vor einem liegt ist nicht der wunsch meines kunden. er möchte einzelne teile mal eben schnell ausblenden können, später aber auch mal wieder einblenden, ohne, daß er jedesmal zu einer sicherungskopie greifen und den quelltext per copy-paste wieder einfügen muss.
mit der lösung hier haben wir jetzt einen dynamischen include durch fortlaufende nummerierung der idents der einzelnen snippets. so kann nun jederzeit ein snippet aktiviert bzw. deaktiviert werden um textbausteine einzeln auf der startseite an- bzw. auszuschalten. wenn du dafür etwas besseres weißt, bin ich ganz ohr.
viele grüße
wayne
Moin Wayne,
dann muss ich mich Vanilla anschliessen.
Ich kapier dann einfach nicht, was du genau machen willst.
Vielleicht dein Problem etwas genauer umschreiben. Oder einfach mal ein Bild/URL mit anfügen.
Beste Grüsse
Thomas
ist doch ganz einfach - eine komfortable Lösung für den Shopbetreiber nach Bedarf dynamisch Inhaltsblöcke zu verwenden
Mit dieser Lösung hat der Betreiber 15 “Container” eingebaut, die er nach belieben im Backend via CMS befüllen und anzeigen lassen kann. Sind diese aktiv, werden sie angezeigt, sind sie deaktiviert, wird nichts angezeigt. Auch die Reihenfolge kann über die Nutzung der Nummerierung einfachst bestimmt werden.
Moin Ray,
und inwiefern unterscheiden die sich dann von normalen Snippets die ich ja auch beliebig an- und abschalten kann? Irgendwie steh ich da auf der Leitung…
Beste Grüsse
Thomas
…sprechende Namen…
und eine einzige If-Schleife für alle
Ahso… Dann muss ich mal meine Lärmsprecher anschalten!