[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Subnavi in Sidebar
Seite 1 von 1

Subnavi in Sidebar

Verfasst: 30. Nov 2015, 10:46
von JonasLoerken
Hey,

vorab: Meine PHP-Kenntnisse sind sehr beschränkt, da ich mich erst am Anfang der "Lernphase" befinde.

Derzeit stehe ich vor folgendem Problem: Ich möchte eine Subnavi in der Sidebar darstellen. Es sollen also alle Unterseiten der aktuellen Seite ausgegeben werden. Außerdem sollen alle Unterseiten ausgegeben werden, wenn ich mich bereits auf einer solchen befinde.

Mein aktuelles Script:

Code: Alles auswählen

<nav class="sec-nav">
<?php

$PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");

echo '<ul>';
foreach (OOCategory::getRootCategories(true) as $lev1)
{
if(count($lev1->getChildren())>0)
{
foreach ($lev1->getChildren(true) as $lev2)
{
if($lev2->getId() == $PATH[1])
echo '<li style="background-image:url();"><a href="'.$lev2->getUrl().'"></a><span>'.$lev2->getName().'</span>';
else
echo '<li style="background-image:url();"><a href="'.$lev2->getUrl().'"></a><span>'.$lev2->getName().'</span>';
}
echo '</ul>';
} 
echo '</li>';
}

?>
</nav>
funtkioniert nur sehr beschränkt. Zum einen werden alle (!!) Unterseiten ausgegeben, völlig egal ob diese der aktuellen Seite oder einer anderen Seite angehören. Zum anderen bleibt die Liste leer, wenn ich mich bereits auf einer Unterseite befinde – Ist ja auch logisch, denn diese Unterseite besitzt eben keine weiteren Unterseiten. Es sollen aber natülrich auch weiterhin die Unterseiten der Parent-Seite dargestellt werden.

Zur Struktur der Navigation:

Code: Alles auswählen

<nav class="sec-nav">
    <ul>
        <li style="background-image:url(META_BILD_DER_SEITE);"><a href="LINK_ZUR_SEITE"></a><span>NAME DER SEITE</span></li>
    </ul>
</nav>

Re: Subnavi in Sidebar

Verfasst: 30. Nov 2015, 11:05
von RexDude
Hi,

kennst du schon das Navigation Factory Addon? Damit kann man sehr einfach Navis zusammenklopfen. Zu deinem Fall wäre auch ein Codebeispiel direkt dabei :)

Re: Subnavi in Sidebar

Verfasst: 30. Nov 2015, 12:15
von JonasLoerken
Kannte ich noch nicht :oops: Funktioniert aber super! Danke dafür.

Eine Schwierigkeit kriege ich jedoch trotz Plugin nicht hin. Jedes list-item der navigation hat einen inline-style in dem ein Hintergrundbild definiert wird, welches aus den Meta-Einstellungen des entsprechenden Artikels geholt wird.

Re: Subnavi in Sidebar

Verfasst: 30. Nov 2015, 12:32
von RexDude
Also so direkt lässt sich das leider nicht lösen mit der rex_nav. Aber die Frage ist ja eh ob es so viel Sinn macht dem Redaktuer hier die volle Wahl zu lassen was er an Bildern auswählen kann. Ich kenne das so, dass der Designer ein Set an Icons / Bildern definiert und dann nur die benutz werden sollen. Dieser Use Case ist mit der rex_nav machbar. In den Meta Infos machst du ne Select mit deinen Klassennamen. Im CSS gibst du die an mit deinen background-images. Und in der rex_nav nutzt du dann setListItemClassFromMetaField() oder manchmal machen auch Ids eher Sinn, dann setListItemIdFromMetaField(). Et Voila :)

Interessant sind in dem Zusammenhang auch setListItemIdFromCategoryId() und setListItemClassFromCategoryId(). Wenn du nämnlich die MetaInfo Lösung nur deshalb gewählt hast um es irgendwie hinzubekommen dass du deinen Li's Klassen zuweisen kannst, kannst du mit diesen Methoden auch ganz ohne Meta Infos zurecht kommen. Du definerst dann einfach vorab ein Array mit deinen Kategorie-Id's und den zugewiesenen Klassen.

Re: Subnavi in Sidebar

Verfasst: 18. Dez 2015, 00:15
von Björn Lindner
hi,

