private function generateMenu($items) { $items = Journal2Utils::sortArray($items); foreach ($items as $key => &$item) { $icon = Journal2Utils::getIconOptions($item); /* menu href */ $href = null; $name = null; $target = $item['target'] ? ' target="_blank"' : ''; $class = Journal2Utils::getProperty($item, 'hide_on_mobile') ? 'hide-on-mobile' : ''; if ($class === 'hide-on-mobile' && (Journal2Cache::$mobile_detect->isMobile() || Journal2Cache::$mobile_detect->isTablet()) && $this->journal2->settings->get('responsive_design')) { unset($items[$key]); continue; } if (Journal2Utils::getProperty($item, 'hide_on_desktop', '0') === '1' && !Journal2Cache::$mobile_detect->isMobile()) { unset($items[$key]); continue; } /* menu type */ switch ($item['menu']['menu_type']) { case 'category': $category_info = $this->model_catalog_category->getCategory(Journal2Utils::getProperty($item, 'menu.menu_item.id', -1)); if (!$category_info) { continue; } $name = $category_info['name']; $href = $this->url->link('product/category', 'path=' . $category_info['category_id']); break; case 'product': $product_info = $this->model_catalog_product->getProduct(Journal2Utils::getProperty($item, 'menu.menu_item.id', -1)); if (!$product_info) { continue; } $name = $product_info['name']; $href = $this->url->link('product/product', 'product_id=' . $product_info['product_id']); break; case 'manufacturer': $manufacturer_info = $this->model_catalog_manufacturer->getManufacturer(Journal2Utils::getProperty($item, 'menu.menu_item.id', -1)); if (!$manufacturer_info) { continue; } $name = $manufacturer_info['name']; $href = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $manufacturer_info['manufacturer_id']); break; case 'information': $information_info = $this->model_catalog_information->getInformation(Journal2Utils::getProperty($item, 'menu.menu_item.id', -1)); if (!$information_info) { continue; } $name = $information_info['title']; $href = $this->url->link('information/information', 'information_id=' . $information_info['information_id']); break; case 'popup': $href = "javascript:Journal.openPopup('{$item['menu']['menu_item']}')"; break; case 'opencart': $customer_name = null; switch ($item['menu']['menu_item']['page']) { case 'login': $item['menu']['menu_item']['page'] = $this->customer->isLogged() ? 'account/account' : 'account/login'; $customer_name = $this->customer->isLogged() ? '{{_customer_}}' : null; break; case 'register': $item['menu']['menu_item']['page'] = $this->customer->isLogged() ? 'account/logout' : 'account/register'; break; case 'account/wishlist': $class .= ' wishlist-total'; break; case 'product/compare': $class .= ' compare-total'; default: } $name = $customer_name ? $customer_name : $this->model_journal2_menu->getMenuName($item['menu']['menu_item']['page']); $href = $this->model_journal2_menu->link($item['menu']['menu_item']['page']); break; case 'blog_home': $name = $this->journal2->settings->get('config_blog_settings.title.value.' . $this->config->get('config_language_id'), 'Journal Blog'); $href = $this->url->link('journal2/blog'); break; case 'blog_category': $category_info = $this->model_journal2_blog->getCategory(Journal2Utils::getProperty($item, 'menu.menu_item.id', -1)); if (!$category_info) { continue; } $name = $category_info['name']; $href = $this->url->link('journal2/blog', 'journal_blog_category_id=' . $category_info['category_id']); break; case 'blog_post': $post_info = $this->model_journal2_blog->getPost(Journal2Utils::getProperty($item, 'menu.menu_item.id', -1)); if (!$post_info) { continue; } $name = $post_info['name']; $href = $this->url->link('journal2/blog/post', 'journal_blog_post_id=' . $post_info['post_id']); break; case 'custom': $name = Journal2Utils::getProperty($item, 'name.value.' . $this->config->get('config_language_id'), ''); $href = Journal2Utils::getProperty($item, 'menu.menu_item.url'); break; } $overwrite_name = Journal2Utils::getProperty($item, 'name.value.' . $this->config->get('config_language_id'), ''); if ($overwrite_name) { $name = $overwrite_name; } if (Journal2Utils::getProperty($item, 'mobile_view') === 'icon') { $class .= ' icon-only'; } if (Journal2Utils::getProperty($item, 'mobile_view') === 'text') { $class .= ' text-only'; } if (!$href) { $class .= ' no-link'; } $class = trim($class); $item = array('icon_left' => $icon['left'], 'icon_right' => $icon['right'], 'class' => $class ? ' class="' . $class . '"' : '', 'href' => $href, 'name' => $name, 'target' => $target, 'subcategories' => array()); } return $items; }