meliorist2

Ограниченное количество подкатегорий в меню

Рекомендуемые сообщения

meliorist2    0

Добрый день!

 

Подскажите, пожалуйста...

 

Необходимо в меню выводить главную категорию, и, например, первые 5 подкатегорий.

Начиная с 6-й, ничего не выводить, кроме слова "Еще", которое будет ссылкой на главную категорию.

 

Вот код:

 

<!-- category -->
<?php if ($option['type'] == 'category') { ?>
<?php if ($option['show_parent']) { ?>
<a href="<?php echo $option['parent']['href']; ?>" class="parent">
<?php if ($option['show_image'] && $option['parent']['image']) { ?><img src="<?php echo $option['parent']['image']; ?>" alt="<?php echo $option['parent']['name']; ?>"/><?php } ?>
<?php echo $option['parent']['name']; ?>
</a>
<?php } ?>
<?php for ($i = 0; $i < count($option['categories']);) { ?>
<ul style=" width: <?php echo $menu['column_width']; ?>px" class="column category">
 <?php $j = $i + ceil(count($option['categories']) / $option['column']); ?>
 <?php for (; $i < $j; $i++) { ?>
 <?php if (isset($option['categories'][$i])) { ?>
<li><a href="<?php echo $option['categories'][$i]['href']; ?>">
<?php if ($option['show_image'] && $option['categories'][$i]['image']) { ?><img src="<?php echo $option['categories'][$i]['image']; ?>" alt="<?php echo $option['categories'][$i]['name']; ?>" title="<?php echo $option['categories'][$i]['name']; ?>"/><?php } ?>
<?php echo $option['categories'][$i]['name']; ?>
</a>
<?php if ($option['show_submenu']) { showSubmenu($option['categories'][$i]); } ?>
</li>
 <?php } ?>
 <?php } ?>
</ul>
<?php } ?>
<?php } ?>

 

Кто-нибудь делал подобное? Поделитесь, пожалуйста!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 099

код в CODE

<?php for ($i = 0; $i < count($option['categories'])) { ?>
>>

<?php for ($i = 0; $i <= 5) { ?>
...

</ul>
<?php } ?>
>>

</ul>
<?php } ?>
<?php if (count($option['categories']) > 5) { ?>
<a href="<?php echo $option['parent']['href']; ?>" class="more">еще</a>
<?php } ?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
meliorist2    0

Спасибо за быстрый ответ.

Выдает 500 ошибку (белый экран)

Может где-то лишняя или недостающая точка с запятой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 099

может.

пробуйте