finde das addon auch total super.
tüftel aber gerade tatsächlich daran wie ich den li's der ebenen =>2 eine andere css klasse zuweisen kann, als den li's der 1. ebene.
Ich will es eigentlich nicht auf Kategorie basis, sondern auf tiefe.
geht das?

grüße und dank
björn

Re: Subnavi in Sidebar

Verfasst: 18. Dez 2015, 01:06
von RexDude
Hi,

1. Ebene

Code: Alles auswählen

$nav->setListClass('foo', 1); 
2. Ebene

Code: Alles auswählen

$nav->setListClass('bar', 2); 

Re: Subnavi in Sidebar

Verfasst: 18. Dez 2015, 15:01
von Björn Lindner
hi,

Missverständnis :(

Code: Alles auswählen

$nav->setListItemClass('dropdown', 1); // li klasse 'list-item'
$nav->setListItemClass('', 2); // li klasse 'list-item'
das ist wohl leider nicht möglich?

grüße
björn

Re: Subnavi in Sidebar

Verfasst: 18. Dez 2015, 15:08
von RexDude
Es kann sei das du einen Bug entdeckt hast.
Bekommen dann bei dir alle Ebenen die dropdown Klasse oder?

Schau dir alternativ mal:
$nav->setShowHasSubClass(true); // zeigt 'has-sub' klasse für die li an
$nav->setHasSubClass('has-sub'); // klassenname der 'has-sub' klasse

Evtl. ist es das was du brauchst.
Aber das andere ist vermutlich trotzdem ein Bug.

Re: Subnavi in Sidebar

Verfasst: 18. Dez 2015, 15:23
von Björn Lindner
hi,

nein ich bekomme in meinem Beispiel oben immer KEINE klasse eingebunden, also diese

Code: Alles auswählen

$nav->setListItemClass('', 2); // li klasse 'list-item'
zeile vermutlich.

da du in deiner addon doku nur

Code: Alles auswählen

$nav->setListItemClass('list-item'); // li klasse 'list-item'
beschrieben hast, hätte ich es nicht als bug gewertet, aber umso schöner wenn du es so siehst :)

was ich versuche ist die navigation von http://htmlcoder.me/preview/ivega/v.1.1/ (habe für unseren verein tatsächlich gekauft) im redaxo zu implementieren.
hier mal ein ausschnitt des html codes der navigation:

Code: Alles auswählen

<ul class="nav navbar-nav navbar-main-menu">
	<li class="dropdown active">
		<a href="index.html" class="dropdown-toggle" data-toggle="dropdown">Home</a>
		<ul class="dropdown-menu">
			<li><a href="index.html">Home - Slider 1</a></li>
			<li><a href="index-2.html">Home - Slider 2</a></li>
			<li><a href="index-3.html">Home - No Slider</a></li>
		</ul>
	</li>
	<li class="dropdown">
		<a href="page-about.html" class="dropdown-toggle" data-toggle="dropdown">About</a>
		<ul class="dropdown-menu">
			<li><a href="page-about.html">About Us</a></li>
			<li><a href="page-team.html">Our Team</a></li>
		</ul>
	</li>
	<li class="dropdown">
		<a href="blog.html" class="dropdown-toggle" data-toggle="dropdown">Blog</a>
		<ul class="dropdown-menu">
			<li><a href="blog.html">Blog small images</a></li>
			<li><a href="blog-2.html">Blog large images</a></li>
			<li><a href="blog-no-sidebar.html">Blog - No Sidebars</a></li>
			<li><a href="blog-post.html">Blog post</a></li>
		</ul>
	</li>
</ul>

Re: Subnavi in Sidebar

Verfasst: 14. Jan 2016, 23:56
von Björn Lindner
hi,

wollte fragen ob du bei dem "bug" schon geschaut hast woran es liegen könnte?

grüße
björn

Re: Subnavi in Sidebar

Verfasst: 17. Jan 2016, 17:55
von RexDude
Es tut mir leid ich bin noch nicht dazu gekommen habe es aber zumindest auf meiner Todo Liste vermerkt :)

Re: Subnavi in Sidebar

Verfasst: 26. Feb 2016, 21:47
von RexDude
Ah okey, ein Mißverständnis. Ich sprach immer von setListClass('foo', 1) welches ebenen basiert ist. Du bist aber bei setListItemClass('foo') was nicht ebenen basiert arbeitet sonder allen lis diese klasse gibt. normalerweise müsste hier php einen fehler ausspucken.
und ja also das geht aktuell nicht was du vorhast ;)