Перейти к содержимому


Вывод картинки "новинка" к товару


  • Вы не можете ответить в тему
Сообщений в теме: 3

#1 vsupport

    Продвинутый пользователь

  • Администраторы
  • 758 сообщений
Репутация: 31
Ассистент

Отправлено 20 June 2011 - 08:33 AM

Описание:
Это дополнение при просмотре категории товару которому не более 7 дней будет выведен как "Новинка". То есть, если с даты добавления товара прошло не более 7 дней, то тогда товар считается новинкой и выводит в картинке товара - картинку "Новинка".

1. В core\tpl\user\default\product_brief.tpl.html должно быть значение {$product_info.date_added) - дату добавления продукта.
2. В фаил шаблона вставить:
{if $product_info.date_added > $point_date}
{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$special_offers[i].productID}.html{else}index.php?productID={$special_offers[i].productID}{/if}
{/if}
3. В файле /core/functions/product_functions.php найти функцию prdSearchProductByTemplate, в ней найти $sqlQuery. И в этот самый запрос нужно просто добавить date_added, чтобы значение из этой колонки было добавлено в массив.
4. В product_brief.tpl.html нужно переменную - "date_added" объявлять в core\includes\category.php.
5. В файлы добавить:
- \core\includes\search_simple
- \core\includes\category_search_result
$point_date = date('Y-m-d', strtotime('-1 week'));
$smarty->assign("point_date", $point_date);

источник


  • 0

#2 Robby

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 162 сообщений
Репутация: 75
Продвинутый

Отправлено 06 July 2011 - 02:51 PM

Вывод картинки "новинка" к товару

Описание немного не точное.

PHP код:
{if $product_info.date_added > $point_date}

{/if}

этот кусок кода отвечает за вывод картинки спецпредложения и в шаблоне product_brief.tpl.html он работать не будет, должно быть так:
{if $product_info.date_added > $point_date}
            <td class="imboxl"><div align="right" style="position: relative; float: right;"><div class="semafor1 sl"><a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$product_info.productID}.html{else}index.php?productID={$product_info.productID}{/if}"><img src="data/{$smarty.const.TPL}/pixel.gif" style="margin: 0px;" alt="" width="70" height="70"></a></div><a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$product_info.productID}.html{else}index.php?productID={$product_info.productID}{/if}"><img src="data/small/{$product_info.picture}" alt="{$product_info.name}"></a></div></td>
            {else}
            <td class="imboxl"><a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$product_info.productID}.html{else}index.php?productID={$product_info.productID}{/if}"><img src="data/small/{$product_info.picture}" alt="{$product_info.name}"></a></td>
            {/if}
править в шаблоне нужно в двух местах:
1. вывод картинки слева
2. вывод картики справа от описания.

В файл стилей добавть новый стиль стиль с картинкой для новинки, например так:
.semafor1 {position: absolute; z-index: 1; top: 0px; right: 0px; background:url('new.png'); height: 70px; width: 70px;}

Готовые модифицированные файлы для ShopCMS 3.1.2:
[ATTACH]79.vB[/ATTACH]
  • 0

#3 ruter

    Продвинутый пользователь

  • VIP
  • 334 сообщений
Репутация: 151
Мастер

Отправлено 01 August 2011 - 09:03 PM

Отображение картинка Новинка на странице продукта

Все это проверено и работает в указанных шаблонах. Но логично возникает вопрос отображения картинка Новинка в шаблоне product_detailed.tpl.html, т.е на странице продукта. Если сделать по аналогии, то работать корректно не будет.

Поскольку в шаблон передаются данные разных форматов, а это уже приводит к непредсказуемым результам. Картинка новинка отображалась в тех продуктах, где её не должно быть.

Это происходит потому, что в файле product_detailed.php происходит выборка из БД данных о продукте с обработкой
функцией GetProduct( $productID), в которой дата переводится в формат, который отличен от используемого в категории и результатах поиска в переменной $date_point.

Для того, чтобы у Вас все работало, необходимо преобразовать обратно в формат аналогичный в переменной $date_point, т.е "Y-m-d H:i:s"
Для этого создаем функцию например, такого рода:


// add function change dateformat for compare with $data_point - for display flag NEW PRODUCT on product page

function convertDateNew($date) {

$dformat = "Y-m-d H:i:s";
$date = @date($dformat, strtotime($date));
return $date;

}



и размещаем её в конце файла datetime_functions.php директории core/functions/

Затем необходимо объявить переменные в файле product_detailed.php для их вывода и обработки в шаблоне product_detailed.tpl.html


например, после строки: $smarty->assign("product_info", $a);

вставляем следующее: $smarty->assign("old_date_added", convertDateNew($a["date_added"]));
$point_date = date('Y-m-d H:i:s', strtotime('-1 week'));
$smarty->assign("point_date", $point_date);




Затем для отображения на сайте, вставляем в шаблон в необходимое Вам место:


{if $old_date_added > $point_date}
{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$special_offers[i].productID}.html{else}index.php?productID={$special_offers[i].productID}{/if}
{/if}



Обратите внимание, что в указанном коде произведена замена переменной для шаблона product_detailed.tpl.html:

Замена: {if $product_info.date_added > $point_date}
На: {if $old_date_added > $point_date}


Теперь обновите файлы на сервере, сбросьте кеш и смотрите. Должно отображаться правильно.

Обращаю внимание, что вывод картинки Новинка - это пример и вывод можно делать и без ссылки или просто заменить на текст Новинка и украсить средствами CSS, как душе угодно.

Конечно лучше всегда хранить формат даты в БД в UNIX формате, который удобнее сравнивать и потом манипулировать его выводом, но в данном случае выбирать не приходится из-за изначальной реализации скрипта магазина, поэтому пришлось делать к примеру, так как написано.
  • 0

#4 sergio3004

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 29 сообщений
Репутация: 65
Продвинутый
  • ГородМосква

Отправлено 08 November 2011 - 08:43 AM

Как реализовать, картинку NEW в модифицированным файлом, для ЧПУ?
  • 0