Автор Тема: Prestashop 1.6 в категории вывести 4-5 товаров в ряд  (Прочитано 1873 раз)

16 Декабрь 2015, 17:26:52
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В Prestashop 1.6 в категории, по умолчанию, выводится 3 товара в ряд (сетка), боковые колонки отключены за ненадобностью. Надо же, что-бы было 4 или 5 товаров в ряд.

Меняла разметку в product_list.tpl, вроде получилось, но оказалось, что при переходе "сетка / список" все сбивается.

{if isset($products) && $products}
{*define number of products per line in other page for desktop*}
{if $page_name !='index' && $page_name !='product'}
{assign var='nbItemsPerLine' value=4}
{assign var='nbItemsPerLineTablet' value=2}
{assign var='nbItemsPerLineMobile' value=3}
{else}
{assign var='nbItemsPerLine' value=4}
{assign var='nbItemsPerLineTablet' value=3}
{assign var='nbItemsPerLineMobile' value=2}
{/if}
{*define numbers of product per line in other page for tablet*}
{assign var='nbLi' value=$products|@count}
{math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines}
{math equation="nbLi/nbItemsPerLineTablet" nbLi=$nbLi nbItemsPerLineTablet=$nbItemsPerLineTablet assign=nbLinesTablet}
<!-- Products list -->
<ul{if isset($id) && $id} id="{$id}"{/if} class="product_list grid row{if isset($class) && $class} {$class}{/if}">
{foreach from=$products item=product name=products}
{math equation="(total%perLine)" total=$smarty.foreach.products.total perLine=$nbItemsPerLine assign=totModulo}
{math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineTablet assign=totModuloTablet}
{math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineMobile assign=totModuloMobile}
{if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if}
{if $totModuloTablet == 0}{assign var='totModuloTablet' value=$nbItemsPerLineTablet}{/if}
{if $totModuloMobile == 0}{assign var='totModuloMobile' value=$nbItemsPerLineMobile}{/if}
<li class="ajax_block_product{if $page_name == 'index'} col-xs-12 col-sm-4 col-md-3{else} col-xs-12 col-sm-6 col-md-3{/if}{if $page_name == 'product'} col-xs-12 col-sm-4 col-md-4 {else} col-xs-12 col-sm-6 col-md-3{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLine == 0} last-in-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLine == 1} first-in-line{/if}{if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModulo)} last-line{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLineTablet == 0} last-item-of-tablet-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLineTablet == 1} first-item-of-tablet-line{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLineMobile == 0} last-item-of-mobile-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLineMobile == 1} first-item-of-mobile-line{/if}{if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModuloMobile)} last-mobile-line{/if}">
<div class="product-container" itemscope itemtype="https://schema.org/Product">

Надеюсь на помощь. Спасибо.
16 Декабрь 2015, 17:34:58
Ответ #1
17 Декабрь 2015, 00:33:08
Ответ #2
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Извините не смогла в поиске найти тему.
За ссылки, конечно спасибо, но только я все это делала, а результат плачевный. У всех, видимо все получается или они просто не пробовали после всех манипуляций переключать "сетка / список". В сетке все как надо, а список сжимается.

Может еще где-то нужно, что-то менять?

Очень надеюсь на помощь
17 Декабрь 2015, 11:48:35
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если делать как написано в ссылках, то меняется изображение только для табличного вида. У вас наверное тема не стандарная и классы в стилях общие для всех видов. Нужно поправить стили для вывода списка товаров. В браузере нажимаете F12, запускаете косоль вебмастера, выделяете элемент, который хотите изменить и в правом углу увидите стили. Пробывать менять можно прямо в браузере.
17 Декабрь 2015, 18:21:55
Ответ #4
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Хорошо в product_list.tpl, я так понимаю, дается разметка для grid, но ведь должна же быть где-то разметка и для List. Если бы можно было все подогнать в  визуальном редакторе, я бы не обращалась за помощью.
17 Декабрь 2015, 19:14:43
Ответ #5
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В визуальном редакторе нельзя менять стили и шаблоны.

Шаблон для страницы категорий /themes/default-bootstrap/product-list.tpl в нем разметка одна для list и grid.
Отличие в стилях в файле /themes/default-bootstrap/css/product_list.css

У вас тема отличается от стандарной, поэтому никто вам не сможет казать почему у вас едет вид списка. Для этого нужно проверить правила стилей.
Помощь это когда вам говорят в каком файле, в каком шаблоне, какой элемент шаблона или правила стилей нужно изменить, а не делают за вас всю работу.
Если вы не знаете что такое tpl+css, то обратитесь к срециалисту, для этого специально созданна ветка - Предложения о работе
18 Декабрь 2015, 12:39:19
Ответ #6
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как ни странно я знаю, что такое tpl и css. А все это я делала на дефолтной теме.

В product-list.tpl изменила
{assign var='nbItemsPerLine' value=3}на

{if isset($products) && $products}
{*define number of products per line in other page for desktop*}
{if $page_name !='index' && $page_name !='product'}
{assign var='nbItemsPerLine' value=4}
{assign var='nbItemsPerLineTablet' value=2}
{assign var='nbItemsPerLineMobile' value=3}
{else}
{assign var='nbItemsPerLine' value=4}
{assign var='nbItemsPerLineTablet' value=3}
{assign var='nbItemsPerLineMobile' value=2}
{/if}
Ничего не произошло, т.к. в разметке указано : <li class="ajax_block_product{if $page_name == 'index' || $page_name == 'product'} col-xs-12 col-sm-4 col-md-3{else} col-xs-12 col-sm-6 col-md-4{/if}После замены col-md-4 на col-md-3 в grid стало, естественно, все как надо отображаться http://pre1.testwebstudio.tk/3-women. Но эта замена тянет за собой разметку List - она тоже перекраивается под col-md-3.
18 Декабрь 2015, 12:45:27
Ответ #7
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
У вас на сайте вообще нет вида Список. При выборе вида Список показывает вид Таблица, только 5 в ряд.
Ошибка где-то в файле javascript /themes/default-bootstrap/js/global.js в функции function display.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
18 Декабрь 2015, 12:52:08
Ответ #8
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
У вас не работает правило для удаления класса 'col-xs-12 col-sm-6 col-md-4' и добавления 'col-xs-12'
function display(view)
{
if (view == 'list')
{
$('ul.product_list').removeClass('grid').addClass('list row');
$('.product_list > li').removeClass('col-xs-12 col-sm-6 col-md-4').addClass('col-xs-12');
Так как вы изменили col-md-4 на col-md-3. Нужно в этой фунции тоже заменить 4 на 3.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
18 Декабрь 2015, 13:22:01
Ответ #9
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В этот файл вообще не лазили, версия 1.6.1.2. Значит ли это, что косяк в самой престе?
18 Декабрь 2015, 13:28:48
Ответ #10
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Попробовала, но теперь слетает по другому ((((
18 Декабрь 2015, 13:42:36
Ответ #11
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
У вас также в /themes/default-bootstrap/js/global.js$('.product_list > li').removeClass('col-xs-12 col-sm-6 col-md-4').addClass('col-xs-12');поэтому и не заменяет.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
18 Декабрь 2015, 17:47:23
Ответ #12
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо большое! Все получилось как надо.