Автор Тема: Проблема в отображение товара "в наличии" или "под заказ" при просмотра тэга  (Прочитано 2358 раз)

09 Март 2015, 23:42:54
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
приветствую. обнаружил неприятный баг. тема дефолтная
часть товара под заказ. Есть текст в поле "Показывать текст, если разрешен заказ по телефону". Всё показывается нормально, если смотреть в категориях, внутри товарах. Но если нажать на тэг, то текста, что товар доступен под заказ нету. Написано, что товар в наличии.
http://wimmelbuch.su/search?tag=lego пример
Проблема в product-list.tpl
{if $product.quantity <= 0}{if $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}{l s='In Stock'}{/if}
{else}{l s='Out of stock'}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if}
по не понятной причине переменная $product.available_later не получает значение
причём только при взаимодействии с тэгами. в обычной категории всё в порядке!
10 Март 2015, 09:12:18
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Есть текст в поле "Показывать текст, если разрешен заказ по телефону".
В дефолтоной такого нет. Сами что-то добавляли или модуль устанавливали для заказа по телефону?
10 Март 2015, 09:23:54
Ответ #2
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
как нету http://wimmelbuch.su/13-pod-zakaz  http://wimmelbuch.su/pod-zakaz/51-weihnachten-im-wimmelwald.html
всё что я пока делал - это скрывал ненужное. правил css и немного редактировал product.tpl product-list.tpl не трогал.
10 Март 2015, 10:02:05
Ответ #3
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
добавил объявление переменной $product.available_later="  Поступит на склад через 30 дней после оформления заказа" в каждый блок и всё вроде пашет. но это решение не красивое. как из базы получать значение переменной? или где оно есть?
10 Март 2015, 10:21:48
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Переменная available_later уже есть в классе Product.php. Данные беруться из таблицы ps_product_lang.
У вас может быть проблемма с переводами и определением ид языка.
10 Март 2015, 10:25:44
Ответ #5
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
как протестировать проблему с определением языка?
и почему проблема только для тэгов?
10 Март 2015, 10:29:17
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Не совпадает ид языка тегов и языка на котором показан сайт. Почему так, не знаю, причин много. Проблема возникает при обнолвении, включении / выключении языков, удалении /добавлении и т.д.
Для тестирования включить режим отладки, будут показанны запросы к бд. В них смотреть запрос-ответ сервера.
10 Март 2015, 10:30:38
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
У меня текст показывает, с тегами или без тегов работает одинаково. Браузер менять пробывали?
10 Март 2015, 10:38:52
Ответ #8
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
я добавил объявление переменной. теперь всё нормально стало. но решение некрасивое
10 Март 2015, 10:40:01
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
10 Март 2015, 10:57:23
Ответ #10
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
{if $PS_STOCK_MANAGEMENT && isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}
{if ($product.allow_oosp || $product.quantity > 0)} {$product.available_later="  Поступит на склад через 30 дней после оформления заказа"}
<link itemprop="availability" href="http://schema.org/InStock" />{if $product.quantity <= 0}{if $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}fff{l s='In Stock'}{/if}{else}{l s='Out of stock'}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if}
{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}
и
<span class="{if $product.quantity <= 0 && !$product.allow_oosp}out-of-stock{else}available-now{/if}"><!-- error here!!!  -->
{$product.available_later="Поступит на склад через 30 дней после оформления заказа "}
{if $product.quantity <= 0}{if $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}<!-- error here!!!  -->l s='In Stock'}{/if}{else}{l s='Out of stock'}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if}
10 Март 2015, 10:58:20
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Переменная available_later уже есть в классе Product.php. Данные беруться из таблицы ps_product_lang.
У вас может быть проблемма с переводами и определением ид языка.
Она уже объявлена, вы ее переопределили.
Сделайте вывод значений объекта product и проверьте что находиться в available_later при применении тегов.
{$product|var_dump}
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
10 Март 2015, 11:22:48
Ответ #12
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
как я и думал - ничего
array(76) { ["id_product"]=> string(2) "65" ["id_supplier"]=> string(1) "0" ["id_manufacturer"]=> string(1) "0" ["id_category_default"]=> string(2) "14" ["id_shop_default"]=> string(1) "1" ["id_tax_rules_group"]=> string(1) "0" ["on_sale"]=> string(1) "0" ["online_only"]=> string(1) "0" ["ean13"]=> string(0) "" ["upc"]=> string(0) "" ["ecotax"]=> string(8) "0.000000" ["quantity"]=> int(0) ["minimal_quantity"]=> string(1) "1" ["price"]=> float(899) ["wholesale_price"]=> string(8) "0.000000" ["unity"]=> string(0) "" ["unit_price_ratio"]=> string(8) "0.000000" ["additional_shipping_cost"]=> string(4) "0.00" ["reference"]=> string(14) "978-3845100845" ["supplier_reference"]=> string(0) "" ["location"]=> string(0) "" ["width"]=> string(8) "0.000000" ["height"]=> string(8) "0.000000" ["depth"]=> string(8) "0.000000" ["weight"]=> string(8) "0.364000" ["out_of_stock"]=> string(1) "2" ["quantity_discount"]=> string(1) "0" ["customizable"]=> string(1) "0" ["uploadable_files"]=> string(1) "0" ["text_fields"]=> string(1) "0" ["active"]=> string(1) "1" ["redirect_type"]=> string(3) "404" ["id_product_redirected"]=> string(1) "0" ["available_for_order"]=> string(1) "1" ["available_date"]=> string(10) "0000-00-00" ["condition"]=> string(3) "new" ["show_price"]=> string(1) "1" ["indexed"]=> string(1) "1" ["visibility"]=> string(4) "both" ["cache_is_pack"]=> string(1) "0" ["cache_has_attachments"]=> string(1) "0" ["is_virtual"]=> string(1) "0" ["cache_default_attribute"]=> string(1) "0" ["date_add"]=> string(19) "2015-03-08 17:15:32" ["date_upd"]=> string(19) "2015-03-08 17:24:03" ["advanced_stock_management"]=> string(1) "0" ["pack_stock_type"]=> string(1) "3" ["id_shop"]=> string(1) "1" ["description_short"]=> string(0) "" ["link_rewrite"]=> string(22) "lego-duplo-wo-ist-anna" ["name"]=> string(25) "LEGO Duplo - Wo ist Anna?" ["id_image"]=> string(6) "65-364" ["legend"]=> string(25) "LEGO Duplo - Wo ist Anna?" ["manufacturer_name"]=> NULL ["position"]=> string(1) "1" ["new"]=> string(1) "0" ["allow_oosp"]=> int(1) ["id_product_attribute"]=> string(1) "0" ["category"]=> string(31) "wimmelbuch-vimmelbukh-pod-zakaz" ["link"]=> string(93) "http://wimmelbuch.su/pod-zakaz/wimmelbuch-vimmelbukh-pod-zakaz/65-lego-duplo-wo-ist-anna.html" ["attribute_price"]=> int(0) ["price_tax_exc"]=> float(899) ["price_without_reduction"]=> float(899) ["reduction"]=> float(0) ["specific_prices"]=> array(0) { } ["quantity_all_versions"]=> int(0) ["features"]=> array(4) { [0]=> array(3) { ["name"]=> string(35) "Количество страниц" ["value"]=> string(2) "32" ["id_feature"]=> string(1) "8" } [1]=> array(3) { ["name"]=> string(31) "Материал страниц" ["value"]=> string(12) "картон" ["id_feature"]=> string(2) "10" } [2]=> array(3) { ["name"]=> string(12) "Размер" ["value"]=> string(14) "180 x 289 мм" ["id_feature"]=> string(1) "9" } [3]=> array(3) { ["name"]=> string(14) "Издание" ["value"]=> string(21) "2012 сентябрь" ["id_feature"]=> string(2) "12" } } ["attachments"]=> array(0) { } ["virtual"]=> int(0) ["pack"]=> int(0) ["packItems"]=> array(0) { } ["nopackprice"]=> int(0) ["customization_required"]=> bool(false) ["rate"]=> float(0) ["tax_name"]=> string(0) "" ["color_list"]=> string(0) "" }
10 Март 2015, 11:46:37
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В шаблоне product-list.tpl можно определить эту переменную, а текст менять в Локализация > Переводы.
{assign var="product.available_later" value="{l s='My text'}"}
10 Март 2015, 12:40:40
Ответ #14
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
нет, значение поле находится в БД в ps_product_lang поле available_later
как его из БД достать?
а лучше в каком файлике идёт сбор данных с БД. Хочу поймать ошибку