Ich habe ein Navigations-Template, das ich für Bootstrap-Seiten benötige und dementsprechend responsive ist. Das heisst, bei der Smartphone-Ansicht erscheint das Navi-Icon statt gleich die ganze Navigation.
Tieses Template sieht so aus:
Code: Alles auswählen
<!-- Fixed navbar -->
<nav class="navbar navbar-default" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="http://www.meine-domain.ch">
<img src="files/logo-resp.png" class="navbar-logo" alt="Firma">
</a>
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div id="navbar" class="collapse navbar-collapse">
<?php
$PATH = explode("|", $this -> getValue("path") . $this -> getValue("article_id") . "|");
echo '<ul class="nav navbar-nav">';
foreach (OOCategory::getRootCategories($this->ignoreOfflines) as $lev1) {
if ($lev1 -> isOnline(true)) {
if ($lev1 -> getId() == $PATH[1]) {
if (count($lev1 -> getChildren()) > 0) {
echo '<li class="dropdown active uppercase"><a class="dropdown-toggle" data-toggle="dropdown" href="' . $lev1 -> getUrl() . '" title="' . $lev1 -> getName() . '">' . $lev1 -> getName() . '</a>';
} else {
echo '<li class="active uppercase"><a href="' . $lev1 -> getUrl() . '" title="' . $lev1 -> getName() . '">' . $lev1 -> getName() . '</a>';
}
} else {
if (count($lev1 -> getChildren()) > 0) {
echo '<li class="dropdown uppercase"><a class="dropdown-toggle" data-toggle="dropdown" href="' . $lev1 -> getUrl() . '" title="' . $lev1 -> getName() . '">' . $lev1 -> getName() . '</a>';
} else {
echo '<li class="uppercase"><a href="' . $lev1 -> getUrl() . '" title="' . $lev1 -> getName() . '">' . $lev1 -> getName() . '</a>';
}
}
}
if (count($lev1 -> getChildren()) > 0) {
echo '<ul class="dropdown-menu">';
foreach ($lev1->getChildren() as $lev2) {
if ($lev2 -> isOnline(true)) {
if ($lev2 -> getId() == $PATH[1]) {
$dropdownSub = "";
if (count($lev2 -> getChildren()) > 0)
$dropdownSub = "dropdown-submenu";
echo '<li class="uppercase active ' . $dropdownSub . '"> -- <a tabindex="-1" href="' . $lev2 -> getUrl() . '" title="' . $lev2 -> getName() . '">';
echo $lev2 -> getName();
echo '</a>';
if (count($lev2 -> getChildren()) > 0) {
echo '<ul class="dropdown-menu">';
foreach ($lev2->getChildren() as $lev3) {
if ($lev3 -> getId() == $PATH[2])
echo '<li class="active uppercase"> --- <a href="' . $lev3 -> getUrl() . '" title="' . $lev3 -> getName() . '">' . $lev3 -> getName() . '</a>';
else
echo '<li class="uppercase">... <a href="' . $lev3 -> getUrl() . '" title="' . $lev3 -> getName() . '">' . $lev3 -> getName() . '</a>';
}
echo '</ul>';
}
} else {
$dropdownSub = "";
if (count($lev2 -> getChildren()) > 0)
$dropdownSub = "dropdown-submenu";
echo '<li class="' . $dropdownSub . '"><a tabindex="-1" href="' . $lev2 -> getUrl() . '" title="' . $lev2 -> getName() . '">';
echo $lev2 -> getName();
echo '</a>';
if (count($lev2 -> getChildren()) > 0) {
echo '<ul class="dropdown-menu">';
foreach ($lev2->getChildren() as $lev3) {
if ($lev3 -> getId() == $PATH[2])
echo '<li class="active"><a href="' . $lev3 -> getUrl() . '" title="' . $lev3 -> getName() . '">' . $lev3 -> getName() . '</a>';
else
echo '<li><a href="' . $lev3 -> getUrl() . '" title="' . $lev3 -> getName() . '">' . $lev3 -> getName() . '</a>';
}
echo '</ul>';
}
}
}
if ($lev2 -> isOnline(true)) {echo '</li>';}
}
echo '</ul>';
}
if ($lev1 -> isOnline(true)) {echo '</li>';}
}
echo '</ul>';
?>
</div><!--/.nav-collapse -->
</div>
</nav>
Wenn ich nun auf das Navi-Icon klicke erscheint zwar die Navigation, jedoch darüber auch folgende PHP-Notice:
Notice: Undefined property: rex_article::$ignore_offlines in /home/meinedo/www/meine-domain.ch/redaxo/include/classes/class.rex_article_base.inc.php(395) : eval()'d code(8) : eval()'d code(72) : eval()'d code on line 25
Genau dieses Template verwende ich auch auf anderen Seiten (alle Redaxo 4.6.1), und bei denen funktioniert es einwandfrei.
Der einzige Unterschied ist, dass bei den funktionierenden Seiten PHP 5.4.45 und bei der NICHT korrekt funktionierenden Seite PHP 5.6.17 im Einsatz ist. Könnte es daran liegen?
Ich habe auch versucht, diese Zeile
Code: Alles auswählen
foreach (OOCategory::getRootCategories($this->ignoreOfflines) as $lev1) {
Code: Alles auswählen
foreach (OOCategory::getRootCategories($this->ignore_offlines) as $lev1) {
Habe vom Kunden Zugriff auf die Hosting-Einstellungen erhalten und das PHP auf Version 5.5 zurückgestellt. Dadurch erscheinen die Notices nicht mehr.