JobHub.ru — система автоматизации и управления бизнесом

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

smarty-logo-orange

Продолжаю первый пост о смарти тегах в 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]}">{$root_categories[i][1]|replace:'</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 (каталог)


Комментарии

|
28 Декабрь 2009 в 23:52

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

ОтветитьОтветить
|
28 Декабрь 2009 в 23:55

подскажу конечно

{if $main_content_template == "home.tpl.html"}
..... some code ....
{/if}
ОтветитьОтветить
Андрей
|
18 Апрель 2010 в 18:08

{$special_offers[i][2]} – данная конструкция отображает один из трех вариантов картинки товара. В моём случае не тот. Как поменять картинку?

ОтветитьОтветить
|
18 Апрель 2010 в 18:11

а какую надо вывести? Если большую, то просто поставьте цифру 5, заместо двойки

ОтветитьОтветить
Андрей
|
18 Апрель 2010 в 18:18

есть три картинки:
1. маленькая фотография (у меня используется в качестве стандартной фотографии в категории) – хочу, чтобы в спецпредложениях отображалась она.
2. фотография (у меня отображается в описании конкретного товара) – сейчас отображается в специальных предложениях.
3. большая (не использую и не загружаю)

Поставил цифру 5 – в результате картинки просто не заггрузились.

ОтветитьОтветить
Андрей
|
18 Апрель 2010 в 18:20

Важный момент. Я использую shop-script free.

ОтветитьОтветить
Андрей
|
18 Апрель 2010 в 18:22

Как посмотреть под какими цифрами в теге special_offers какие фотографии назначены? Чем это определяется?

ОтветитьОтветить
|
18 Апрель 2010 в 19:15

откройте файл includes/home.php и скопируйте сюда запрос в бд
В премиум версии он выглядит следующим образом

$q1 = db_query("SELECT productID, name, default_picture, Price, categoryID FROM ".PRODUCTS_TABLE." where productID=$row[0]") or die (db_error());
ОтветитьОтветить
Андрей
|
18 Апрель 2010 в 19:38

Я как раз до него добрался :)

$q1 = db_query("SELECT productID, name, picture, Price FROM ".PRODUCTS_TABLE." where productID=$row[0]") or die (db_error());
		if ($row1 = db_fetch_row($q1))
		{
			if (trim($row1[2])!="" &amp;&amp; file_exists("./products_pictures/$row1[2]"))
			{
				$row1[3] = show_price($row1[3]);
				$result[] = $row1;
			}
		}
ОтветитьОтветить
Андрей
|
18 Апрель 2010 в 19:42

Я так понимаю картинку выбирает эта конструкция: if (trim($row1[2])!=”” && file_exists(”./products_pictures/$row1[2]“))
Но, это выше моих знаний…

ОтветитьОтветить
|
18 Апрель 2010 в 22:14

ну поидее подставление цифры 5 должно было сработать, если конечно картинки в фри версии не по другому в бд лежат. Завтра поставлю фри версию. Посмотрю

ОтветитьОтветить
|
19 Апрель 2010 в 18:17

я посмотрел фри версию. Там фотографии товара в одной таблице с продуктами. Поэтому, чтобы сделать другую фотографию, открывайте файл includes/home.php и правьте sql-запрос.
Далее что и как менять:
1) заместо средней картинки, превью (маленькую): слово picture меняйте на thumbnail
2) заместо средней картинки, большое фото: слово picture меняйте на big_picture

В шаблоне все оставить по-умолчанию, т.е. {$special_offers[i][2]}

Можно в запрос дописать, чтобы дергались из базы еще и превьюшки и большие фотки. Тогда запрос будет выглядеть следующим образом:

$q1 = db_query("SELECT productID, name, picture, Price, thumbnail, big_picture FROM ".PRODUCTS_TABLE." where productID=$row[0]") or die (db_error());

В шаблоне переменные для вывода фоток будут следующие:
- {$special_offers[i][2]} среднее фото
- {$special_offers[i][4]} маленькое фото
- {$special_offers[i][5]} большое фото

ОтветитьОтветить
Андрей
|
19 Апрель 2010 в 20:15

Спасибо тебе, добрый человек! Теперь все работает как надо :)

ОтветитьОтветить
|
19 Апрель 2010 в 22:15

пжалуста

ОтветитьОтветить
Андрей
|
2 Июнь 2010 в 12:42

Здрасте еще раз. Вот тут очередная задача не решается с shop-script’ом free. Прошу помощи :) Описание ситуации: http://forum.webasyst.ru/viewtopic.php?id=6491

ОтветитьОтветить
|
2 Июнь 2010 в 17:02

с таким не могу помочь. Я не кодер и настолько не ковырял фри версию

ОтветитьОтветить
Как заменить index.tpl.html на index2.tpl.htm только для главной страницы?l
|
5 Декабрь 2010 в 20:24

Как заменить index.tpl.html на index2.tpl.htm только для главной страницы?

ОтветитьОтветить
|
9 Декабрь 2010 в 18:45

это надо лезти в index.php и ставить условие. В этом я не силен

ОтветитьОтветить
Кунь
|
4 Май 2011 в 2:58

Как вставить запрос в 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 Май 2011 в 3:04

все вопрос отпал, в 4 утра первый раз видящему эти “коды” челу трудно)) нашел, большое спасибо автору блога!

ОтветитьОтветить
|
4 Май 2011 в 11:49

всегда пожалуйста

ОтветитьОтветить
Nik
|
10 Ноябрь 2011 в 15:15

Приветствую. Мой вопрос может показаться совсем нубский, стоит шоп скрипт премиум, на главной выводятся разделы по два столбца, хочу сделать по три столбца и собственно немогу найти где это меняется. Стоит шоп скрипт премиум

ОтветитьОтветить
Nik
|
10 Ноябрь 2011 в 15:31

Млин… невнимательно читал ))

ОтветитьОтветить
Роман
|
8 Февраль 2012 в 9:05

Здравствуйте.
Лодскажите как ограничить загрузку фотографий товара по обьему.
Спасибо …

ОтветитьОтветить
|
8 Февраль 2012 в 10:23

@Роман:
Стандартными средствами никак

ОтветитьОтветить

Оставить комментарий

Разрешенные теги: a (href, title), b, i, strike.


Ваше имя *

E-mail (не публикуется) *

Адрес блога

Комментарий *