Ejemplo n.º 1
0
 /**
  * Menu items list - by menu_id
  *
  * @param int $menu_id
  * @return string
  */
 public function lists($menu_id, $localeCode = '')
 {
     $locale = $localeCode != '' ? $localeCode : config_item('selected_locale');
     $menu_items = $this->menu_items->where(['menu_id' => $menu_id, 'locale' => $locale])->order_by('sort')->get_all();
     $menu_items_parents = $this->menu_items->prepare_parent_array($menu_items);
     // Get pages list
     $pages = $this->page_translations->where('locale', $locale)->get_all();
     // Set view data
     $data['menu_items'] = generate_menu_tree($menu_items_parents, 0, [], 100, 0, ['pages' => obj_to_options_array($pages, 'id', 'title')]);
     if ($this->input->is_ajax_request()) {
         $this->render('menu/items/index', $data);
     } else {
         return $this->render('menu/items/index', $data, true);
     }
 }
Ejemplo n.º 2
0
 /**
  * Generate HTML with menu tree
  * 
  * @param array $items - array (key = id_parent)
  * @param int $id_parent - start id parent
  * @param array $active_path - full path of current category
  * @param int $max_level - maximum level
  * @param int $level - current level
  */
 function generate_menu_tree($items, $id_parent, $active_path = array(), $max_level = 100, $level = 0, $data_arrays = [])
 {
     $result = '';
     $id_parent = (int) $id_parent;
     if (isset($items[$id_parent]) && $max_level > $level) {
         foreach ($items[$id_parent] as $item) {
             // Items with children
             if (isset($items[$item->id]) && count($items[$item->id]) > 0) {
                 $result .= '<li id="item_' . $item->id . '">' . PHP_EOL;
                 $result .= generate_menu_item_content($item, $data_arrays);
                 $result .= '<ol class="subtree">' . PHP_EOL;
                 $result .= generate_menu_tree($items, $item->id, $active_path, $max_level, $level + 1, $data_arrays);
                 $result .= '</ol>' . PHP_EOL;
                 $result .= '</li>' . PHP_EOL;
             } else {
                 $result .= '<li id="item_' . $item->id . '">' . PHP_EOL;
                 $result .= generate_menu_item_content($item, $data_arrays);
                 $result .= '</li>' . PHP_EOL;
             }
         }
     }
     return $result;
 }