shaklov 63 Опубликовано 17 мая, 2010 Жалоба Share Опубликовано 17 мая, 2010 Как определить, что товар со скидкой? Мне нужно в этом случае у него специальный значёк выводить. И полностью убрать фразы "Розничная цена" со старой ценой и "Специальная цена товара". Через smarty можно как-то? Ссылка на сообщение Поделиться на другие сайты
Bububu 0 Опубликовано 17 мая, 2010 Жалоба Share Опубликовано 17 мая, 2010 link=topic=5744.msg47946#msg47946 date=1274056490]Как определить, что товар со скидкой? .... Через smarty можно как-то? Используйте, например, в шаблоне product_info_v1.html условие: {if $PRODUCTS_DISCOUNT} специальный значёк {/if} Ссылка на сообщение Поделиться на другие сайты
Bububu 0 Опубликовано 17 мая, 2010 Жалоба Share Опубликовано 17 мая, 2010 link=topic=5744.msg47946#msg47946 date=1274056490]... И полностью убрать фразы "Розничная цена" со старой ценой и "Специальная цена товара". "Специальная цена товара" и "Розничная цена" определены в файле \lang\russian\russian.php define('YOUR_SPECIAL_PRICE','Специальная цена товара '); define('RETAIL_PRICE','Розничная цена '); Они используются в файле \includes\classes\vam_price.php Там и можно подправить их под свои потребности, например, удалить ненужное. Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 17 мая, 2010 Автор Жалоба Share Опубликовано 17 мая, 2010 Внёс для проверки в карточку товара product_info_v1.html код: {if $PRODUCTS_DISCOUNT}<p>специальный значёк</p>{/if}[/code]и ничего не появилось.Кэш чистил, версия 1.58, локально на Денвере, MySQL 5.0.45, PHP 5.2.4.Скидка отображается как положено - старая цена зачеркнута, новая написана.А при выводе списка товаров это работает или запрос править нужно? Ссылка на сообщение Поделиться на другие сайты
Bububu 0 Опубликовано 17 мая, 2010 Жалоба Share Опубликовано 17 мая, 2010 link=topic=5744.msg47960#msg47960 date=1274084760]и ничего не появилось. Да, $PRODUCTS_DISCOUNT - это для макс. возм. скидки. Я перепутал немного. Далее по теме: link=topic=5744.msg47946#msg47946 date=1274056490]Как определить, что товар со скидкой? Мне нужно в этом случае у него специальный значёк выводить. И полностью убрать фразы "Розничная цена" со старой ценой и "Специальная цена товара". Через smarty можно как-то? Через смарти можно, но не нужно - для этого случая сложнее будет, чем если бы править в коде. Вот рабочий вариант для удаления этих слов. Правьте includes\classes\vam_price.php (ок. 420-й строки) Замените $price = '<span class="productOldPrice">'.$message_old_price.$this->Format($pPrice, $format).'</span><br />'.YOUR_SPECIAL_PRICE.$this->checkAttributes($pID).$this->Format($sPrice, $format); на $price = '<img src="/images/ok.gif" width="22" height="22">'.$this->Format($sPrice, $format); P.S.: Естественно, что картинку /images/ok.gif - надо заменить на свою. Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 17 мая, 2010 Автор Жалоба Share Опубликовано 17 мая, 2010 Спасибо. Только картинку мне нужно совсем в другом месте выводить, а не в цене товара. Грубо говоря нужно получить флаг, что товар со скидкой, и выводить такие товары с другим css. Я по-этому про smarty и спрашивал, т.к в php уже проверил. Алгоритм такой требуется: определяем, что в строке цены есть эта фраза и выводим некоторые места в карточке другим кодом. Потом если так возможно, то и эти слова вырезаем (ну или в языковом файле просто их грохаем). Просто хочется товары со скидкой, лидеры продаж, избранные, новинки, красиво выделять в общем списке - такого на ВамШоп никто еще не делал. Ссылка на сообщение Поделиться на другие сайты
mosquito 0 Опубликовано 17 мая, 2010 Жалоба Share Опубликовано 17 мая, 2010 изменяем тот файл что писао бубу функции FormatSpecialDiscount, FormatSpecial идобавляя не картинку а в какой то спан или див с определенным классом к примеру '<span class="discounted_product">'. $this->Format($sPrice, $format).'</span>';[/code] потом через js проверяем если есть в цены такой класс то изменяем\добавляем что то меняем цвеи рамки :) или кому что больше нравиться) к примеру [code]$(function(){ var products = $(".product_wrapper"); products.each(function(i){ if ($(this).find("span").hasClass("discounted")){ $(this).css({"border": "1px solid red"}); } });}); где product_wrapper оболочка нашего товара Ссылка на сообщение Поделиться на другие сайты
Bububu 0 Опубликовано 17 мая, 2010 Жалоба Share Опубликовано 17 мая, 2010 link=topic=5744.msg47969#msg47969 date=1274091714]Грубо говоря нужно получить флаг, что товар со скидкой, ... Хорошо. Делаем флаг. Он будет называться $HAVE_SKIDKA. Будет такая метка в шаблоне. В includes\classes\vam_price.php добавь функцию: function GetHaveSkidka($pID) { if ($sPrice = $this->CheckSpecial($pID)) { return true; } else { return false; }; }[/code]в \includes\modules\product_info.phpвставь (выделено красным)$info->assign('PRODUCTS_PRICE', $products_price['formated']);[color=red]$info->assign('HAVE_SKIDKA', $vamPrice->GetHaveSkidka($product->data['products_id']));[/color]$info->assign('PRODUCTS_PRICE_PLAIN', $products_price['plain']);ну и в product_info_v1.html используй метку как:{if $HAVE_SKIDKA}<p>специальный значёк</p>{/if} Ссылка на сообщение Поделиться на другие сайты
Bububu 0 Опубликовано 18 мая, 2010 Жалоба Share Опубликовано 18 мая, 2010 [:|||||||:] , вам это помогло? Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 18 мая, 2010 Автор Жалоба Share Опубликовано 18 мая, 2010 Спасибо! Я вот именно сейчас этот кусок сел делать - пример работает. Вы меня направили в нужном направлении. Дальше я уже сам добавлю остальные функции для проверки товара на присутствие в других топ-категориях. Или универсальную функцию сделаю. Тем более, что нужно переделать это для списка товаров. Ссылка на сообщение Поделиться на другие сайты
Bububu 0 Опубликовано 18 мая, 2010 Жалоба Share Опубликовано 18 мая, 2010 Хорошо. Успехов! Ссылка на сообщение Поделиться на другие сайты
volga 0 Опубликовано 25 мая, 2011 Жалоба Share Опубликовано 25 мая, 2011 Огромное спасибо! В карточке товара замечательно работает :) А можно ли этот флаг вывести на товаре при просмотре всей категории? :rolleyes: Спасибо! Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 25 мая, 2011 Автор Жалоба Share Опубликовано 25 мая, 2011 в \includes\classes\product.php вставить строку как-то так: 'PRODUCTS_PRICE' => $products_price['formated'], 'PRODUCTS_PRICE_PLAIN' => $products_price['plain'], 'HAVE_SKIDKA' => $vamPrice->GetHaveSkidka($array['products_id']), 'PRODUCTS_TAX_INFO' => $main->getTaxInfo($tax_rate), 'PRODUCTS_SHIPPING_LINK' => $main->getShippingLink(), Ссылка на сообщение Поделиться на другие сайты
volga 0 Опубликовано 26 мая, 2011 Жалоба Share Опубликовано 26 мая, 2011 ' timestamp='1306366220' post='68384'] 'HAVE_SKIDKA' => $vamPrice->GetHaveSkidka($array['products_id']), Да, я так и делала, но у меня не выводит :'( В product_listing_columns пишу {if $HAVE_SKIDKA}<div id="metka"></div>{/if} Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 26 мая, 2011 Жалоба Share Опубликовано 26 мая, 2011 Если Вы вставляете в шаблон списка товаров, то нужно ведь использовать условие: {if $module_data.HAVE_SKIDKA} ... [/code] Ссылка на сообщение Поделиться на другие сайты
volga 0 Опубликовано 26 мая, 2011 Жалоба Share Опубликовано 26 мая, 2011 Спасибо! А не подскажете еще, как определять соответствие товара какому-либо условию, например: если этот товар есть в новинках, то выводить слой <div id="metka1"></div>; если к этому товару приклеены акции, то <div id="metka2"></div>; если этот товар в лучших, то <div id="metka3"></div>; если в рекомендованных, - <div id="metka4"></div>? Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 26 мая, 2011 Автор Жалоба Share Опубликовано 26 мая, 2011 Наверно так так: {if $module_data.HAVE_SKIDKA}<div id="metka1"></div>{/if} {if $module_data.Что-то-еще}<div id="metka2"></div>{/if} {if $module_data.Что-то-еще}<div id="metka3"></div>{/if} [/code] Только для остальных тоже нужно запросы добавлять. Но лучше классы присваивать - тогда можно сразу несколько классов одному диву одновременно назначить. Ссылка на сообщение Поделиться на другие сайты
volga 0 Опубликовано 26 мая, 2011 Жалоба Share Опубликовано 26 мая, 2011 ' timestamp='1306405285' post='68402'] {if $module_data.Что-то-еще}metka2{/if} Возможно, у "Что-то-еще" уже есть названия. Я это имела в виду Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 26 мая, 2011 Жалоба Share Опубликовано 26 мая, 2011 По умолчанию вроде как нет таких меток, т.е. для определения есть ли товаро в лучших и т.д., ничего этого по умолчанию нет. Ссылка на сообщение Поделиться на другие сайты
retail 0 Опубликовано 4 июня, 2012 Жалоба Share Опубликовано 4 июня, 2012 Хорошо. Делаем флаг. Он будет называться $HAVE_SKIDKA. Будет такая метка в шаблоне. В includes\classes\vam_price.php добавь функцию: function GetHaveSkidka($pID) { if ($sPrice = $this->CheckSpecial($pID)) { return true; } else { return false; }; }[/code] ... Помогите, пожалуйста, сделать такие же функции для новинок и рекомендуемых Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 4 июня, 2012 Жалоба Share Опубликовано 4 июня, 2012 По умолчанию кода нет, только свой код писать. Ссылка на сообщение Поделиться на другие сайты
VVS 0 Опубликовано 10 июля, 2013 Жалоба Share Опубликовано 10 июля, 2013 Очень полезные штуки. Благодарю за решения. Может стоит включить это в официальный релиз? Ссылка на сообщение Поделиться на другие сайты
VVS 0 Опубликовано 12 августа, 2013 Жалоба Share Опубликовано 12 августа, 2013 Мне вот в дополнение к выводу картинки "Акция" понадобилось еще на акционных товарах рядом с ценой вывести срок действия акции. Написал по аналогии с приведенными выше примерами: В includes\classes\vam_price.php добавляем функцию: function GetSkidkaExpiresDate($pID) { if ($sPrice = $this->CheckSpecial($pID)) { $product_query = "select expires_date from ".TABLE_SPECIALS." where products_id = '".$pID."' and status=1"; $product_query = vamDBquery($product_query); $product = vam_db_fetch_array($product_query, true); return vam_date_short($product['expires_date']); } else { return false; }; } в \includes\modules\product_info.php вставляем: $info->assign('SKIDKA_EXPIRES_DATE', $vamPrice->GetSkidkaExpiresDate($product->data['products_id'])); ну и наконец в product_info_v1.html используем метку: {if $SKIDKA_EXPIRES_DATE} <p>Акция действует до {$SKIDKA_EXPIRES_DATE}</p> {/if} Работает. Интересно, не задел ли чего-нибудь существенного этими правками? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 12 августа, 2013 Жалоба Share Опубликовано 12 августа, 2013 Раз работает, но не задели, видимо. Да и судя по коду, Вы ж прсото новый код добавили, всё правильно, по идее. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения