Автор Тема: Как сделать табличный вывод товаров.  (Прочитано 7650 раз)

22 Февраля 2014, 19:51:47
  • Ветеран
  • *****
  • Сообщений: 105584
  • Репутация: +39547/-0
    • Просмотр профиля
    • Webstudio UwK
Prestashop 1.5
Для того, чтобы выводить товары в табличном (grid) виде, нужно:

1. Изменить шаблон страницы категории.
Это файл: /themes/default/product-list.tpl
Вывод 4 товаров в 1 ряд:
{if isset($products)}
    <ul id="product_list" class="clearfix">
    {foreach from=$products item=product name=products}
    <li class="ajax_block_product {if $smarty.foreach.products.first}first_item{elseif $smarty.foreach.products.last}last_item{/if} {if $smarty.foreach.products.iteration%4 == 0}last_row_item{else}item{/if}">
        <a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}">
           <img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} />
            {if isset($product.new) && $product.new == 1}<span class="new">{l s='New'}</span>{/if}
        </a>
        <p class="clear"></p>
        <h3><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|escape:'htmlall':'UTF-8'|truncate:26:'...':true}</a></h3>
        <div class="content_price">
            {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price" style="display: inline;">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span><br />{/if}
                        {if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}<span class="availability">{if ($product.allow_oosp || $product.quantity > 0)}{l s='Available'}{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}{l s='Product available with different options'}{else}{l s='Out of stock'}{/if}</span>{/if}
            {if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="on_sale">{l s='On sale!'}</span>
                            {elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="discount">{l s='Reduced price!'}</span>
                            {else}
                            <span style="height:16px; margin: 5px 0; display: block"></span>
            {/if}
            {if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE}
                {if ($product.allow_oosp || $product.quantity > 0)}
                    {if isset($static_token)}
                        <a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}&token={$static_token}", true)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a>
                    {else}
                        <a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}", true)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a>
                    {/if}                     
                {else}
                    <span class="exclusive"><span></span>{l s='Add to cart'}</span><br />
                {/if}
            {/if}
            {if isset($comparator_max_item) && $comparator_max_item}
                <p class="compare">
                    <input type="checkbox" class="comparator" id="comparator_item_{$product.id_product}" value="comparator_item_{$product.id_product}" {if isset($compareProducts) && in_array($product.id_product, $compareProducts)}checked="checked"{/if} />
                    <label for="comparator_item_{$product.id_product}">{l s='Select to compare'}</label>
                </p>
            {/if}     
        </div>
    </li>
    {/foreach}
    </ul>
{/if}

2. Изменить файл стилей
/themes/default/css/product_list.css
ul#product_list {
    list-style-type: none
}
    #product_list li {
        text-align: center;
        float: left;
        width: 126px; /* Ширина блока зависит от ширины центральной колонки вашей темы*/
        height: 300px;  /* Высота блока складывается из высоты картинки, заголовка, описания и прочих элементов */
        padding: 16px;
        margin-bottom: 14px;
        margin-right: 10px;
        background-color: #f9f9f9
    }
    #product_list li.last_row_item {margin-right: 0;clear:both;}
 
    #product_list li a {
        color: #374853;
        text-decoration: none
    }
    #product_list a.product_img_link {
    overflow:hidden;
    position:relative;
    float: left;
    display:block;
    border: 1px solid #ccc
    }
    #product_list a.product_img_link img {
        display: block;
        vertical-align: bottom
    }
 
    #product_list li span.new {
        display: block;
        position: absolute;
        top: 15px;
        right:-30px;
        padding: 1px 4px;
        width: 101px;
        font-size:10px;
        color: #fff;
        text-align: center;
        text-transform: uppercase;
        -moz-transform: rotate(45deg);
        -webkit-transform: rotate(45deg);
        -o-transform:rotate(45deg);
        -ms-transform: rotate(45deg);
        background-color: #990000
    }
    #product_list li h3 {
        padding:0 0 10px 0;
        font-size:13px;
        color:#000
    }
 
    #product_list li p.product_desc {
        overflow: hidden;
        padding:0;
        line-height:16px;
    }
    #product_list li p.product_desc,
    #product_list li p.product_desc a {
        color:#666;
    }
 
    #product_list li .discount, ul#product_list li .on_sale, ul#product_list li .online_only {
        display: block;
        font-weight: bold;
        margin: 5px 0;
        padding: 1px 5px;
        color: #990000;
        text-transform: uppercase
    }
    #product_list li .discount {
        display: inline-block;
        font-size: 10px;
        color: #fff;
        background: none repeat scroll 0 0 #9B0000
    }
 
    #product_list li .content_price {
        width: 142px;
        float: left;
    }
        #product_list li .price {
            display: block;
            padding-bottom: 15px;
            font-weight:bold;
            font-size: 16px;
            color:#990000
        }
        #product_list li span.availability {
            display:none; /* remove to show availability */
            color: #488C40
        }
    #product_list li .ajax_add_to_cart_button {
        padding-left: 20px
    }
    #product_list li .ajax_add_to_cart_button span {
        display: block;
        position: absolute;
        top: -1px;
        left: -12px;
        height: 26px;
        width: 26px;
        background: url(../img/icon/pict_add_cart.png) no-repeat 0 0 transparent
    }
    #product_list li p.compare {padding-bottom: 0;margin-top: 10px;}
