Hallo, lieber Forum Benutzer. Wir haben in letzter Zeit festgestellt, dass die Kommunikation via https://slack.com/ viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen Möglichkeiten der Kommunikation ist das Forum ein wenig eingeschlafen und weniger Nutzer benutzen das Forum aktiv (trotzdem lohnt es sich evtl. hier nach Lösungen zu suchen oder seine Frage zu stellen).

Wir empfehlen bei Fragen/Problemen aktuell die Frage (zusätzlich) im Slack zu stellen. Dort sind viele kompetente REDAXO Benutzer aktiv und beantworten gerne (Anfänger)Fragen.

Selbst einladen kannst Du dich hier: http://redaxo.org/slack/

Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Fanello
Beiträge: 336
Registriert: 24. Mai 2006, 14:01
Wohnort: Riedt (Schweiz)

Navigation: Undefined property

3. Feb 2016, 11:28

Hallo zusammen

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) {
so anzupassen, hat aber nix gebracht:

Code: Alles auswählen

foreach (OOCategory::getRootCategories($this->ignore_offlines) as $lev1) {
NACHTRAG:
Habe vom Kunden Zugriff auf die Hosting-Einstellungen erhalten und das PHP auf Version 5.5 zurückgestellt. Dadurch erscheinen die Notices nicht mehr.

Zurück zu „Templates/Navigationen [R4]“