Смарти-теги Shop-Script Premium (Часть 2 – home.tpl)

Продолжаю первый пост о смарти тегах в Shop-Script.
Сейчас я буду описывать теги из шаблона home.tpl.html, в котором выводятся категории (на главной) и спецпредложения. Как и в прошлый раз описывать я буду на основе шаблона tmpl0
Приветствие
Этот текст обычно или убирают, или переделывают в текст о магазине. Выводится тегом {$smarty.const.STRING_GREETINGS}, текст которого можно поменять в языковом файле
Категории
Как и любой блок вывод категорий начинается с секции и заканчивается закрытием секции
{section name=i loop=$root_categories}
{/section}
Таким же образом выводятся абсолютно все блоки, в которых есть повторяющиеся элементы (например столбцы товаров)
Далее в этой секции идет вот такая конструкция
{if $smarty.section.i.index is div by 2}
{/if}
.... some code ....
{if ($smarty.section.i.index+1) is div by 2}
{/if}
обозначающая, что внутри строки содержимое будет обработано дважды (в данном случае речь идет про столбцы таблицы). Цифру можно менять на любую, чтобы к примеру сделать вывод категорий на главной в 4 столбца
Теперь перейдем к самому главному, самим тегам, отвечающим за вывод категорий. Первым идет условие за вывод фотографии корневой категории
{if $root_categories[i][3] ne ""}{/if}
Ну а внутри этого условия ссылка и фотография
<a href="index.php?categoryID={$root_categories[i][0]}">
</a>
где присутствует три тега:
- {$root_categories[i][0]} – id категории
- {$root_categories[i][3]} – имя фото
- {$root_categories[i][1]} – название категории
Вывод подкатегорий осуществялется при помощи следующей конструкции:
{assign var="tmp" value=0}
{section name=j loop=$root_categories_subs}
{if $root_categories_subs[j][3] == $root_categories[i][0]}
{if $tmp == 1}<span class="olive">|</span>
{else}
{assign var="tmp" value=1}
{/if}
<a href="index.php?categoryID={$root_categories_subs[j][0]}">{$root_categories_subs[j][1]}</a>
{/if}
{/section}
где:
- {section name=j loop=$root_categories_subs}{/section} – сама секция вывода подкатегорий
- {if $root_categories_subs[j][3] == $root_categories[i][0]}{/if} – условие, что у субкатегорий верная корневая категория
- {if $tmp == 1}<span class=”olive”>|</span>{else}{assign var=”tmp” value=1}{/if} – условие, что после каждой ссылки будет выведен знак |, но если ссылка последняя, то после неё ставиться ничего не будет
- <a href=”index.php?categoryID={$root_categories_subs[j][0]}”>{$root_categories_subs[j][1]}</a> – вывод самой ссылки
- {$root_categories_subs[j][0]} – id подкатегории
- {$root_categories_subs[j][1]} – название подкатегории
Больше никаких тегов для вывода категорий на главной странице не используется
Спецпредложения
Здесь практически тоже самое, что и у категорий. Начинается все также с вывода секции и вывода двух столбцов
{section name=i loop=$special_offers}
{if $smarty.section.i.index is div by 2}
{/if}
.... some code ....
{if ($smarty.section.i.index+1) is div by 2}
{/if}
{/section}
Внутри секции есть всего 4 тега:
- {$special_offers[i][0]} – id товара
- {$special_offers[i][1]} – название товара
- {$special_offers[i][2]} – имя фотографии товара
- {$special_offers[i][3]} – цена товара
В полном виде это будет выглядеть вот так:
<table style="width:100%;">
<tr>
<td colspan="2"><a href="index.php?productID={$special_offers[i][0]}"><img src="products_pictures/{$special_offers[i][2]}" alt="{$special_offers[i][1]}" ></a></td>
</tr>
<tr>
<td style="text-align:center;"><a href="index.php?productID={$special_offers[i][0]}">{$special_offers[i][1]}</a></td>
<td style="text-align:right;"><span style="color:red;"><strong>{$special_offers[i][3]}</strong></span></td>
</tr>
</table>
И на этом вывод спецпредложений заканчивается
В следующем посте про теги шоп-скрипта я буду описывать уже теги из шаблона category.tpl.html (каталог)
Tweet


Комментарии
а вы не подскажете, как задать условие только для главной страницы в смарти, т.е. чтобы блок текста был только на главной?
подскажу конечно
{$special_offers[i][2]} – данная конструкция отображает один из трех вариантов картинки товара. В моём случае не тот. Как поменять картинку?
а какую надо вывести? Если большую, то просто поставьте цифру 5, заместо двойки
есть три картинки:
1. маленькая фотография (у меня используется в качестве стандартной фотографии в категории) – хочу, чтобы в спецпредложениях отображалась она.
2. фотография (у меня отображается в описании конкретного товара) – сейчас отображается в специальных предложениях.
3. большая (не использую и не загружаю)
Поставил цифру 5 – в результате картинки просто не заггрузились.
Важный момент. Я использую shop-script free.
Как посмотреть под какими цифрами в теге special_offers какие фотографии назначены? Чем это определяется?
откройте файл includes/home.php и скопируйте сюда запрос в бд
В премиум версии он выглядит следующим образом
Я как раз до него добрался
Я так понимаю картинку выбирает эта конструкция: if (trim($row1[2])!=”” && file_exists(”./products_pictures/$row1[2]“))
Но, это выше моих знаний…
ну поидее подставление цифры 5 должно было сработать, если конечно картинки в фри версии не по другому в бд лежат. Завтра поставлю фри версию. Посмотрю
я посмотрел фри версию. Там фотографии товара в одной таблице с продуктами. Поэтому, чтобы сделать другую фотографию, открывайте файл includes/home.php и правьте sql-запрос.
Далее что и как менять:
1) заместо средней картинки, превью (маленькую): слово picture меняйте на thumbnail
2) заместо средней картинки, большое фото: слово picture меняйте на big_picture
В шаблоне все оставить по-умолчанию, т.е. {$special_offers[i][2]}
Можно в запрос дописать, чтобы дергались из базы еще и превьюшки и большие фотки. Тогда запрос будет выглядеть следующим образом:
В шаблоне переменные для вывода фоток будут следующие:
- {$special_offers[i][2]} среднее фото
- {$special_offers[i][4]} маленькое фото
- {$special_offers[i][5]} большое фото
Спасибо тебе, добрый человек! Теперь все работает как надо
пжалуста
Здрасте еще раз. Вот тут очередная задача не решается с shop-script’ом free. Прошу помощи
Описание ситуации: http://forum.webasyst.ru/viewtopic.php?id=6491
с таким не могу помочь. Я не кодер и настолько не ковырял фри версию
Как заменить index.tpl.html на index2.tpl.htm только для главной страницы?
это надо лезти в index.php и ставить условие. В этом я не силен
Как вставить запрос в home.php?
я про
$q1 = db_query(“SELECT productID, name, picture, Price, thumbnail, big_picture FROM “.PRODUCTS_TABLE.” where productID=$row[0]“) or die (db_error());
все вопрос отпал, в 4 утра первый раз видящему эти “коды” челу трудно)) нашел, большое спасибо автору блога!
всегда пожалуйста
Приветствую. Мой вопрос может показаться совсем нубский, стоит шоп скрипт премиум, на главной выводятся разделы по два столбца, хочу сделать по три столбца и собственно немогу найти где это меняется. Стоит шоп скрипт премиум
Млин… невнимательно читал ))
Здравствуйте.
Лодскажите как ограничить загрузку фотографий товара по обьему.
Спасибо …
@Роман:
Стандартными средствами никак