Cоздание интернет сайтов Webstudio UwK
15 Марта 2014, 21:22:37
Ответ #1
  • Новичок
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо конечно но почему то у меня выводит 3 в ряд может надо что то исправить
15 Марта 2014, 23:09:14
Ответ #2
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33028
  • Репутация: +26761/-0
    • Просмотр профиля
Цитировать
width: 126px; /* Ширина блока зависит от ширины центральной колонки вашей темы*/
Меньше сделай ширину.
15 Марта 2014, 23:14:19
Ответ #3
  • Новичок
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
25 Июня 2014, 12:33:31
Ответ #4
  • Фрилансер
  • *
  • Сообщений: 154
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день. были по 1 товару в ряд. Сделала как написано у вас и получилось,что они друг на друга наезжают.
1. Что надо исправить,чтобы не 4,а 3 товара были в ряд.
2. Изображения почему не открываются? в шаблоне пересоздала миниатюры и поменяла размер под это количество в ряд
25 Июня 2014, 12:55:41
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 13627
  • Репутация: +14563/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Что нужно менять, завист от темы. В стандарной теме prestashop 1.6 нужно поменять названия классов.
col-xs-12 col-sm-4 col-md-3на классы большего размера.
25 Июня 2014, 13:39:25
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 980
  • Репутация: +5/-0
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
А как сделать вариант с переключением туда и обратно grid - list
Не боги горшки обжигают, не зачем им такой хренью заниматься.
25 Июня 2014, 13:45:47
Ответ #7
  • Фрилансер
  • *
  • Сообщений: 249
  • Репутация: +3/-0
    • Просмотр профиля
Скачайте prestashop 1.6 там есть переключатель лист-таблица.
25 Июня 2014, 17:59:06
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 154
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Что нужно менять, завист от темы. В стандарной теме prestashop 1.6 нужно поменять названия классов.
col-xs-12 col-sm-4 col-md-3на классы большего размера.


у меня версия 1.5.6
{if isset($products)}
    <ul id="product_list" class="clearfix">
    {foreach from=$products item=product name=products}
    <li class="ajax_block_product {if $smarty.foreach.products.first}first_item{elseif $smarty.foreach.products.last}last_item{/if} {if $smarty.foreach.products.iteration%4 == 0}last_row_item{else}item{/if}">
        <a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}">
           <img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} />
            {if isset($product.new) && $product.new == 1}<span class="new">{l s='New'}</span>{/if}
        </a>
здесь что поменять для отображения 3х в ряд.

после того как поменяла с 1 товара на 4 в ряд пропали изображения. http://f5.s.qip.ru/TEGM1TpC.png
25 Июня 2014, 18:35:38
Ответ #9
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33028
  • Репутация: +26761/-0
    • Просмотр профиля
В prestashop 1.5 нужно шаблон переделывать и стили менять. Была такая тема. Там не получиться только класс поменять. Вверху написано как можно сделать.
26 Июня 2014, 00:27:57
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 980
  • Репутация: +5/-0
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Скачайте prestashop 1.6 там есть переключатель лист-таблица.

Мои сайты на этой версии пока работать не могут только 1.4.х.х
Не боги горшки обжигают, не зачем им такой хренью заниматься.
26 Июня 2014, 10:51:14
Ответ #11
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33028
  • Репутация: +26761/-0
    • Просмотр профиля
Не нужно всю тему ставить, доставточно изменить шаблон product-list.tpl и добавить стили их темы prestashop 1.6.
30 Июня 2014, 12:56:31
Ответ #12
  • Фрилансер
  • *
  • Сообщений: 154
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всё сделала Виталий написал. Версия 1.5.6. в ряд встали 3 товара
Изображений нет.
01 Июля 2014, 00:17:11
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 86326
  • Репутация: +25417/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Попробуйте перегенерировать изображения. Проверьте формат у избражений указан правильно или нет.
01 Июля 2014, 13:07:43
Ответ #14
  • Фрилансер
  • *
  • Сообщений: 154
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Изображения перегенерировала, всё равно остаётся проблема.
Если просматривать код страницы,то пути к изображениям разные. На главной странице в ИЗБРАННОМ  путь <img class="round3" src="http://savebeauty.ru/27-large_default/pomada.jpg" alt="Помада"> , а в категории <img src="http://savebeauty.ru/29-home/pomada.jpg" alt="Помада" width="130" height="160">