Перейти к содержанию
meliorist2

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

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

Добрый день!

 

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

 

Необходимо в меню выводить главную категорию, и, например, первые 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 } ?>

 

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

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


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

код в 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 } ?>

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


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

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

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

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

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


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

может.

пробуйте

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

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


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

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

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

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


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

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

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

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


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

<?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

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


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

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

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

echo '</li>';
>>

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

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


Ссылка на сообщение
Поделиться на другие сайты
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]

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


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

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

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

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


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

У меня примерно такая же задача... нужно чтобы показывалось 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

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


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

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

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

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

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

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

Войти

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

Войти

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

    • От wowez
      Здравствуйте, вот вопрос в чем есть модуль категорий, я вот сделал вот так http://avtoex.mcdir.ru/ (слева "каталог товаров") и при наведении показывается меню второго уровня и я хочу сделать что бы стрелочки были только у тех категорий у которых есть подкатегроии 2-го уровня вот сейчас выводится так 
      <?php foreach ($categories as $category) { ?> <?php if ($category['category_id'] ) { ?> <a data-help="#<?php echo $category['category_id'] ?>" href="<?php echo $category['href']; ?>" class="list-group-item active" id="catalogmenu">&nbsp;&nbsp;&nbsp;<i class="fa fa-angle-right" aria-hidden="true"></i>&nbsp;&nbsp;&nbsp;<?php echo $category['name']; ?><i class="fa fa-angle-right rightone" aria-hidden="true"></i></a>  
      я так понимаю надо написать что то вроде
       
      <?php foreach ($categories as $category) { ?> <?php if ($category['category_id'] ) { ?> <a data-help="#<?php echo $category['category_id'] ?>" href="<?php echo $category['href']; ?>" class="list-group-item active" id="catalogmenu">&nbsp;&nbsp;&nbsp;<i class="fa fa-angle-right" aria-hidden="true"></i>&nbsp;&nbsp;&nbsp;<?php echo $category['name']; ?></a> <?php } else { ?> <?php ($category['category_id'] == $category['children'] ) { ?> <a data-help="#<?php echo $category['category_id'] ?>" href="<?php echo $category['href']; ?>" class="list-group-item active" id="catalogmenu">&nbsp;&nbsp;&nbsp;<i class="fa fa-angle-right" aria-hidden="true"></i>&nbsp;&nbsp;&nbsp;<?php echo $category['name']; ?><i class="fa fa-angle-right rightone" aria-hidden="true"></i></a>  
      Ну да я не очень в php, ну подскажите как это сделать.
      То есть это то же самое что вывести только те категории если есть у них подкатегории.
      Будьте добры.
       
       
       
       
       
       
       
    • От lambda371
      Друзья, всем доброго времени суток!

      Возникла такая проблема
      На странице категорий в правый блок добавил стандартный модуль "Категории"
      Но он выводит только категории без подкатегорий
      Как вывести подкатегории?
      https://greenmarket.su/iskusstvennie-derevya
      Прикрепил код и скриншот
       
       

    • От A132
      День добрый, дамы и господа!
      Столкнулся с казалось-бы плёвой проблемой даже для новичка, однако перекопав весь интернет прямого ответа на него не нашёл.
      Итак суть проблемы ясна из темы - как увеличить шрифт у названий подкатегорий?
      Сразу оговорюсь, что мои навыки программирования закончились на паскале, но, тем не менее, даже их мне мне хватило чтобы, например, вывести в подкатегориях картинки, а вот чтобы решить эту задачу - не хватает. И виной тому - отсутствие чётких инструкций в каком файле что нужно исправить. Попытки самостоятельно поковыряться в stylesheet.css приводят только к изменению всего шрифта на странице.
      Поэтому прошу помощи у более опытных товарищей!
      Собственно на приложенной картинке всё, что меня интересует, отмечено, но дам небольшие пояснения:
      1) Самый главный вопрос - как сделать шрифт крупнее и жирнее только у названий подкатегорий?;
      Вопросы бонусные:
      2) Как сделать рамку вокруг картинки?
      3) Как убрать серую полосу и сократить расстояние между названием родительской категории и картинкой подкатегории? (Сейчас на этом месте в файле category.tpl просто закоменчены отображение картинки родительской категории и надписи "Выберите категорию")
       
      Ну и был бы очень признателен за инструкцию по типу: Залезаешь в такой-то файл / Находишь там такой-то кусок кода / Меняешь там такие-то значения
      П.С. Версия 2.0.3.1 (rs.2)
       

    • От arty11
      Приветствую форумчане, помогите разобраться с подкатегориями. На данный момент выглядит так: https://pastenow.ru/2S17H
      Нужно сделать вот так: https://pastenow.ru/2S184
      Т.е увеличить изображения и сделать 3 подкатегории в ряд
      Никак не могу разобраться где менять, в category.tpl нашел где менять только без изображений категории
      Благодарю заранее за помощь
    • От iura93
      Добрый день.У меня такой вопрос.Есть категория а в ней подкатегории с товарами. Вопрос: как поставить фильтр чтобы выбрав нужные разделы в главной категории,исчезли подкатегории и появились товары по фильтру? Кто может помочь?
  • Последние посетители   0 пользователей онлайн

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

×