FriendsOfREDAXO / navigation_array

Helper Class to build navigations for REDAXO cms
MIT License
32 stars 1 forks source link

5.1 :: Get the current or set category as array including permission status … #37

Closed skerbis closed 5 days ago

skerbis commented 5 days ago

getCategory()

Liefert ein Array mit allen Informationen zu einer Kategorie. Funktioniert sowohl für die aktuelle Kategorie als auch für eine spezifische Kategorie-ID.

Basis-Verwendung

// Aktuelle Kategorie
$category = BuildArray::create()->getCategory();

// Spezifische Kategorie
$category = BuildArray::create()->getCategory(5);

Rückgabe-Array

[
    'catId' => 5,              // ID der Kategorie
    'parentId' => 2,           // ID der Elternkategorie
    'catName' => 'News',       // Name der Kategorie
    'url' => '/news/',         // URL der Kategorie
    'hasChildren' => true,     // Hat Unterkategorien
    'children' => [],          // Array der Kindkategorien
    'path' => [0,2,5],        // Pfad von Root zur Kategorie
    'pathCount' => 3,          // Anzahl der Ebenen von Root
    'active' => true,          // Ist im aktiven Pfad
    'current' => true,         // Ist aktuelle Kategorie
    'cat' => Object,          // REX Category Objekt
    'ycom_permitted' => true,  // YCom-Berechtigung
    'filter_permitted' => true,// Filter-Erlaubnis
    'is_permitted' => true,    // Gesamtstatus der Berechtigungen
]

Beispiele

1. Kategorie-Vergleich

$currentCat = BuildArray::create()->getCategory();
$parentCat = BuildArray::create()->getCategory($currentCat['parentId']);

echo '<div class="category-nav">';
echo '<h2>' . $parentCat['catName'] . '</h2>';
echo '<h3>Sie befinden sich hier: ' . $currentCat['catName'] . '</h3>';
echo '</div>';

2. Mit Custom-Daten

$category = BuildArray::create()
    ->setCustomDataCallback(function($cat) {
        return [
            'image' => $cat->getValue('cat_image'),
            'description' => $cat->getValue('cat_description')
        ];
    })
    ->getCategory(5);

if ($category['is_permitted']) {
    echo '<div class="category-info">';
    echo '<h1>' . $category['catName'] . '</h1>';
    if ($category['image']) {
        echo '<img src="' . $category['image'] . '">';
    }
    echo '</div>';
}

3. Mehrere Kategorien verarbeiten

$builder = BuildArray::create()
    ->setCategoryFilterCallback(function($cat) {
        return $cat->getValue('show_in_nav') == 1;
    });

$categories = [
    $builder->getCategory(3),  // Kategorie mit ID 3
    $builder->getCategory(4),  // Kategorie mit ID 4
    $builder->getCategory()    // Aktuelle Kategorie
];

foreach ($categories as $category) {
    if ($category['is_permitted']) {
        echo '<div class="cat-box' . 
             ($category['current'] ? ' current' : '') . 
             ($category['active'] ? ' active' : '') . 
             '">';
        echo $category['catName'];
        echo '</div>';
    }
}