Children in einer Kategorie

Wie verwendet man Templates oder erstellt Navigationen und passt diese an.

Children in einer Kategorie

Beitragvon wmxrecords » 10. Feb 2009, 18:10

Hallo und guten Abend!

Ich suche nach einer Möglichkeit abzufragen ob eine Kategorie Unterkategorien hat. Dabei ist es egal ob eine oder viele. Es soll einfach nur ein "Ja" oder "Nein" als Rückantwort kommen.

Gibt es da was?

Habe bis jetzt foolgenden Code generiert:

Code: Alles auswählen
$hasKids = '';
$cat = OOCategory::getCategoryById($this->getValue("category_id"));

foreach ($cat as $children) {
    if ($children) {
        $hasKids = '1';
    }
}

if ($hasKids) {
    print '2';
}
else {
    print '1';
}


Aber er gibt immer "2" aus! Warum bloß?
wmxrecords
 
Beiträge: 93
Registriert: 1. Nov 2008, 13:09

Beitragvon raybeam » 10. Feb 2009, 21:37

Hallo,

versuchs mal mit

Code: Alles auswählen
$cat->getChildren()


Über die Forumsuche findest Du weiteres dazu.

Ich werde auch nicht müde auf das Cheatsheet hinzuweisen :) :

http://webbude.com/index.php?article_id=120

Gruß

Peter
Benutzeravatar
raybeam
 
Beiträge: 445
Registriert: 5. Feb 2006, 20:30

Beitragvon nik » 10. Feb 2009, 22:27

Wozu getChildren () ?

ob eine Kategorie Unterkategorien hat. Dabei ist es egal ob eine oder viele. Es soll einfach nur ein "Ja" oder "Nein" als Rückantwort kommen.

Wenns ein Bool sein darf:
Code: Alles auswählen
0 != $category->countChildren()
nik
 
Beiträge: 112
Registriert: 9. Dez 2008, 20:17

Beitragvon wmxrecords » 12. Feb 2009, 10:31

raybeam hat geschrieben:Hallo,

versuchs mal mit

$cat->getChildren()


Dies hier ^ ergibt immer einen Array, egal ob Unterkategorien vorhanden sind oder nicht, daher leider nutzlos.

Über die Forumsuche findest Du weiteres dazu.

Ich werde auch nicht müde auf das Cheatsheet hinzuweisen :) :

http://webbude.com/index.php?article_id=120

Gruß

Peter


Danke! Ich habe eine ältere Version vom CheatSheet gehabt! ;)

0 != $category->countChildren()


Also ich habe folgenden code:
Code: Alles auswählen
$cat = OOCategory::getCategoryById($this->getValue("category_id"));

if ($cat->countChildren() != 0) {
print 'Unterkategorien vorhanden!';
}


Fehlermeldung: Fatal error: Call to undefined method: oocategory->countchildren()
wmxrecords
 
Beiträge: 93
Registriert: 1. Nov 2008, 13:09

Beitragvon Markus.Staab » 12. Feb 2009, 11:04

Hi,

Code: Alles auswählen
$cat = OOCategory::getCategoryById($this->getValue("category_id"));
$childs = $cat->getChildren();
if (count($childs) != 0) {
print 'Unterkategorien vorhanden!';
}


Grüße,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon wmxrecords » 12. Feb 2009, 11:32

Ok, funktioniert super! Da ich aber die Unterkategorien auf der linken Seite vom Text darstelle wenn diese vorhanden sind und den Text dann nach rechts verschiebe, passt diese Lösung nicht. Hab dann das Problem, dass sich - wenn Unterkategorien vorhanden sind - links der Platzhalter aufklappt und der Text sich nach rechts verschiebt, als ob da ein Menü steht. Wenn aber alle Kategorien offline sind, habe ich da ein leeres Feld.

Ich habe mir folgende Lösung angeeignet und sie funktioniert!

Code: Alles auswählen
$countKids = '0';
$children = OOCategory::getChildrenById($this->getValue("category_id"));

foreach ($children as $child) {

    if ($child->isOnline()) {
    $countKids++;
    }
}

if ($countKids > 0) {
   
    print 'Unterkategorie(n) vorhanden!';
}
else {
       
    print 'Unterkategorie(n) nicht vorhanden!';
}


Wenn Kategorien auch verfügbar sind aber auf offline stehen, begint der Text ganz normal von links. Ist eine Unterkategorie auf online gestellt, so verschiebt sich der Text nach rechts und gibt Platz für das Untermenü.

Danke für eure nette Mithilfe!
wmxrecords
 
Beiträge: 93
Registriert: 1. Nov 2008, 13:09

Beitragvon nik » 12. Feb 2009, 13:12

0 != $category->countChildren()

Uups, da war ich wohl in den Medienkategorien. Sorry.

Übrigens gibts für getChildren () den ignore_offlines-Parameter. Damit sollte auch das gehen und es läßt sich die Schleife einsparen:

Code: Alles auswählen
$category = OOCategory::getChildrenById($this->getValue("category_id"));
$children = $category->getChildren(true);
if (array () == $children) {
  }
else {
  }

Das beschriebene Problem ist wohl eher eine Frage Deines HTML/CSS Codes.
.
nik
 
Beiträge: 112
Registriert: 9. Dez 2008, 20:17


Zurück zu Templates/Navigationen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast