Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Меню до третьего уровня


Recommended Posts

Здравствуйте, есть горизонтальное меню с категориями товаров, при наведении на категорию открывается список её подкатегорий. По умолчанию в шаблоне меню сделано в два уровня, можно ли сделать третий? Знаю, что три уровня формируется в карте сайта, в файле /catalog/controller/information/sitemap.php, но что там подправить к сожалению не знаю

Вот вкратце содержание sitemap.php

$this->data['categories'] = array();

$categories_1 = $this->model_catalog_category->getCategories(0);

foreach ($categories_1 as $category_1) {

$level_2_data = array();

$categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']);

foreach ($categories_2 as $category_2) {

$level_3_data = array();

$categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']);

foreach ($categories_3 as $category_3) {

$level_3_data[] = array(

'name' => $category_3['name'],

'href' => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id'] . '_' . $category_3['category_id'])

);

}

$level_2_data[] = array(

'name' => $category_2['name'],

'children' => $level_3_data,

'href' => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id'])

);

}

$this->data['categories'][] = array(

'name' => $category_1['name'],

'children' => $level_2_data,

'href' => $this->url->link('product/category', 'path=' . $category_1['category_id'])

);

}

Подскажите пожалуйста, что здесь нужно исправить?
Надіслати
Поділитися на інших сайтах


ну уж точно не в sitemap, карта сайта сделана для поисковиков, а для создание подуровня надо рыть в файлах header но блин сам уже 2 день копаюсь, немагу это же меню доделать и приклеить 3 уровень

ТАК ЧТО ТОЖЕ ОЧЕНЬ ИНТЕРЕСНО СДЕЛАТЬ ЕЩЁ ПОДУРОВЕНЬ

Надіслати
Поділитися на інших сайтах


Тоже сталкнулся с подобной проблемой.

/опенкартер я начинающий, сразу говорю, но опыт общения с другими CMS-ками многолетний/

Проблема в том, что эти данные не выгружаются даже в $this, иначе-бы вытащить их было вообще плевым делом. Полагаю, что в дефолте такая фича не предусмотрена, по-этому придется писать запрос ручками.

Завтра на работе напишу свою выборку с рекурсией всех подразделов, но, неужели изначально такого нет в движке. Оно просто обязано быть.

Тут есть гуру?

может подскажете в каком направлении копать, чтоб не работать ломом там, где можно обойтись фломастером?

Надіслати
Поділитися на інших сайтах


Тоже сталкнулся с подобной проблемой.

/опенкартер я начинающий, сразу говорю, но опыт общения с другими CMS-ками многолетний/

Проблема в том, что эти данные не выгружаются даже в $this, иначе-бы вытащить их было вообще плевым делом. Полагаю, что в дефолте такая фича не предусмотрена, по-этому придется писать запрос ручками.

Завтра на работе напишу свою выборку с рекурсией всех подразделов, но, неужели изначально такого нет в движке. Оно просто обязано быть.

Тут есть гуру?

может подскажете в каком направлении копать, чтоб не работать ломом там, где можно обойтись фломастером?

Ну вот что я нарыл

    <ul>
    <?php
$this->load->model('catalog/category');
$this->load->model('catalog/product');

    $categories_1 = $this->model_catalog_category->getCategories(0); 
    foreach ($categories_1 as $category_1) { ?>
	    <li><a href="<?php echo $category_1['href']; ?>" class="menulink"><?php echo $category_1['name']; ?></a>
		    <ul>
			    <?php
			    $categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']);
			    foreach ($categories_2 as $category_2) { ?>
				    <li><a href="<?php echo $category_2['href']; ?>"><?php echo $category_2['name']; ?></a>
					    <ul>
						    <?php
						    $categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']);
						    foreach ($categories_3 as $category_3) { ?>
							    <li><a href="<?php echo $category_3['href']; ?>"><?php echo $category_3['name']; ?></a></li>
						    <?php } ?>
					    </ul>
				    </li>
			    <?php } ?>
		    </ul>
	    </li>
    <?php } ?>
    </ul>

