Ответить Новая тема Новый опрос 
Всего: 2 1 2 >
 Карта сайта со списком товаров
zedko
Новичок
Сообщений: 60
Регистрация: 22-11-2013


13-08-2014 13:57
Здравствуйте! Возникла необходимость выводить все товары на одной странице для улучшения индексации, прямо как здесь - ссылка удалена
Как это можно реализовать на престе? Спасибо
версия 1.5.6.0


Сообщение отредактировано Алекс 14-08-2014 10:44 ...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


14-08-2014 10:54
Если необходимо выводить список также на странице "карты сайта".

Откройте /controllers/front/SitemapController.php и после:
Код:
parent::initContent();

добавьте:
Код:
$categories = Category::getRootCategory()->recurseLiteCategTree();
foreach ($categories['children'] as &$children)
{
    $products = Product::getProducts($this->context->language->id, 0, 0, 'date_add', 'ASC', $children['id']);
    foreach($products as $product)
        $children['products'][$product['id_product']] = $product['name'];
}

$this->context->smarty->assign('categories', $categories);


Откройте /themes/ваша-тема/sitemap.tpl и добавьте:
Код:
<div class="categTree">
    <h3>Товары</h3>
    <div class="tree_top"><a href="{$base_dir_ssl}" title="{$categories.name|escape:'htmlall':'UTF-8'}">{$categories.name|escape:'htmlall':'UTF-8'}</a></div>
    <ul class="tree">
    {if isset($categories.children)}
        {foreach $categories.children as $child}
        <li {if $child@last}class="last"{/if}>
            <a href="{$child.link|escape:'htmlall':'UTF-8'}" title="{$child.desc|escape:'htmlall':'UTF-8'}">{$child.name|escape:'htmlall':'UTF-8'}</a>
            {if isset($child.products)}
            <ul class="tree">
                {foreach $child.products as $id => $product_name}
                <li {if $child@last}class="last"{/if}>
                    <a href="{$link->getProductLink($id)}">{$product_name|escape:'htmlall':'UTF-8'}</a>
                </li>
                {/foreach}
            </ul>
            {/if}
        </li>
        {/foreach}
    {/if}
    </ul>
</div>


Размещенный выше код выводит только один уровень товаров, если в вашем ИМ используется большее кол-во подкатегорий необходимо переписывать код для реализации рекурсивного вывода товаров.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
zedko
Новичок
Сообщений: 60
Регистрация: 22-11-2013


21-08-2014 18:21
Спасибо, Алекс!
Работает! =)
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
John007
Новичок
Сообщений: 1
Регистрация: 09-11-2014


09-11-2014 22:40
А если существуют подкатегории, то данный метод не работает. Напишите, пожалуйста, способ вывода товаров в карте сайта с подкатегориями
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Tibald
Новичок
Сообщений: 1
Регистрация: 16-01-2015


25-01-2015 09:32
Тоже нужно решение для сайта с подкатегориями..
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
zedko
Новичок
Сообщений: 60
Регистрация: 22-11-2013


06-07-2015 19:11
Заметил досадную вещь, выводятся ссылки и на отключенные товары, таким образом в карте сайта порядка 1800 ссылок на страницы 404. Подскажите, пожалуйста, что подправить, что бы не учитывались выключенные для показа товары.
Большое спасибо!

 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


06-07-2015 19:57
Цитата:( zedko @ 06-07-2015 20:11 Смотреть сообщение )
что подправить, что бы не учитывались выключенные для показа товары.

Код:
$products = Product::getProducts($this->context->language->id, 0, 0, 'date_add', 'ASC', $children['id']);

замените на:
Код:
$products = Product::getProducts($this->context->language->id, 0, 0, 'date_add', 'ASC', $children['id'], true);
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
zedko
Новичок
Сообщений: 60
Регистрация: 22-11-2013


06-07-2015 21:15
Спасибо! Отлично отрабатывает!
p.s. Где то есть описание этих функций, что бы по таким мелочам не беспокоить никого? Если есть, скиньте пжлст ссылочку. =)
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


06-07-2015 21:36
Цитата:( zedko @ 06-07-2015 22:15 Смотреть сообщение )
p.s. Где то есть описание этих функций? Если есть, скиньте пжлст ссылочку. =)

К чему здесь что-то описывать.
Переходите в файл класса, находите метод и смотрите аргументы.
Для Product это файл /classes/Product.php
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
zedko
Новичок
Сообщений: 60
Регистрация: 22-11-2013


06-07-2015 22:33
То что нужно! Спасибо за подсказку
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос 
Всего: 2 1 2 >