[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Sonderfall: Kategorie ist nicht leer, aber children offline! - REDAXO Forum
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/
Benutzeravatar
gemüsebrühe
Beiträge: 176
Registriert: 14. Feb 2007, 21:31

Sonderfall: Kategorie ist nicht leer, aber children offline!

12. Okt 2009, 23:18

Code: Alles auswählen

<?php		
echo '<ul class="navigation" id="navi">';
foreach (OOCategory::getRootCategories() as $lev1):
	if($lev1->isOnline()):
		echo '<li><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
		
		$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;
		
		echo '</li>';		
	endif;

endforeach;
echo '</ul>';
?>
Es ist offensichtlich, dass wegen "echo '<ul>';" ohne vorherige Abfrage unter Umständen leere uls auftreten können, wenn Unterkategorien existieren, jedoch offline sind.

Wie kann ich das umgehen?
So clickable, design is lickable.
Code is poetry.

Benutzeravatar
Gregor.Harlan
Entwickler
Beiträge: 1130
Registriert: 4. Jun 2007, 10:35
Wohnort: Frankfurt am Main

13. Okt 2009, 00:49

Hallo,

so kannst du das umgehen:

Code: Alles auswählen

<?php       
echo '<ul class="navigation" id="navi">'; 
foreach (OOCategory::getRootCategories() as $lev1): 
   if($lev1->isOnline()): 
      echo '<li><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>'; 
       
      $lev2Array = $lev1->getChildren(true); 
      if(sizeof($lev2Array) != 0): 
         echo '<ul>'; 
         foreach ($lev2Array as $lev2): 
            echo '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a></li>'; 
         endforeach; 
         echo '</ul>'; 
      endif; 
       
      echo '</li>';       
   endif; 

endforeach; 
echo '</ul>'; 
?>
Durch das getChildren(true) bekommst du direkt nur die Unterkategorien, die online sind.

Gruß, Gregor
Friends Of REDAXO: Gemeinsame REDAXO-Entwicklung!

Benutzeravatar
gemüsebrühe
Beiträge: 176
Registriert: 14. Feb 2007, 21:31

13. Okt 2009, 16:48

Super, danke!
So clickable, design is lickable.
Code is poetry.

Zurück zu „Allgemeines [R4]“