выводит все 3 уровня, но если привезать к css, что я не пытался получается если нету 2 уровня выводится просто черная линия.

можете попробовать вставить этот код

<div id="menu">
    <ul>
    <?php
$this->load->model('catalog/category');
$this->load->model('catalog/product');

    $categories_1 = $this->model_catalog_category->getCategories(0); 
    foreach ($categories_1 as $category_1) { ?>
	    <li><a href="<?php echo $category_1['href']; ?>" class="menulink"><?php echo $category_1['name']; ?></a>
	    <div>
		    <ul>
			    <?php
			    $categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']);
			    foreach ($categories_2 as $category_2) { ?>
				    <li><a href="<?php echo $category_2['href']; ?>"><?php echo $category_2['name']; ?></a>
				    <div>
					    <ul>
						    <?php
						    $categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']);
						    foreach ($categories_3 as $category_3) { ?>
							    <li><a href="<?php echo $category_3['href']; ?>"><?php echo $category_3['name']; ?></a></li>
						    <?php } ?>
					    </ul>
				    </div>
				    </li>
			    <?php } ?>
		    </ul>
	    </div>
	    </li>
    <?php } ?>
    </ul>
</div>

в catalog/view/theme/default/template/common/menu.php

и увижите что если есть 1 уровень а нету 2 уровня будет всёравно выводится черный, полупрозрачный, фон.

в стандартвом коде есть это

	    <ul>
		  <?php $j = $i + ceil(count($category['children']) / $category['column']); ?>
		  <?php for (; $i < $j; $i++) { ?>
		  <?php if (isset($category['children'][$i])) { ?>
		  <li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li>
		  <?php } ?>
		  <?php } ?>
	    </ul>

вот надо как то разобрать эту формулу и вставить в код который я делаю

Я хочу добится как бы не 3 уровневое меню а мего меню, типо наводиш на 1 уровень тебе открывается 2 уровень но там же и видно 3 уровень, но надо как то доделать чтобы не было видно под меню если подменю нету!

Надеюсь понятно

Надіслати
Поділитися на інших сайтах


  • 3 months later...

выводит все 3 уровня, но если привезать к css, что я не пытался получается если нету 2 уровня выводится просто черная линия.

можете попробовать вставить этот код

у меня получилось с этим кодом :)

<div id="menu">
	<ul>
	<?php
$this->load->model('catalog/category');
$this->load->model('catalog/product');

	$categories_1 = $this->model_catalog_category->getCategories(0);
	foreach ($categories_1 as $category_1) { ?>
			<li><a href="<?php echo $category_1['href']; ?>" class="menulink"><?php echo $category_1['name']; ?></a>
			<div>
					<ul>
							<?php
							$categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']);
							foreach ($categories_2 as $category_2) { ?>
									<li><a href="<?php echo $category_2['href']; ?>"><?php echo $category_2['name']; ?></a>
									<div>
											<ul>
													<?php
													$categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']);
													foreach ($categories_3 as $category_3) { ?>
															<li><a href="<?php echo $category_3['href']; ?>"><?php echo $category_3['name']; ?></a></li>
													<?php } ?>
											</ul>
									</div>
									</li>
							<?php } ?>
					</ul>
			</div>
			</li>
	<?php } ?>
	</ul>
</div>

Просто нужно добавить в css нечто подобное

#menu > ul > li > div > ul > li > div {
	background: none repeat scroll 0 0 #FFFFFF;
	box-shadow: 0 0 5px #AAAAAA;
	display: none;
	left: 145px;
	margin-top: -32px;
	position: absolute;
	z-index: 5;
}
#menu ul > li > div > ul > li:hover > div {
	display: table;
}
Вроде все ровно,пока-что )

Изображение

Надіслати
Поділитися на інших сайтах


Блин! Не обратил внимания ... Ссылки не выводятся теперь , названия есть а ссылок нет в меню :( Как поправить, кто знает?

Opencart 1.5.3

вот нашел модулек

http://www.opencart.com/index.php?route=extension/extension/info&extension_id=6720&filter_search=menu&filter_license=0

щас буду копать :-)

Змінено користувачем xttp
Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.