<?php for ($i = 0; $i <= 5;) { ?>
или поштучно части

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
meliorist2    0

Это решило проблему с 500 ошибкой.

Слово "еще" с ссылкой на главную категорию появилось, но лишние подкатегории так и не убрались.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 099

пациента и функцию @showSubmenu()@

<?php if ($option['show_submenu']) { showSubmenu($option['categories'][$i]); } ?>
в студию!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
meliorist2    0

<?php 

if($data_template){

echo $data_template;

} else { ?>

<?php function showSubmenu($category) {

if (count($category['children']) > 0) {

echo '<div class="sub_menu"><ul>';

foreach ($category['children'] as $cat) {

echo '<li><a href="'.$cat['href'].'">'.$cat['name'].'</a>';

showSubmenu($cat);

echo '</li>';

}

echo '</ul></div>';

}

}

?>

Изменено пользователем afwollis
overquote deleted

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 099

foreach ($category['children'] as $cat) {
>>

$cc_i = 0;
foreach ($category['children'] as $cat) {
...

echo '</li>';
>>

echo '</li>';
$cc_i++;
if ($cc_i >= 5) { break; }

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
meliorist2    0
foreach ($category['children'] as $cat) {
>>

$cc_i = 0;
foreach ($category['children'] as $cat) {
...

echo '</li>';
>>

echo '</li>';
$cc_i++;
if ($cc_i >= 5) { break; }

Я, видимо, издеваюсь, но опять нет(

 

[spoiler]<?php 
if($data_template){
echo $data_template;
} else { ?>
<?php function showSubmenu($category) {
if (count($category['children']) > 0) {
echo '<div class="sub_menu"><ul>';
$cc_i = 0;
foreach ($category['children'] as $cat) {
echo '<li><a href="'.$cat['href'].'">'.$cat['name'].'</a>';
showSubmenu($cat);
echo '</li>';
$cc_i++;
if ($cc_i >= 5) { break; }
}
echo '</ul></div>';
}
}
?>
<div id="boss_menu" class="mega-menu">
  <ul>
  <?php foreach ($menus as $menu) { ?>
<li <?php if(count($menu['options'])>0){echo 'class="dropdown-arrow"'; }?>><a href="<?php echo $menu['href']; ?>"><?php echo $menu['title'] ?></a>
<?php if (count($menu['options']) > 0) { ?>
<div style="width: <?php echo $menu['dropdown_width']; ?>px;" class="dropdown">
<?php foreach ($menu['options'] as $option) { ?>
<div style="width: <?php echo $option['width']; ?>px; float: left" class="option">
<!-- manufacturer -->
<?php if ($option['type'] == 'manufacturer') { ?>
<?php for ($i = 0; $i < count($option['manufacturers']);) { ?><ul style=" width: <?php echo $menu['column_width']; ?>px" class="column manufacturer">
 <?php $j = $i + ceil(count($option['manufacturers']) / $option['column']); ?>
 <?php for (; $i < $j; $i++) { ?>
 <?php if (isset($option['manufacturers'][$i])) { ?>
<li><a href="<?php echo $option['manufacturers'][$i]['href']; ?>">
<?php if ($option['show_image']) { ?><img src="<?php echo $option['manufacturers'][$i]['image']; ?>" alt="<?php echo $option['manufacturers'][$i]['name']; ?>" title="<?php echo $option['manufacturers'][$i]['name']; ?>"/><?php } ?>
<?php if ($option['show_name']) { ?><?php echo $option['manufacturers'][$i]['name']; ?><?php } ?>
</a></li>
 <?php } ?>
 <?php } ?>
</ul><?php } ?>
<?php } ?>
<!-- category -->
<?php if ($option['type'] == 'category') { ?>
<?php if ($option['show_parent']) { ?>
<a href="<?php echo $option['parent']['href']; ?>" class="parent">
<?php if ($option['show_image'] && $option['parent']['image']) { ?><img src="<?php echo $option['parent']['image']; ?>" alt="<?php echo $option['parent']['name']; ?>"/><?php } ?>
<?php echo $option['parent']['name']; ?>
</a>
<?php } ?>
<?php for ($i = 0; $i <= 5;) { ?>
<ul style=" width: <?php echo $menu['column_width']; ?>px" class="column category">
 <?php $j = $i + ceil(count($option['categories']) / $option['column']); ?>
 <?php for (; $i < $j; $i++) { ?>
 <?php if (isset($option['categories'][$i])) { ?>
<li><a href="<?php echo $option['categories'][$i]['href']; ?>">
<?php if ($option['show_image'] && $option['categories'][$i]['image']) { ?><img src="<?php echo $option['categories'][$i]['image']; ?>" alt="<?php echo $option['categories'][$i]['name']; ?>" title="<?php echo $option['categories'][$i]['name']; ?>"/><?php } ?>
<?php echo $option['categories'][$i]['name']; ?>
</a>
<?php if ($option['show_submenu']) { showSubmenu($option['categories'][$i]); } ?>
</li>
 <?php } ?>
 <?php } ?>
</ul>
<?php } ?>
<?php if (count($option['categories']) > 5) { ?>
<a href="<?php echo $option['parent']['href']; ?>" class="more">Еще</a>
<?php } ?>
<?php } ?>
<!-- information -->
<?php if ($option['type'] == 'information') { ?>
<?php for ($i = 0; $i < count($option['informations']);) { ?>
<ul style="width: <?php echo $menu['column_width']; ?>px" class="column information">
 <?php $j = $i + ceil(count($option['informations']) / $option['column']); ?>
 <?php for (; $i < $j; $i++) { ?>
 <?php if (isset($option['informations'][$i])) { ?>
<li><a href="<?php echo $option['informations'][$i]['href']; ?>"><?php echo $option['informations'][$i]['title']; ?></a></li>
 <?php } ?>
 <?php } ?>
</ul>
<?php } ?>
<?php } ?>
<!-- static block -->
<?php if ($option['type'] == 'static_block') { ?>
<div class="staticblock"><?php echo $option['description']; ?></div>
<?php } ?>
<!-- product -->
<?php if ($option['type'] == 'product') { ?>
<?php for ($i = 0; $i < count($option['products']);) { ?><ul style="display: table-cell; width: <?php echo $menu['column_width']; ?>px" class="column product">
 <?php $j = $i + ceil(count($option['products']) / $option['column']); ?>
 <?php for (; $i < $j; $i++) { ?>
 <?php if (isset($option['products'][$i])) { ?>
<li>
<?php if ($option['products'][$i]['thumb']) { ?><a href="<?php echo $option['products'][$i]['href']; ?>"><img src="<?php echo $option['products'][$i]['thumb']; ?>" alt="<?php echo $option['products'][$i]['name']; ?>" title="<?php echo $option['products'][$i]['name']; ?>"/></a><?php } ?><div class="boss_info">
<div class="name">
<a href="<?php echo $option['products'][$i]['href']; ?>"><?php echo $option['products'][$i]['name']; ?></a>
</div>
<?php if ($option['products'][$i]['rating']) { ?>
 <div class="rating"><img src="catalog/view/theme/bt_babystore/image/stars-<?php echo $option['products'][$i]['rating']; ?>.png" alt="" /></div>
 <?php } ?>
 <div class="description"><?php echo $option['products'][$i]['description']; ?></div>
<?php if (!$option['products'][$i]['special']) { ?>
<span class="price"><?php echo $option['products'][$i]['price']; ?></span>
<?php } else { ?>
<span class="price-old"><?php echo $option['products'][$i]['price']; ?></span> <span class="price-new"><?php echo $option['products'][$i]['special']; ?></span>
<?php } ?>
</div>
</li>
 <?php } ?>
 <?php } ?></ul>
<?php } ?>
<?php } ?>
</div>
<?php } ?>
</div>
<?php } ?>
</li>
  <?php } ?>
  </ul>
</div>
 <?php } ?>[/spoiler]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
meliorist2    0

Ура! Последний вариант сработал, правда только применился к под-под-категориям.

А как его применить к под-категориям?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
sergeybelov    0

У меня примерно такая же задача... нужно чтобы показывалось 7 главных категорий в меню, а если их больше 7 - то последним было слово "Еще" и под ним в выпадающем меню остальные категории.

 

Помогите пожалуйста. 

 

Вот код

			<?php if ($categories) { ?>
			<?php $a=1; foreach ($categories as $category) { if ($a<8) { ?>
			<li><a href="<?php echo $category['href']; ?>"><?php echo $category['name'];?></a>

			<?php if ($category['children']) { ?>
				<!-- SubMenu -->
				
				<div class="sub-menu column-<?php echo $category['column']; ?>">
					<ul>
						
						<?php $i = 0; for (; $i < count($category['children']); $i++) { ?>
						<li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a>
							
							<?php if(isset($category['children'][$i]['category_id'])) { ?>
								<?php $categories_2 = $this->model_catalog_category->getCategories($category['children'][$i]['category_id']);
								if($categories_2) { ?>
								<br />
								<!-- SubMenu -->
								
								<div class="sub-menu">
									<ul>
										
										<?php foreach ($categories_2 as $category_2) { ?>
										<li><a href="<?php echo $this->url->link('product/category', 'path='.$category['category_id'].'_' . $category['children'][$i]['category_id'] . '_' . $category_2['category_id']); ?>"><?php echo $category_2['name']; ?></a></li>
										<?php } ?>	
									
									</ul>

								</div>
								
								<!-- End SubMenu -->
								
								<?php } ?>
							<?php } ?>
						
						</li>

						<?php } ?>
					
					</ul>

				</div>
				
				<!-- End SubMenu -->
				
				<?php } ?>
			
			</li>
			<?php } $a++; } ?>
			<?php } ?>

Сейчас просто отображается 7 категорий, а остальные просто не видны в меню.

Изменено пользователем sergeybelov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От MFX
      Здравствуйте!)
       
      Версия ocStore 2.3.0.2.3
       
      Вопрос:
      Возможность вывода подкатегорий в разных категориях. Например как это реализовано у товаров. Помимо родительской категории, чтобы можно было отобразить подкатегорию, в разных категориях. Есть ли модуль или как можно допилить данную возможность!?
       
      Пример:
      Есть категории: 1. Холодильники, 2. Барное оборудование - в разделе "Холодильники" есть подкатегория "барный холодильник". Надо чтобы она отображалась и в холодильниках и барном оборудовании.
       
      Комментарий: Создавать дубли подкатегорий под каждую категорию не хочу, лишний гемор(товаров много, категорий много - чтобы это все объединять)
       
      Комментарий 2: Прочитал много всего по этой теме, ответа путного не увидел. Но видел кучи людей которые тоже интересуются по поводу таких выводов подкатегорий. Возможно ли, кто-то реализовывал данный вывод?!
       
      Комментарий 3: Пробовал в админке вывести от продукта связи в категории(сдублировав код настроек из продукт в категори) - куча ошибок вылезало, либо ничего не вылезало - но мне кажется по аналогии есть возможность вывода таким способом, не силен я просто в php(по сути я ни в чем не силен, что связано с кодами, так полумрак в ночи - но это к самой теме отношения не имеет, просто хотел сказать, чтобы не тыкали умными словами, а смогли помочь в данном вопросе и объяснить че и как, ну или просто подсказать куда плыть).)
       
      Комментарий 4: Если есть что по теме вопроса сказать - говори.. Если нет - то ты знаешь что делать!)))
       
      Заранее благодарен за ответы, буду признателен, если кто подскажет с решением данного вопроса!)
       
      З.Ы. Всем счастья, здоровья, успехов, любви, секса хорошего и всего самого наилучшего!))
    • От Tati157
      Нужна помощь с меню сайта. на сайте есть вкладка в боковом меню типа светодиодные ленты,при наведении на него выпадает подменю с подкатегориями - цвет свечения, степень защиты и т.д.   Под ними в свою очередь еще категории: белый синий т.д. Нужно что бы  подкатегории - цвет свечения, степень защиты и т.д были не кликабельные.
      Напишите пож. цену работы.

    • От Archik
      Здравствуйте. Имеется opencart 3.
       
      В левом меню категорий у меня на данный момент выводятся только категории первого уровня, без вложенных подкатегорий. Нашел код, который выводит это меню:
       
      echo "<div class=\"list-group\">   ";         $context['_parent'] = $context;         $context['_seq'] = twig_ensure_traversable((isset($context["categories"]) ? $context["categories"] : null));         foreach ($context['_seq'] as $context["_key"] => $context["category"]) {             echo "  ";             if (($this->getAttribute($context["category"], "category_id", array()) == (isset($context["category_id"]) ? $context["category_id"] : null))) {                 echo "    <a href=\"";                 echo $this->getAttribute($context["category"], "href", array());                 echo "\" class=\"list-group-item active\">";                 echo $this->getAttribute($context["category"], "name", array());                 echo "</a>    ";                 if ($this->getAttribute($context["category"], "children", array())) {                     echo "  ";                     $context['_parent'] = $context;                     $context['_seq'] = twig_ensure_traversable($this->getAttribute($context["category"], "children", array()));                     foreach ($context['_seq'] as $context["_key"] => $context["child"]) {                         echo "  ";                         if (($this->getAttribute($context["child"], "category_id", array()) == (isset($context["child_id"]) ? $context["child_id"] : null))) {                             echo "  <a href=\"";                             echo $this->getAttribute($context["child"], "href", array());                             echo "\" class=\"list-group-item active\">   - ";                             echo $this->getAttribute($context["child"], "name", array());                             echo "</a>                           ";                           } else {                             echo "    <a href=\"";                             echo $this->getAttribute($context["child"], "href", array());                             echo "\" class=\"list-group-item\">   - ";                             echo $this->getAttribute($context["child"], "name", array());                             echo "</a>   ";                         }                         echo "  ";                     }                     $_parent = $context['_parent'];                     unset($context['_seq'], $context['_iterated'], $context['_key'], $context['child'], $context['_parent'], $context['loop']);                     $context = array_intersect_key($context, $_parent) + $_parent;                     echo "  ";                 }                 echo "  ";             } else {                 echo " <a href=\"";                 echo $this->getAttribute($context["category"], "href", array());                 echo "\" class=\"list-group-item\">";                 echo $this->getAttribute($context["category"], "name", array());                 echo "</a>   ";             }             echo "  ";         }         $_parent = $context['_parent'];         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['category'], $context['_parent'], $context['loop']);         $context = array_intersect_key($context, $_parent) + $_parent;         echo "</div> "; Как сделать вывод подкатегорий выбранной категории меню? Вот как здесь :
       
       
    • От Loys
      Добрый день! Ищу модуль, для создания линеек/коллекций/подкатегорий (не знаю как правильно назвать) в производителях. То есть, чтобы было, например, производитель Lenovo, а внутри основного производителя уже были бы линейки Yoga, Y, Vibe (желательно ещё, чтобы вписывалось в filterpro). 
      Сразу оговорюсь, что структуру по типу "Сделать категорию Lenovo и там делать подкатегории" - не предлагать.
      Спасибо!
    • От david88
      1. Нужно в боковом меню сделать вывод подкатегорий только родительской категории.
      2. Если у товара нет картинки, то в корзине уродство – вместо пресхолдера – название товара. – нужно поставить картинку пресхолдера 
      3. Поставить модуль похожие товары.
       
      бюджет 500р.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу