Автор Тема: Как изменить порядок вывода характеристик товара  (Прочитано 3563 раз)

07 Август 2012, 12:45:06
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте!
Подскажите пожалуйста в каком файле настраивается порядок вывода дополнительных характеристик (Features)? У меня сейчас сортировка в обратном алфавитном порядке ... очень некрасиво ...
07 Август 2012, 13:07:38
Ответ #1
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Порядок заполнения этих характеристик виден и в "Свойствах", при добавлении нового товара ...
Как найти эту страницу?
в файле "/controllers/ProductController.php" - не нашел этого
07 Август 2012, 16:39:48
Ответ #2
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Сортировка товаров настраивается в админке.
Заходите в Настройки-Товары.
Выбираете как сортировать:
Сортировать товары:
Сортировка:
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
09 Август 2012, 19:02:46
Ответ #3
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вы немного не поняли вопрос ... меня интересует не сортировка товаров, а порядок вывода характеристик товара на самой странице товара.

здесь нужно копать немного глубже ....

АУ!!! Товарищи специалисты! Реально нужна ваша помощь, сейчас я занят наполнением магазина и мне очень сложно заняться таким подробным копанием в кодах ... я думаю вы не могли не сталкиваться с такой задачей ...

Очень прошу подсказки ...
10 Август 2012, 19:06:59
Ответ #4
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
Чтобы было понятнее приложите картинки. Напишите более подробно.
Вам нужно изменить порядок какие полей?
Описание, Краткое описание, Заголовок, Атрибуты или ...
Где хотите изменять вывод, на странице товара, в админке на странице создания товара, не странице категории (вывод всех товаров) или ...?
12 Сентябрь 2012, 22:00:21
Ответ #5
  • Пользователь
  • **
  • Сообщений: 71
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подниму.
Такая же проблема.
Есть список свойств товара - features
Открываешь страницу товара - под фотками описание и закладка Характеристики Features

в ней название характеристики и значение характеристики, типа

Ширина 38
Хронограф да
Тип мужские
Стекло минеральное
Подсветка стрелок и меток
Материал ремешка каучук
Материал корпуса нерж. сталь
Дополнительные функции Глубиномер до 55 м, сигнал максимального времени погружения, максимальной глубины и декомпрессии, секундомер.
Высота 38
Водостойкость WR200 (200м)

Непонятна логика вывода этих строк.
1.4.9.0 вообще фигачит по алфавиту.
Подскажите, где и что редактировать.

13 Сентябрь 2012, 00:45:18
Ответ #6
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
Можно сделать как было в сортировке категорий. Использование префикса  01, 02, 03 и т.д.
01.Характеристика 1
02.Характеристика 2
03.Характеристика 3.
Тогда при отображении нужно будет просто удалить префикс и показывают только текст.
Добавить сортировку по имени в SQL запрос. В методе  « getFrontFeaturesStatic » класса « Product.php« , примерно в строке 2700, найти следующий код:
self::$_frontFeaturesCache[$id_product.'-'.$id_lang] = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
    SELECT name, value, pf.id_feature
    FROM '._DB_PREFIX_.'feature_product pf
    LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
    LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.')
    WHERE pf.id_product = '.(int)$id_product);
Добавить
ORDER BY fl.`name` ASC');В шаблоне « product.tpl » заменить код:
{foreach from=$features item=feature}
    <li><span>{$feature.name|escape:'htmlall':'UTF-8'}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li>
{/foreach}
на
{foreach from=$features item=feature}
    {if $feature.name|substr:2:1=='.'}
        <li><span>{$feature.name|escape:'htmlall':'UTF-8'|substr:3}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li>
    {elseif $feature.name|substr:3:1=='.'}
        <li><span>{$feature.name|escape:'htmlall':'UTF-8'|substr:4}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li>
    {elseif $feature.name|substr:4:1=='.'}
        <li><span>{$feature.name|escape:'htmlall':'UTF-8'|substr:5}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li>
    {else}
        <li><span>{$feature.name|escape:'htmlall':'UTF-8'}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li>
    {/if}
{/foreach}