| | |
| | | <?php |
| | | |
| | | use JVBase\managers\CacheManager; |
| | | use JVBase\ui\Navigation; |
| | | |
| | | $menu_id = $attributes['menuId'] ?? ''; |
| | | $collapsed = $attributes['collapsed'] ?? true; |
| | | |
| | | // You'd populate this from options, a filter, or however you store menu data |
| | | $menu_items = apply_filters('jvbDrawerItems', [], $menu_id); |
| | | |
| | | if (empty($menu_items) || empty($menu_id)) { |
| | | return '<p>Please configure the drawer menu in block settings.</p>'; |
| | | } |
| | | |
| | | $cache = CacheManager::for('drawer'); |
| | | $cache->clear(); |
| | | |
| | | if (!is_front_page()) { |
| | | $menu_items[] = [ |
| | | 'text' => 'Home', |
| | | 'url' => home_url(), |
| | | 'icon' => 'house-simple', |
| | | ]; |
| | | } |
| | | $items = array_map(function($item) { return $item['text'];}, $menu_items); |
| | | |
| | | $key = $cache->generateKey($items); |
| | | $menu = $cache->remember($key, |
| | | function () use ($menu_items, $menu_id, $collapsed) { |
| | | $menu = new Navigation($menu_id); |
| | | $menu->asDrawer($collapsed)->populateFromArray($menu_items); |
| | | return $menu->render(); |
| | | }); |
| | | |
| | | global $wp; |
| | | |
| | | $current = home_url($wp->request.'/'); |
| | | echo str_replace($current.'"', $current.'" class="current" aria-current="page"', $menu); |