Автор Тема: Модуль Горизонтального меню, изменить  (Прочитано 2852 раз)

18 Ноября 2013, 16:54:32
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день, коллеги!

Столкнулся с такой проблемой: необходимо в горизонтальном меню в подкатегориях выводить не название подкатегории, а картинку, которая будет загружаться при создании подкатегории. Не могли бы вы подсказать, где найти код этого главного меню. В blocktopmenu.tpl стоит только переменная $MENU, а вот где содержимое этой переменной - не могу понять. Заранее благодарю за помощь!
18 Ноября 2013, 17:41:39
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 33028
  • Репутация: +26761/-0
    • Просмотр профиля
Файл blocktopmenu.php
private function getCategory(
18 Ноября 2013, 17:46:49
Ответ #2
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо! Сам только что шерстил этот код...

вот я вижу формирование подкатегорий, насколько я понимаю
if (!empty($is_intersected))
{
$this->_menu .= '<li '.$selected.'>';
$this->_menu .= '<a href="'.Tools::HtmlEntitiesUTF8($category_link).'">'.$category->name.'</a>';

if (count($children))
{
$this->_menu .= '<ul>';

foreach ($children as $child)
$this->getCategory((int)$child['id_category'], (int)$id_lang, (int)$child['id_shop']);

$this->_menu .= '</ul>';
}
$this->_menu .= '</li>';
}
это вроде как формирование подкатегорий... как мне найти и где найти формирование <li></li> для подкатегорий, чтобы вместо названия подкатегории туда всунуть картинку загружаемую... заранее спасибо, а то разобраться сам не могу ((
18 Ноября 2013, 17:59:34
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 33028
  • Репутация: +26761/-0
    • Просмотр профиля
Открытие тега
$this->_menu .= '<li '.$selected.'>';ссылка
$this->_menu .= '<a href="'.Tools::HtmlEntitiesUTF8($category_link).'">'.$category->name.'</a>';закрытие
$this->_menu .= '</li>';
18 Ноября 2013, 18:11:15
Ответ #4
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Удаляю код $category->name и ничего на сайте не меняется ((

Не могу понять, как быть...

Насколько я понял, чтобы вставить в подкатегории картинку, которую можно загружать при создании категорий, нужно найти место, где формируется меню, список подкатегории и вставить вместо имя категории переменную с выводом картинки, так?

В .tpl субкатегорий темы нашел вывод картинки на странице подкатегорий, ее код вот такой

<div id="subcategories">
<h3>{l s='Subcategories'}</h3>
<ul class="inline_list">
{foreach from=$subcategories item=subcategory}
<li class="clearfix">
<a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}"
title="{$subcategory.name|escape:'htmlall':'UTF-8'}" class="img">
{if $subcategory.id_image}
<img src="{$link->getCatImageLink($subcategory.link_rewrite, $subcategory.id_image, 'medium_default')|escape:'html'}"
alt="" width="{$mediumSize.width}" height="{$mediumSize.height}" />
{else}
<img src="{$img_cat_dir}default-medium_default.jpg" alt="" width="{$mediumSize.width}" height="{$mediumSize.height}" />
{/if}
</a>
<a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}" class="cat_name">{$subcategory.name|escape:'htmlall':'UTF-8'}</a>
{if $subcategory.description}
<p class="cat_desc">{$subcategory.description}</p>
{/if}
</li>
{/foreach}
</ul>
<br class="clear"/>
</div>

Т.е. вывод картинки тут идет

{if $subcategory.id_image}
<img src="{$link->getCatImageLink($subcategory.link_rewrite, $subcategory.id_image, 'medium_default')|escape:'html'}"
alt="" width="{$mediumSize.width}" height="{$mediumSize.height}" />
{else}
<img src="{$img_cat_dir}default-medium_default.jpg" alt="" width="{$mediumSize.width}" height="{$mediumSize.height}" />
{/if}

Это нужно поместить, вместо названия подкатегории в месте, где формируется подкатегория... Поможете?..
18 Ноября 2013, 18:27:18
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 33028
  • Репутация: +26761/-0
    • Просмотр профиля
Цитировать
Удаляю код $category->name и ничего на сайте не меняется ((
Кеш отключить нужно.
Если поставить вместо "$category->name" любое значение, то в меню будет видно это значение.
Для подставновки картинки нужно удалить имя категории и вставить переменную изображения.
Не так как в шаблонах tpl.
18 Ноября 2013, 20:41:20
Ответ #6
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если поставить вместо "$category->name" любое значение, то в меню будет видно это значение.
Для подставновки картинки нужно удалить имя категории и вставить переменную изображения.
Не так как в шаблонах tpl.
Уже разобрался слегка... там запущен цикл.., если есть подкатегории опять запускается функция getCategory и повторяет все шаги. Придумано хорошо, но получается, что если заменить $category->name на что-то другое, то изменяться не только пункты подменю, а и все остальные пункты меню. А мне нужно картинки дать только подпунктам меню ((
19 Ноября 2013, 13:47:44
Ответ #7
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22220
  • Репутация: +17111/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Функция формирования меню рекурсивная, вызывает сама себя. Для различия категорий и подкатегорий есть переменная уровня
$category->level_depth
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
19 Ноября 2013, 15:48:39
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 13642
  • Репутация: +14563/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
заменить $category->name на что-то другое
Можно так
if ($category->level_depth > 1){
$category_link = $category->getLink();
$img_category =  '<img src="'.$this->context->link->getCatImageLink($category->link_rewrite, $id_category, 'small_default').'" />';
}
и заменить имя на картинку
if (!empty($is_intersected))
{
$this->_menu .= '<li '.$selected.'>';
$this->_menu .= '<a href="'.Tools::HtmlEntitiesUTF8($category_link).'">'.$img_category.'</a>';

21 Ноября 2013, 15:17:22
Ответ #9
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за подсказки.

Подскажите, какая переменная отвечает за id категории? Хочу прописать еще условие, чтобы подкатегории отрисовывались только для категории с определенным id... спасибо!
24 Ноября 2013, 00:31:50
Ответ #10
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
24 Ноября 2013, 14:16:52
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 33028
  • Репутация: +26761/-0
    • Просмотр профиля
25 Ноября 2013, 23:14:09
Ответ #12
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
05 Августа 2014, 02:12:28
Ответ #13
  • Новичок
  • *
  • Сообщений: 1
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Прошу сбросить мне эти отредактированые файлы на neolvg@gmail.com, поскольку не могу разобраться сам в коде...