Всего: 2 1 2 >
 Подкатегории в блоке категории
xaristarhov
Новичок
: 8
: 08-05-2013


24-05-2015 22:17
Добрый день, можно ли вывести подкатегории и каким способом?
В блоке категорий должны быть подкатегории с раскрывающимся списком, стили и тд смогу сделать сам :yes:
Мне нужно понять синтаксис вывода, в данный момент в файле находится стандартный код

Код:
<div class="blockcategories_footer">
<!-- Block categories module -->
    <h4 class="title_block">{l s='Categories' mod='blockcategories'}</h4>
<div class="category_footer" style="float:left;clear:none;width:{$widthColumn}%">
    <div style="float:left" class="list">
        <ul class="tree {if $isDhtml}dhtml{/if}">
    
        {foreach from=$blockCategTree.children item=child name=blockCategTree}
            {if $smarty.foreach.blockCategTree.last}
                {include file="$branche_tpl_path" node=$child last='true'}
            {else}
                {include file="$branche_tpl_path" node=$child}
            {/if}
        
            {if ($smarty.foreach.blockCategTree.iteration mod $numberColumn) == 0 AND !$smarty.foreach.blockCategTree.last}
        </ul>
    </div>
</div>

<div class="category_footer" style="float:left;clear:none;width:{$widthColumn}%">
        <div style="float:left" class="list">
        <ul class="tree {if $isDhtml}dhtml{/if}">
            {/if}
            {/foreach}
        </ul>
    </div>
</div>
<br class="clear"/>
<!-- /Block categories module -->
</div>
 
  
Алекс


Администратор
: 4516
: Красноярск
: 29-05-2009


25-05-2015 00:41
Цитата:( xaristarhov @ 24-05-2015 23:17 Смотреть сообщение )
можно ли вывести подкатегории и каким способом?

Опишите задачу более подробнее.

Отобразить блок категорий можно установив модуль blockcategories и добавив данный модуль в необходимые хуки.

Цитата:( xaristarhov @ 24-05-2015 23:17 Смотреть сообщение )
Мне нужно понять синтаксис вывода, в данный момент в файле находится стандартный код

Уточните название файла.
Если о файле "blockcategories_footer.tpl" - этот файл для хука "footer".
 
  
xaristarhov
Новичок
: 8
: 08-05-2013


25-05-2015 05:31
Раскрывающиеся списки товаров в подкатегориях,
тобишь Название подкатегории как оглавление
и далее идет блок самой подкатегории с выводом

Допустим, категория у нас называется Дополнительно, в которую входят подкатегории
1, 2, 3

соответственно нужен вывод подкатегорий с товарами, одновременно все

<Подкатегория 1>
<Товары, входящие в нее>

<Подкатегория 2>
<Товары, входящие в нее>

<Подкатегория 3>
<Товары, входящие в нее>

 
  
Алекс


Администратор
: 4516
: Красноярск
: 29-05-2009


26-05-2015 10:34
Где необходимо отображать данный блок?
Если в хуках "leftColumn" / "rightColumn" реализовать подобное можно на основе модуля "blockcategories".

Если выводить на отельной странице необходимо переписывать контроллер "CategoryController" или писать отдельный модуль с контроллерами.
 
  
xaristarhov
Новичок
: 8
: 08-05-2013


27-05-2015 05:02
Реализовать нужно на основе блока категорий, в карточке товара
 
  
Алекс


Администратор
: 4516
: Красноярск
: 29-05-2009


27-05-2015 13:15
Цитата:( xaristarhov @ 27-05-2015 06:02 Смотреть сообщение )
Реализовать нужно на основе блока категорий, в карточке товара


Откройте файл /modules/blockcategories/blockcategories.php
Код:
public function getTree($resultParents, $resultIds, $maxDepth, $id_category = null, $currentDepth = 0)

замените на:
Код:
public function getTree($resultParents, $resultIds, $maxDepth, $id_category = null, $currentDepth = 0, $products = false)


после:
Код:
if (is_null($id_category))
    $id_category = $this->context->shop->getCategory();

добавьте:
Код:
$category = new Category($id_category);
$products = $category->getProducts($this->context->language->id, null, 999);


Код:
$children[] = $this->getTree($resultParents, $resultIds, $maxDepth, $subcat['id_category'], $currentDepth + 1);

