Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Как организовать новинки со значком

Вообщем дело такое, нужно вставить значок новинки к изображению

посоветуйте как это отобразить правильно в шаблоне с использованием перменных магазина


if ( time() - (86400 *7) < time_produkt_add(приблизительно) ){

<img src='/modules/files/images/newred.gif'>
}


Должно получитса чтото типа этого


Мне тоже этот вопрос интересен :)


а вроде и никак нельзя тут(((( а надо бы


для каждого блока отдельно нужно реализовывать

чтобы сразу на весь магазин, для всех выводимых товаров во всех блоках - не получится



а вроде и никак нельзя тут(((( а надо бы


да все можно при желании


Тема по прежнему актуальна, нужна подсказка уважаемые гуру.

Как опредилить время додавания товара и текусчее время


Я бы сделал так. В php где формируется массив товаров, добавил к каждому из них метку "мол новый" и выставлял её в 1, если значение поля products_date_added > date("Y.m.d", mktime(1, 1, 1, date(m), date(d) - MAX_DISPLAY_NEW_PRODUCTS_DAYS, date(Y))).

Данное условие можно скопипастить из new_products.php

$date_new_products = date("Y.m.d", mktime(1, 1, 1, date(m), date(d) - MAX_DISPLAY_NEW_PRODUCTS_DAYS, date(Y)));$days = " and p.products_date_added > '".$date_new_products."' ";

К примеру для просмотра категорий. Забираем из базы все товары, которые находятся в данной категории (это уже собственно есть) и у тех, для которых выполняется вышеизложенное условие, выставляет значение новой метки IS_NEW_PRODUCT = 1; (собственно это надо реализовать).

Потом в шаблоне, в цикле вывода товаров проверяем данную метку и у тех у кого она имеет значение 1, дорисовываем картинку (как дорисовать картинку в шаблоне, это уже верста. может z-index или ещё как.)

Я бы как-то так сделал.



Тема по прежнему актуальна, нужна подсказка уважаемые гуру.

Как опредилить время додавания товара и текусчее время


именно в саму картинку водяной знак Новинка добавлять?


нет нужно в блоках или листинге товаров зделать пометку что новый товар и успользовать ее универсально где только душе угодно

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


/*
  получение массива товаров
*/
    while ($listing = os_db_fetch_array($listing_query, true))
    {
                    $_products_array] = $listing;
    }

Вот сюды нужно подмержить к массиву $listing ещё одну ячейку (только я точно не знаю как это делается и делается ли вообще. либо можно создать новое поле в БД для таблицы товаров), назвать её к примеру is_new и поставить условие, чтобы получилос ькак-то так :

$date_new_products = date("Y.m.d", mktime(1, 1, 1, date(m), date(d) - MAX_DISPLAY_NEW_PRODUCTS_DAYS, date(Y)));
   
while ($listing = os_db_fetch_array($listing_query, true))
    {
            if( $listing['products_date_added'] > $date_new_products )
            { $listing['is_new'] = 1; }esle{ $listing['is_new'] = 0; }

          $_products_array] = $listing;
}


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


Спасибо тебе за ответ! Но я так ничего не понял :)

я думаю что нужно создать три метки

1 текущий день
2 период времени
3 время добавления товара

и потом if ($текущее время - $период времени < $время добавления товара){тут код картинки которая должна выводится}


Плохо объясняю...сам подумай 3 метки для каждого товара - это имхо накладно.Да и зачем передавать из php в html целых 3 значения, а потом ещё производить операции сравнения, если тебе нужно знать всего лишь "да" или "нет".
Если у тебя в каталоге 1000 товаров, то это 3000 дополнительных ячеек в массиве.  В общем я думаю, в html должен уходить уже результат сравнения для каждого товара, соответственно если is_new = 1 , тогда товар надо отображать с лейблом, если 0 - тогда без.

Попробую немного разъяснить свою позицию. Итак, насколько я понял в файле default.php формируется запрос к БД на выборку полей товаров. Далее в этом файле инклюдится файл product_listing.php в котором продалжается работа с этим запросом.
По-сути переменная хранящая данные из запроса - это массив, матрица. Где значение каждого индекса  - это ещё массив, содержащий поля для каждого товара (название, цена и т.п.).

Передав такой массив в html , мы можем в цикле вывести значения для каждого товара (т.е. последовательно "пробежаться" по всем строкам массива). Каждая строка содержит все необходимые данные для одного товара, кроме указателя на то, является ли товар "новым". надо дополнить каждую строку этого массива этим значением, можно представить это так :
было:
products_id, products_name, products_description, .... products_price ...
надо:
products_id, products_name, products_description, .... products_price ... is_new

Тогда уже в шаблоне можно будет внутри существующего цикла проверять данную переменную :


{foreach name=aussen item=module_data from=$module_content} ] - цикл вывода товаров, module_content - весь массив (матрица), module_data = значение одной итерации, одна строка
....
        {if $module_data.PRODUCTS_IMAGE}<a href="{$module_data.PRODUCTS_LINK}"><img src="{$module_data.PRODUCTS_IMAGE}" alt="{$module_data.PRODUCTS_NAME}" title="{$module_data.PRODUCTS_NAME}" /></a>{/if}{if $module_data.PRODUCTS_FSK18=='true'}<br /><img src="{$tpl_path}img/fsk18.gif" alt="" />{/if} - ] - выводятся данные товара текущей итерации
       
...                         
...
    <strong><a href="{$module_data.PRODUCTS_LINK}">{$module_data.PRODUCTS_NAME}</a></strong>
...
  {/foreach} 

Если добавить новое значение is_new то, можно будет работать и ним так же.

{if $module_data.IS_NEW == 1} выводим лейбл {else} НЕ выводи лейбл {/if}

имхо вполне удобно. однако, если два затыка. первый, как присвоить правильное значение данной переменой для каждого товара. Решение данного вопроса вроде будет приблизительно такое как я писал, в файле product_listing.php

$date_new_products = date("Y.m.d", mktime(1, 1, 1, date(m), date(d) - MAX_DISPLAY_NEW_PRODUCTS_DAYS, date(Y))); ]- здесь формируется условие "настоящий момент времени - кол-во дней, пока товар считается новым"
   
while ($listing = os_db_fetch_array($listing_query, true))
    {
            if( $listing['products_date_added'] > $date_new_products ) ]- соответственно если дата добавления товара больше чем вышезложенное условие, тогда товар можно считать новинкой
            { $listing['is_new'] = 1; }esle{ $listing['is_new'] = 0; }

          $_products_array] = $listing;
}

Второй затык, в том, что, т.к. я не силен в php, я не могу точно сказать как дополнить массив дополнительной ячейкой для кадой строки (под значение is_new). изначально, как я понимаю, массив имеет столько ячеек, сколько значений было в запросе к БД. нам надо на одну больше, для каждой строки.

з.ы. вообще я мог конечно и нагородить здесь всякого. так что надо у Евгений уточнить.



Источник



Copyright ShopOS