Hey Leute,
am Beispiel des Demo-Templates:
Hier ist der Link "Leistungen" und direkt drunter die beiden Links "CMS" und "Template Design".
Wie lässt es sich realisieren, die beiden Links unter "Leistungen" aufzuklappen, wenn "Leistungen" geklickt wurde?
Und / oder:
Wie lassen sich diese beiden Links auf einer separaten Fläche (z.B. in der Kopfzeile) darstellen.
Schöne Grüße
Bodo
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
- Thomas.Blum
- Entwickler
- Beiträge: 5063
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Dresden
- Kontaktdaten: Website
Hej,
Zu deiner zweiten Frage:
Ich würde alle Kategorien der 1ten und der 2ten Ebene in einem Skalar speichern. Und dann das Navi-Template im Default-Template vor dem Doctype includieren. Dort wo du deine Hauptnavigation haben willst
Dort wo die Unterkategorien erscheinen sollen
Thomas
Code: Alles auswählen
<?php
$path = explode( '|', $this->getValue("path").$this->getValue("article_id"));
//array_shift( $path);
$path1 = $path[1];
$path2 = $path[2];
$path3 = $path[3];
foreach (OOCategory::getRootCategories() as $lev1):
if($lev1->isOnline()):
echo '<a class="menu" href="'.$lev1->getUrl().'">» '.$lev1->getName().'</a>';
if ($lev1->getId() == $path1) :
$lev1Size = sizeof($lev1->getChildren());
if($lev1Size != "0"):
foreach ($lev1->getChildren() as $lev2):
if ($lev2->isOnline()):
echo '<a class="submenu" href="'.$lev2->getUrl().'"> • '.$lev2->getName().'</a>';
endif;
// ANFANG EBENE 3
$lev2Size = sizeof($lev2->getChildren());
if($lev2Size != "0" && in_array($lev2->getId(), $path)):
foreach ($lev2->getChildren() as $lev3):
if ($lev3->isOnline()):
echo '<a class="submenu" href="'.$lev3->getUrl().'"> • '.$lev3->getName().'</a>';
endif;
endforeach;
endif;
// ENDE EBENE 3
endforeach;
endif;
endif;
endif;
endforeach;
/*
$navigation = OOTemplate::getNavigation();
print $navigation;
*/
?>
Ich würde alle Kategorien der 1ten und der 2ten Ebene in einem Skalar speichern. Und dann das Navi-Template im Default-Template vor dem Doctype includieren. Dort wo du deine Hauptnavigation haben willst
Code: Alles auswählen
print $main-nav
Code: Alles auswählen
print $sub-nav;
Thomas
- Thomas.Blum
- Entwickler
- Beiträge: 5063
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Dresden
- Kontaktdaten: Website
Noch gar nicht, weil im Moment nur lokal.
Hier ist das umgebaute Menü, welches Du in das Template einfügst:
"<div id="sub-block2">" suchen und danach folgendes einfügen:
Hier ist das umgebaute Menü, welches Du in das Template einfügst:
"<div id="sub-block2">" suchen und danach folgendes einfügen:
Code: Alles auswählen
<!-- VERTIKALES MENUE-->
<?php
$path = explode( '|', $this->getValue("path").$this->getValue("article_id"));
//array_shift( $path);
$path1 = $path[1];
$path2 = $path[2];
$path3 = $path[3];
echo '<ul class="navigation">';
foreach (OOCategory::getRootCategories() as $lev1):
if($lev1->isOnline()):
echo '<li><a href="'.$lev1->getUrl().'"> '.$lev1->getName().'</a>';
if ($lev1->getId() == $path1) :
$lev1Size = sizeof($lev1->getChildren());
if($lev1Size != "0"):
echo '<ul>';
foreach ($lev1->getChildren() as $lev2):
if ($lev2->isOnline()):
echo '<li><a href="'.$lev2->getUrl().'"> '.$lev2->getName().'</a></li>';
endif;
// ANFANG EBENE 3
$lev2Size = sizeof($lev2->getChildren());
if($lev2Size != "0" && in_array($lev2->getId(), $path)):
echo '<ul>';
foreach ($lev2->getChildren() as $lev3):
if ($lev3->isOnline()):
echo '<li><a href="'.$lev3->getUrl().'"> '.$lev3->getName().'</a></li>';
endif;
endforeach;
echo '</ul>';
endif;
// ENDE EBENE 3
endforeach;
echo '</ul>';
endif;
endif;
echo '</li>';
endif;
endforeach;
echo '</ul>';
/*
$navigation = OOTemplate::getNavigation();
print $navigation;
*/
?>
<!-- ENDE VERTIKALES MENUE -->
Also ich versuche im Prinzip das gleiche zu machen. Ich möchte gern die Kategorien (also Hauptnavi) oben waagerecht dargstellt haben.Das funktioniert auch so ganz gut. Jetz möchte ich das wenn einer der Hauptnavi-Punkte gewählt wird, die Unternavigation (also alle darin befindlichen Artikel) links senkrecht angezeigt werden.Die oben stehenden Beispiele haben scheinbar genau diesen Sinn, nur weigere ich mich, dies zu übernehmen ohne es zu verstehen.
Also mein Template sieht folgendermaßen aus:
Wie zu sehen ist, hab ich versucht einige Sachen aus der Demo mit einigen aus diesem Post zu vereinen. Aber irgendwie will es nicht funktionieren.
Wozu braucht man 3 Ebenen? Soweit ich das sehe ruft man zuerst die Kategorien auf und lässt diese darstellen und dann zu jeder einzelnen bei bedarf die darin befindlichen Artikel. Also wozu diese 3. Ebene? Kann mir jemand erklären was es damit auf sich hat. Zudem, was macht diese Explode-Funktion? Aufrufe bestimmter Felder aus der DB?
Also mein Template sieht folgendermaßen aus:
Code: Alles auswählen
<!--Headerspalte Ende-->
<!--Navispalte-->
<tr>
<td bgcolor="#999999" class="kategorie" style="border-top:3px solid #FFFFCC; border-bottom: 3px solid #FFFFCC;" colspan="2">
<?php
$path = explode( '|', $this->getValue("path").$this->getValue("article_id"));
$path1 = $path[1];
foreach (OOCategory::getRootCategories() as $lev1):
if($lev1->isOnline()):
echo ' <a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a> |';
endif;
endforeach;
?>
</td>
</tr>
<!--Navispalte Ende-->
<!--Artikel-Anzeigespalte-->
<tr>
<td align="left" valign="top" class="artikel">
<?php
if($lev1->getId() == $path1):
$lev1Size = sizeof($lev1->getChildren());
if($lev1Size != "0"):
echo '<ul>';
foreach ($lev1->getChildren() as $lev2):
if ($lev2->isOnline()):
echo '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a></li>';
endif;
endforeach;
echo '</ul>';
endif;
endif;
?>
</td>
<!--Inhaltsspalte-->
<td align="center" class="content">
<?php
echo $this->getArticle();
?>
</td>
</tr>
<!--Inhaltsspalte Ende-->
</table>
<!--Haupttabelle Ende-->
</body>
</html>
Wozu braucht man 3 Ebenen? Soweit ich das sehe ruft man zuerst die Kategorien auf und lässt diese darstellen und dann zu jeder einzelnen bei bedarf die darin befindlichen Artikel. Also wozu diese 3. Ebene? Kann mir jemand erklären was es damit auf sich hat. Zudem, was macht diese Explode-Funktion? Aufrufe bestimmter Felder aus der DB?
Unwissenheit schützt nicht vor Mittäterschaft.
Hey,
also ich habe mich nicht geweigert es ohne zu verstehen zu übernehmen.
OK ein klein wenig habe ich es verstanden.
Warum die 3 Ebenen?
Gegenfrage: Warum nicht sogar 5?
Es ist einfach eine Entscheidungsfrage.
Die erste Ebene könnte "Freizeit" heißen, die zweite Sport und die dritte Tennis.
Schöne Grüße
Bodo
also ich habe mich nicht geweigert es ohne zu verstehen zu übernehmen.
OK ein klein wenig habe ich es verstanden.
Warum die 3 Ebenen?
Gegenfrage: Warum nicht sogar 5?
Es ist einfach eine Entscheidungsfrage.
Die erste Ebene könnte "Freizeit" heißen, die zweite Sport und die dritte Tennis.
Schöne Grüße
Bodo
- Thomas.Blum
- Entwickler
- Beiträge: 5063
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Dresden
- Kontaktdaten: Website
Hej,
Freizeit -> Sport -> Tennis
Das wäre eine Struktur mit 3 Ebenen. Wenn du nun zum Theme Tennis nix weiter schreiben willst, ausser einen Artikel, kannst du unter der Ebene natürlich auch einen Artikel "Tennis" anlegen. Mit einer Artikelliste bzw. einem Teaser-Modul könntest du dir dann eben die Artikel auch als Navigationsliste bzw. Teaser darstellen lassen.
Willst du aber mehere Arikel zum Thema Tennis schreiben, dann eine weitere Kategorie anlegen und dort die Artikel "Der Tennisschläger", "Der Tennisball" usw. ablegen. Per Teaser oder Artikelliste dann die Artikel kurz darstellen und auf den kompletten Artikel verweisen.
Hoffe du verstehst, wenn nicht fragen
Thomas
Ebene oder auch Kategorien sollten zur Struktur der Webseite dienen. Also die Struktur ist gleich die Navigation. Ein schönes Beispiel hat ja Bodo bereits geschrieben.webstar hat geschrieben:Wozu braucht man 3 Ebenen?
Freizeit -> Sport -> Tennis
Das wäre eine Struktur mit 3 Ebenen. Wenn du nun zum Theme Tennis nix weiter schreiben willst, ausser einen Artikel, kannst du unter der Ebene natürlich auch einen Artikel "Tennis" anlegen. Mit einer Artikelliste bzw. einem Teaser-Modul könntest du dir dann eben die Artikel auch als Navigationsliste bzw. Teaser darstellen lassen.
Willst du aber mehere Arikel zum Thema Tennis schreiben, dann eine weitere Kategorie anlegen und dort die Artikel "Der Tennisschläger", "Der Tennisball" usw. ablegen. Per Teaser oder Artikelliste dann die Artikel kurz darstellen und auf den kompletten Artikel verweisen.
Hoffe du verstehst, wenn nicht fragen
Thomas
Also gut. Ich möchte 2 Ebenen haben. Die erste soll wie gesagt die Hauptnavigation (also die angelegten Kategorien) sein und die Unternavi die zu einer Kategorie gehörigen Artikel. Was ist denn an meinem Template falsch? Ich hab ewig versucht den fehler zu finden. Und was genau macht dieses Explode bzw wozu legt man die $path-Variablen an?
Unwissenheit schützt nicht vor Mittäterschaft.
- Markus.Staab
- Entwickler
- Beiträge: 9634
- Registriert: 29. Jan 2005, 15:50
- Wohnort: Aschaffenburg/Germany
- Kontaktdaten: ICQ Website
Hi Webstar
z.b.
Das sind die IDs des "Pfades".
d.h. in der Struktur würde das so aussehen
News(id=3) - Sport(id=5) - Fussball(id=7)
Du weisst also auf Welcher Ebene in der Struktur welche Kategorie gewählt wurde..
Gruß,
Markus
In den Path Variablen steht dann drinne, wo sich der User im Frontend gerade befindet.webstar hat geschrieben:Und was genau macht dieses Explode bzw wozu legt man die $path-Variablen an?
z.b.
Code: Alles auswählen
echo $path0 // 3
echo $path1 // 5
echo $path2 // 7
d.h. in der Struktur würde das so aussehen
News(id=3) - Sport(id=5) - Fussball(id=7)
Du weisst also auf Welcher Ebene in der Struktur welche Kategorie gewählt wurde..
Gruß,
Markus
Also es will einfach nicht funktionieren. Ich habe jetzt sogar schon mal ein völlig leeres Template angelegt das gnau den Quelltext aus dem Downloadbereich enthält.
Die $path-Variablenm hab ich mir nur ausgeben lassen um zu sehen was die enthalten. Bei Klick auf die "Home"-Kategorie wird die !!EINE!! Zahl 1 angezeigt, bei klick auf die zweite Kategorie die 2. Irgendwie versteh ich das alles nich so ganz. Was is denn nur falsch. In beiden Kathegorien befinden sich jeweils ein Startartikel, aber selbst wenn ich noch einen oder mehr hinzufüge erscheinen sie nicht.
So langsam bin ich am verzweifeln, ich raff das nich.Am meisten Probleme macht mir trotz Erklärung dieser Teil:
Ich weiß das is alles Basiswissen für PHP, aber im objektorientierten denken bin ich echt ne Null.
Code: Alles auswählen
<html>
<body>
<?php
$path = explode( '|', $this->getValue("path").$this->getValue("article_id"));
$path1 = $path[1];
$path2 = $path[2];
$path3 = $path[3];
echo $path1;
echo $path2;
echo $path3;
foreach (OOCategory::getRootCategories() as $lev1):
if($lev1->isOnline()):
echo '<a class="menu" href="'.$lev1->getUrl().'">» '.$lev1->getName().'</a>';
if ($lev1->getId() == $path1) :
$lev1Size = sizeof($lev1->getChildren());
if($lev1Size != "0"):
foreach ($lev1->getChildren() as $lev2):
if ($lev2->isOnline()):
echo '<a class="submenu" href="'.$lev2->getUrl().'"> • '.$lev2->getName().'</a>';
endif;
// ANFANG EBENE 3
$lev2Size = sizeof($lev2->getChildren());
if($lev2Size != "0" && in_array($lev2->getId(), $path)):
foreach ($lev2->getChildren() as $lev3):
if ($lev3->isOnline()):
echo '<a class="submenu" href="'.$lev3->getUrl().'"> • '.$lev3->getName().'</a>';
endif;
endforeach;
endif;
// ENDE EBENE 3
endforeach;
endif;
endif;
endif;
endforeach;
?>
</body>
</html>
So langsam bin ich am verzweifeln, ich raff das nich.Am meisten Probleme macht mir trotz Erklärung dieser Teil:
Code: Alles auswählen
$path = explode( '|', $this->getValue("path").$this->getValue("article_id"));
$path1 = $path[1];
$path2 = $path[2];
$path3 = $path[3];
Unwissenheit schützt nicht vor Mittäterschaft.
- Thomas.Blum
- Entwickler
- Beiträge: 5063
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Dresden
- Kontaktdaten: Website
Hej,
ein Artikel befindet sich in einer bestimmten Kategorie. Rufst du einen bestimmten Artikel auf, rufst du auch gleichzeitig die Pfadangaben dieses Artikels auf.
Die Pfadangaben für einen Artikel (ID 20) der in der Kategorie HOME (ID 1) in der SubKategorie IRGENDWAS (ID 5) hat somit die Pfadangaben |1|5|20|.
Mit der explode Funktion erhälst du ein Array und zwar mit den Zahlen der Pfadangaben für diesen Artikel.
in $path wäre somit array(1,5,20). Die "|" fallen raus, da du nach diesem Zeichen das ganze ausliest.
Um nun den Verlauf (wo befindet sich genau der Artikel in der Struktur) des Artikels herauszufinden, hast du in
$path1 = $path[0] -> 1
$path2 = $path[1] -> 5
$path3 = $path[2] -> 20
die Ids der Kategorien sowie die ArikelID.
grüße Thomas
ein Artikel befindet sich in einer bestimmten Kategorie. Rufst du einen bestimmten Artikel auf, rufst du auch gleichzeitig die Pfadangaben dieses Artikels auf.
Die Pfadangaben für einen Artikel (ID 20) der in der Kategorie HOME (ID 1) in der SubKategorie IRGENDWAS (ID 5) hat somit die Pfadangaben |1|5|20|.
Mit der explode Funktion erhälst du ein Array und zwar mit den Zahlen der Pfadangaben für diesen Artikel.
in $path wäre somit array(1,5,20). Die "|" fallen raus, da du nach diesem Zeichen das ganze ausliest.
Um nun den Verlauf (wo befindet sich genau der Artikel in der Struktur) des Artikels herauszufinden, hast du in
$path1 = $path[0] -> 1
$path2 = $path[1] -> 5
$path3 = $path[2] -> 20
die Ids der Kategorien sowie die ArikelID.
grüße Thomas
Hmm ok ok, soweit hab ich das grob verstanden. Aber wieso werden denn lediglich Die Kategrien angezeigt und keine darunter befindlichen Artikel?
Bei den meisetn Usern hier hat doch der Quelltext ausm Downloiad auch auf anhieb funktioniert, wieso dann hier nicht?
Bei den meisetn Usern hier hat doch der Quelltext ausm Downloiad auch auf anhieb funktioniert, wieso dann hier nicht?
Unwissenheit schützt nicht vor Mittäterschaft.
- Thomas.Blum
- Entwickler
- Beiträge: 5063
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Dresden
- Kontaktdaten: Website
Also das Problem hat sich bene von alleine erledigt. Das Problem lag wie immer beim User selbst. Ich hatte bisher nicht mitbekommen, das man innerhalb einer Kategorie nocheinmal Kategorien anlegen kann. Oje, jetz hab ich sinnlos Wellen gemacht. Also sorry nochmal, aber das war wohl n typisches Layer 8 Problem
Unwissenheit schützt nicht vor Mittäterschaft.