замените на:
Код:
$children[] = $this->getTree($resultParents, $resultIds, $maxDepth, $subcat['id_category'], $currentDepth + 1, $products);


после:
Код:
'desc'=>  $resultIds[$id_category]['description'],

добавьте:
Код:
'products' => $products,


Откройте файл /themes/тема/modules/blockcategories/category-tree-branch.tpl

до:
Код:
{if $node.children|@count > 0}

добавьте:
Код:
{if isset($node.products) && $node.products|@count > 0}
    {foreach from=$node.products item=product}
        {$product.id_product}
        {$product.name}
    {/foreach}
{/if}
 
  
kda


Новичок
: 13
: 04-09-2015


15-10-2015 11:18
Подскажите пожалуйста, а как отобразить всего несколько товаров у каждой подкатегории, вот как например:


Не используйте сторонние сервисы для размещения изображений (функционал данного форума позволяет прикладывать изображения к сообщению).


Сообщение отредактировал Алекс (15-10-2015 12:45)


:
f5332-clip-336kb.jpg - 80.16KB, : 545 ()
 
 
Алекс


Администратор
: 4516
: Красноярск
: 29-05-2009


15-10-2015 11:56
Цитата:( kda @ 15-10-2015 12:18 Смотреть сообщение )
как отобразить всего несколько товаров у каждой подкатегории

Файл: /controllers/front/CategoryController.php
после:
Код:
if ($subCategories = $this->category->getSubCategories($this->context->language->id))
{

добавьте подобный код:
Код:
if (sizeof($subCategories))
{
    foreach($subCategories as &$cat)
    {
        $tmp_cat = new Category((int)$cat['id_category']);
        $cat['products'] = $tmp_cat->getProducts($this->context->language->id, 1, 8);
    }
}

В шаблоне: /themes/тема/category.tpl разберите $subcategories.
 
  
kda


Новичок
: 13
: 04-09-2015


15-10-2015 16:41
Спасибо за наводку на
Цитата:( Алекс @ 15-10-2015 10:56 Смотреть сообщение )
/controllers/front/CategoryController.php

Поковырялся немного и вывел как мне нужно, чуть позже(вечером) опишу как вывел.

На будущее: буду пользоваться встроенной загрузкой изображений, извиняюсь.
 
 
kda


Новичок
: 13
: 04-09-2015


19-10-2015 15:53
В общем решение вышло таким:
(проверял только на версии 1.6.1.0)
в шаблоне controllers/front/CategoryController.php изменил функцию assignSubcategories() на такую:
Цитата:
protected function assignSubcategories()
{
if ($sub_categories = $this->category->getSubCategories($this->context->language->id))
{
$subcategory_objects=array();
$this->context->smarty->assign("andr_lang",intval($cookie->id_lang));
foreach ($sub_categories as $subcategory)
{
$sub=new Category(intval($subcategory['id_category']),intval($cookie->id_lang));
$subcategory_objects[$subcategory['id_category']]=$sub;
}
//var_dump($subcategory_objects);
$this->context->smarty->assign("subcategories_objects",$subcategory_objects);


$this->context->smarty->assign(array(
'subcategories' => $sub_categories,
'subcategories_nb_total' => count($sub_categories),
'subcategories_nb_half' => ceil(count($sub_categories) / 2)
));
}
}

Далее в каталоге темы открыл category.tpl и заменил {if isset($subcategories)} на
Цитата:
{if isset($subcategories)}
<div id="subcategories" class="titled_box ">

<ul class="clearfix">
{foreach from=$subcategories item=subcategory name=subcategories}
<li class="categories_box">
<a class="" href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}" title="{$subcategory.name|escape:'htmlall':'UTF-8'}">
<h3>{$subcategory.name|escape:'htmlall':'UTF-8'}</h3>
</a>
</li>
{assign var="subcategory_id" value=$subcategory.id_category}
{assign var="subcategory_object" value=$subcategories_objects.$subcategory_id}
{include file="./product-list-sub.tpl" products=$subcategory_object->getProducts('1','1','3')} <!-- 3 это количество товаров из этой категории-->

{/foreach}
</ul>
</div>
{/if}

А также создал шаблон product-list-sub.tpl из шаблона product-list.tpl


Всё, может кому пригодится.
 
 
   
Всего: 2 1 2 >