container in den Template Modulseiten einbauen

Gesperrt
summendesbienchen
Beiträge: 8
Registriert: Mi 30. Jun 2010, 18:30
Kontaktdaten:

container in den Template Modulseiten einbauen

Beitrag von summendesbienchen »

Hallo,
ich hab da mal eine Frage, ich verwende die Standardnvigation und wollte in der Modul Template Datei html Code drum rum bauen, das klappt auch super auch die Navigation funktioniert richtig. Nur text etc wird nun nicht richtig angezeigt, weil ich hier ebenfalls container angeben muss funktioniert das irgendwie? hier ein beispiel der navigation_standard.html Datei.

<!-- BEGIN:BLOCK -->

<dt class="">
<a href="{url}" title="{name}" class="navmainStandardLevel_{css_level}{css_first_item}{css_last_item}{css_active_item}">{name}</a>
</dt>
<dd style="display: none; height: 320px;">
<container id="30" name="BildModul_ohne_Link" type="Image" mode ="fixed" default"BildModul_ohne_Link"> BildModul_ohne_Link </container>
<div class="inner">
<h2 <container id="31" name="Sub_Headline" type="Content" mode ="fixed" default"Sub_Headline"> BildModul_ohne_Link </container></h2>
<p> <container id="33" name="Text" type="Content" mode="fixed" default="Text" > Text </container> </p>
</div>
</dd>

<!-- END:BLOCK -->

Gruß
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: container in den Template Modulseiten einbauen

Beitrag von rethus »

Das was du da versuchst zu bauen wirkt etwas verwirrend auf mich.
Kann es sein, dass du Layout, Modul und Templates-System noch nicht so ganz auseinander halten kannst?

Grundsätzlich werden <container>-tags nur in Layouts verwendet, da diese im Template mit Modulen bestückt werden, welche die Inhalte ausgeben. :idea:
Demnach würde es dir ohnehin nichts bringen, über eine Funktion Container zu generieren... weil diese niemals befüllt werden.
- Gut..., du hast hier mode=fixed als Krücke genommen, aber schau mal auf deine Container-ID. Mehrmals die gleiche ID zu benutzen kann doch logischerweise nicht funktionieren, oder?? Bedeutet es doch, dass in ID 33 immer der gleiche Inhalt enthalten ist.

Bevor du jetzt aber auf die Idee kommst, die ID mit php hochzuzählen, nimm dir lieber die Zeit, das Layout- Template- Modul-Zusammenspiel besser zu verinnerlichen. Dann wirst du einen viel einfacheren und schnelleren Weg für dein Vorhaben finden.
  • Im Layout einmal den Container "Hauptnavi"
  • im Template den Container an das Modul "Hauptnavi" zuweisen
  • Die Programmlogick im Modul unterbringen, das vor jedem Link ein Bild erscheint
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
summendesbienchen
Beiträge: 8
Registriert: Mi 30. Jun 2010, 18:30
Kontaktdaten:

Re: container in den Template Modulseiten einbauen

Beitrag von summendesbienchen »

Hey,

ich dachte eigentlich schon, dass ich das inwzischen mit der Logik, Modul Template und Layout verstanden habe. :?:
Mein Problem ist, das meine nur eine Hauptseite ist (also quasie keine Navigtaion hat, so funktioniert es jetzt) und mittelst JavaScript die einzelnen Menüpunkte eingeblendet und ausgeblendet werden. Ich habe da nun auf jeder Seite ein Bild und Text und eine Überschrift. Momentan sind diese alle im Layout mit unterschiedlichen Ids bezeichnet sodass man für jede Seite anderen Text hat.
Ich wollte versuchen, dieses über die Navigation zu steuern. Nur dafür brauche ich die richtigen Css Klassen und ich dachte direkt hinter einem Navigationpunkt den Text Container. Deshalb hab ich das erstmal in der html Datei bei den Modul Template, sodass die Css Klassen auch gezogen haben und das soweit funktionierte. Nur dann brauche ich da leider noch den Text....
Wahrscheinlich hast du recht und ich muss das im Modul selbst anpassen, zumal das mit der Id mittels php hochzählen wirklich unschön wäre.

Ich hab mir die Modul Dateien einmal angeguckt, im Modul werden sich die Sachen aus der DB gezogen soweit kann ich das auch lesen... wahrscheinlich muss ich das in der Klasse einbauen oder ? Oder kann ich über das Modul noch ein Textfeld bzw. Bild aus der DB ziehen.
Bin da gerade etwas ratlos wohin mit meinem ursprünglich html code weil ich sowas im Modul auch nirgendwo sehe. Ich versuch das später nochmal besser zu verstehen aber ich glaub da muss ich doch noch etwas php üben....

Gruß
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: container in den Template Modulseiten einbauen

Beitrag von Halchteranerin »

Das verstehe ICH jetzt nicht, wieso hast du keine Navigation, dafür aber Menüpunkte? Eine Navigation IST ein Menü.
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!
McHubi
Beiträge: 1223
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: container in den Template Modulseiten einbauen

Beitrag von McHubi »

Hallo,
Bin da gerade etwas ratlos wohin mit meinem ursprünglich html code weil ich sowas im Modul auch nirgendwo sehe.
Dafür gibt es die Modul-Templates, im Falle der Navigation_Main wird es ganz unten im Output aufgerufen:

Code: Alles auswählen

$tpl->generate('templates/navigation_standard.html');
Schau mal unter Style/ Modul-Templates und dann navigation_standard.html - hier findest Du einiges an HTML wieder.

Wenn es Dir um Bilder vor/ hinter oder als Navigationspunkt geht, sollte das hier (ungetestet) funktionieren:

Wenn Du vor/ hinter jedem Navigationspunkt ein individuelles Bild haben möchtest, könntest Du das auch durch eine kleine Anpassung des Modul-Templates realisieren:

Code: Alles auswählen

<ul>
    <!-- BEGIN:BLOCK -->
    <li class="navmainStandardLevel_{css_level}{css_first_item}{css_last_item}{css_active_item}">
        <img src="ALLGEMEINER_PFAD_FUER_DIE_NAVIGATIONSBILDER/{name}.jpg"/ alt="{name}" title="{name}">
        <a href="{url}" title="{name}" class="navmainStandardLevel_{css_level}{css_first_item}{css_last_item}{css_active_item}">{name}</a>
    </li>
    <!-- END:BLOCK -->
</ul> 
Die Bilder für die Navipunkte müssen nur exakt genauso benannt sein wie Dein Navigationspunkt. Allerdings kann das problematisch werden, wenn Du - was bestimmt vorkommen wird - Leerzeichen, Groß-/ Kleinbuchstaben usw. in der Bezeichnung des Navipunktes verwendest.

Also könnte/ sollte man hier etwas verwenden, das eindeutiger ist und vor allem auch dann noch funktioniert wenn Du einmal einen Navigationspunkt umbenennst: die idcat der jeweiligen Kategorie.

Damit das klappt, nimmst Du im Modul-Template statt {name} im image-tag vor dem .jpg {lang}_{idcat} (bei alt und title kann {name} ruhig bleiben):

Code: Alles auswählen

<ul>
    <!-- BEGIN:BLOCK -->
    <li class="navmainStandardLevel_{css_level}{css_first_item}{css_last_item}{css_active_item}">
        <img src="ALLGEMEINER_PFAD_FUER_DIE_NAVIGATIONSBILDER/{lang}_{idcat}.jpg"/ alt="{name}" title="{name}">
        <a href="{url}" title="{name}" class="navmainStandardLevel_{css_level}{css_first_item}{css_last_item}{css_active_item}">{name}</a>
    </li>
    <!-- END:BLOCK -->
</ul> 
Das klappt jetzt allerdings noch nicht, da die Platzhalter {lang} und {idcat} im Gegensatz zu den anderen noch nicht mit Daten versorgt werden. Damit das geschieht, schaust Du Dir die im Modul verwendete Klasse an. Sie wird im Modul über

Code: Alles auswählen

cInclude('frontend', 'includes/Util/Modules/Contenido_NavMain_Util.class.php');
eingebunden. Statt 'frontend' guck mal bei Dir unter "cms/includes/Util/Modules/Contenido_NavMain_Util.class.php" wenn Du als Mandant auch cms genommen hast. Ansonsten unter dem von Dir verwendeten Mandantennamen.

In dieser Datei findest Du diese Zeilen hier:

Code: Alles auswählen

$oTpl->set('d', 'name', $oCategory->getCategoryLanguage()->getName());
    	$oTpl->set('d', 'css_level', $iItemLevel);
    	$oTpl->set('d', 'css_first_item', ($aLevelInfo[$oCategory->getIdParent()]['first_child_item'] == $oCategory->getIdCat() ? ' first' : ''));
    	$oTpl->set('d', 'css_last_item', ($aLevelInfo[$oCategory->getIdParent()]['last_child_item'] == $oCategory->getIdCat() ? ' last' : ''));
    	$oTpl->set('d', 'css_active_item', ($bMarkActive === true ? ' active' : ''));
Darüber werden die Platzhalter mit Daten versorgt. Davor fügst Du jetzt zwei neue Zeilen für die zu übermittelnde aktuelle Sprache (lang) und Kategorie-ID (idcat) des jeweiligen Navigationspunktes ein:

Code: Alles auswählen

$oTpl->set('d', 'idcat', $oCategory->getIdCat());
$oTpl->set('d', 'lang', $iLang); 
Jetzt wird also im Image-Tag nach einer Bilddatei "1_1.jpg" oder "1_14.jpg" usw. (in der zweiten Sprache dannn "2_1.jpg" oder "2_14" usw.) in dem von Dir angegebenen Ordner gesucht und vor der Kategoriebezeichnung eingebunden. Auf diese Weise kannst Du auch rein grafische Navigationspunkte realisieren. Du musst dafür nur das Modul-Template noch etwas umbauen:

Code: Alles auswählen

[code]<ul>
    <!-- BEGIN:BLOCK -->
    <li class="navmainStandardLevel_{css_level}{css_first_item}{css_last_item}{css_active_item}">
        <a href="{url}" title="{name}" class="navmainStandardLevel_{css_level}{css_first_item}{css_last_item}{css_active_item}">
          <img src="ALLGEMEINER_PFAD_FUER_DIE_NAVIGATIONSBILDER/{lang}_{idcat}.jpg"/ alt="{name}" title="{name}">
        </a>
    </li>
    <!-- END:BLOCK -->
</ul> 
[/code]

:D
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)
summendesbienchen
Beiträge: 8
Registriert: Mi 30. Jun 2010, 18:30
Kontaktdaten:

Re: container in den Template Modulseiten einbauen

Beitrag von summendesbienchen »

Hey McHubi,

danke für deine Hilfe sowas hab ich gebraucht. In den Modul Template Dateien navigation_standard.html habe ich schon geändert, nur leider konnte ich das da ja nicht dynamisch hinbekommen und ich hätte nie gewusst an welcher Stelle ich das in der Klasse Contenido_NavMain_Util.class.php einbinden muss.
Komme heute leider erst total spät nach Hause aber versuche das dann mal so anhand deiner Anleitung umzusetzen.

Gruß
Gesperrt