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 091

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

может.

пробуйте

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

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


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

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

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

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


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

пациента и функцию @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 091

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

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


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

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

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

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

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

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

Войти

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

Войти


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

    • От iura93
      Подскажите пожалуйста как вывести подкатегории картинками OCstore 2.3.Очень нужна ваша помощь.За ранее спасибо.
    • От newmaster
      Доброго времени суток.
      С вами снова я- человек,доделывающий чужой магазин на opencart 2.0.1.1
      Сегодня мне хотелось бы настроить страницу вывода подкатегорий.
      На моём тестовом стенде она находится по адресу https://test.c-mb.ru/shkaf-kupe/
      Сейчас подкатегории выводятся с картинками и казалось бы всё ок, но хотелось бы, что бы отображение элементов располагалось на одном экране.
      Т.е. либо что бы все 6 подкатегорий помещались на 1 экран, либо что бы на экран выводилось по 3.
      Ещё более забавно то, что желаемое уже реализовано, только оно запускается при уменьшении рабочей области.
      Т.е. на 1366 / 768 отображение выглядит так: 
      А вот если сделать окошечко чуть меньше, то все элементы сразу помещаются на экран:

      Вопрос: как мне реализовать желаемое? Куда копать?
       
    • От krila
      Ищу возможность создать подкатегории в категориях.
      Нужно, чтобы, например, по клику "Красные" была отдельная страница с ЧПУ. Т.е. чтобы было /адрес_категории/krasnye
      И чтобы на этой странице была возможность написать свой Тайтл, текст описания подкатегории итд.

       
      Или фильтры, например, как тут. Но тоже, чтобы были отдельные страницы с чпу, тайтлом и  текстом.
      Чтобы для каждой категории можно было сделать уникальный набор фильтров.
       

    • От barbarian77
      Доброго времени суток.
      Подскажите как сделать чтобы глубина подменю выводилась более одного. Сейчас выводится главное меню и его первый подуровень, а остольное показывается поиском, как сделать что бы и в верхнем меню и категории, которые выводятся сбоку показывали большую глубину вложений?
    • От manager2up
      Вывод в категории - подкатегорий, вплоть до 3го уровня с изображением родителя
      catalog/controller/product/category.php
      $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $children_data = array(); $children = $this->model_catalog_category->getCategories($category_id); foreach ($children as $child) { $children_data2 = array(); $children2 = $this->model_catalog_category->getCategories($child['category_id']); foreach ($children2 as $child2) { $children_data2[] = array( 'name' => $child2['name'], 'href' => $this->url->link('product/category', 'path=' . $result['category_id'] . '_' . $child['category_id'].'_'.$child2['category_id']) ); } $filter_data = array( 'filter_category_id' => $child['category_id'], 'filter_sub_category' => true ); $children_data[] = array( 'children'=>$children_data2, 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $result['category_id'] . '_' . $child['category_id']) ); } $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { $caimage = $this->model_tool_image->resize($result['image'], 100, 100); } else { $caimage = $caimage = $this->model_tool_image->resize('no_image.png', 100, 100); } $data['categories'][] = array( 'children' => $children_data, 'column' => $result['column'] ? $result['column'] : 1, 'image' => $caimage, 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url) ); } category.tpl
      <div class="row cat_with_img"> <div class="col-sm-12"> <?php foreach ($categories as $category) { ?> <div class="col-md-4"> <?php if ($category['image']) { ?> <div class="image"> <a href="<?php echo $category['href']; ?>"><img src="<?php echo $category['image']; ?>" alt="<?php echo $category['name']; ?>" /></a> </div> <?php } ?> <a href="<?php echo $category['href']; ?>"><strong><?php echo $category['name']; ?></strong></a> <?php if ($category['children']) { ?> <?php foreach (array_chunk($category['children'], ceil(count($category['children']) / $category['column'])) as $children) { ?> <ul class="list-unstyled"> <?php foreach ($children as $child) { ?> <?php foreach($child['children'] as $child2) { if ($child['name'] == $category['name']) { ?> <ul> <li><a href="<?php echo $child2['href']; ?>"><?php echo $child2['name']; ?></a></li> </ul> <?php } } } ?> </ul> <?php } ?> <?php } ?> </div> На версии 2.1.0.1 работает 100%.
      Кто сделает более изящно - будем рады )))
       

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

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