Автор Тема: Как привязаться ко дню недели и айди или имени поставщика?  (Прочитано 137 раз)

22 Июля 2016, 23:04:54
  • Фрилансер
  • *
  • Сообщений: 220
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте! Хочу привязать строчку <p> к товару, только не могу задать условие условие...
Вот пример я привязал к категории,
{if $category->id=="1"}
<p>&nbsp;</p>
{/if}
а мне нужно к производителю, дню недели и времени по Москве типо так:
{if $поставщик->"4", $время->"четверг" }
<p>&nbsp;</p>
{/if}
23 Июля 2016, 09:53:00
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 13121
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
23 Июля 2016, 13:18:58
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 220
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
а если не по поставщику, а по производителю будет
if $manufacturer->id_manufacturer ? (только что то не работает)
и мне нужно не по точной дате, а что бы каждый четверг позывалось
23 Июля 2016, 17:47:14
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 13121
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не работает потому что на разных страницах разные переменные smarty. На странице твоара
$product_manufacturer
$product->id_manufacturer
23 Июля 2016, 18:58:27
Ответ #4
  • Фрилансер
  • *
  • Сообщений: 220
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
сработало, спасибо! А как сделать что бы этот блок показывался только, например, в четверг с 15:00 по Москве!
В общем я это делаю для того, что бы отображалась строчка "Этот товар мы можем доставить уже сегодня/завтра/в понедельник", один из складов закрывается в 15:00, это значит что если больше 15:00, то доставить товар мы сможем только завтра... собственно к складу я уже понял как привязать, осталось к дню недели и времени!
24 Июля 2016, 11:54:59
Ответ #5
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22093
  • Репутация: +17108/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
http://php.net/manual/ru/function.getdate.php
<?php
// getdate — Возвращает информацию о дате/времени
// использовано текущее время
$d getdate(); 

// "wday" - Порядковый номер дня недели от 0 (воскресенье) до 6 (суббота)
// "weekday" - Полное наименование дня недели от Sunday до Saturday
if ($d[wday] == 4)
    
//показывать

?>
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
24 Июля 2016, 15:17:28
Ответ #6
  • Фрилансер
  • *
  • Сообщений: 220
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я новичок, примерную суть этого метода понял, но не понял куда и что вставлять
24 Июля 2016, 15:57:14
Ответ #7
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22093
  • Репутация: +17108/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
В контроллере определить переменную для шаблона smarty.
В шаблонах неполучится работать с датой, без определения переменной в контроллере.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
24 Июля 2016, 18:24:48
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 220
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А как, собственно, задать эту переменную в контроллере?? и в каком? Productcontroller.php если да, то в каком месте? Несколько часов рою интернет, никак не могу понять как это сделать... все мои попытки приводят к белому экрану при обновлении страницы товара
26 Июля 2016, 16:13:18
Ответ #9
  • Фрилансер
  • *
  • Сообщений: 220
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
26 Июля 2016, 16:35:30
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 1190
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
А как, собственно, задать эту переменную в контроллере?? и в каком? Productcontroller.php если да, то в каком месте? Несколько часов рою интернет, никак не могу понять как это сделать... все мои попытки приводят к белому экрану при обновлении страницы товара
Для карточки товара в /controllers/front/ProductController.php в initContent в массив smarty
$this->context->smarty->assign(array(
26 Июля 2016, 17:57:29
Ответ #11
  • Пользователь
  • **
  • Сообщений: 98
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Можно и без PHP, чисто на Smarty. Smarty сильная штука...

Определение дня недели, %u - номер дня недели [1,7], где 1-ый день - понедельник:

{assign var="weekday" value=$smarty.now|date_format:"%u"}
{if $weekday == 5} <p>Понедельник</p>
{elseif $weekday == 7} <p>Воскресенье</p>
{/if}

Аналогично со временем, %H - часы, 24-часовой формат (от 00 до 23).

По производителю:
{$product_manufacturer->name}, {$product_manufacturer->id}
(* --[[ /* <!-- {* #  -- ; *} --> */ ]] *)
skype:vlad_stiff
27 Июля 2016, 12:31:15
Ответ #12
  • Фрилансер
  • *
  • Сообщений: 220
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Чудо! Всё работает! Спасибо))
Код: {assign var="weekday" value=$smarty.now|date_format:"%u"}
{assign var="4asy" value=$smarty.now|date_format:"%H"}
{if $weekday < '6' AND $product->id_manufacturer == '68' AND $4asy < '15' }

<p> Now! </p> {/if}

Но! Как мне добавить в это условие еще и других производителей?

$product->id_manufacturer == '68' AND $product->id_manufacturer == '60' вот так не работает
28 Июля 2016, 00:19:26
Ответ #13
  • Пользователь
  • **
  • Сообщений: 98
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вряд ли может быть производитель 68 и 60 для одного товара...
{if $weekday < 6 && $4asy < 15 }
    {if $product_manufacturer->id == 60 || $product_manufacturer->id == 68 }
        <p>60 or 68</p>
    {/if}
    {if $product_manufacturer->id == 60}
        <p>only 60</p>
    {/if}
{/if}

аналоги логических операторов:
&& - AND
|| - OR
(* --[[ /* <!-- {* #  -- ; *} --> */ ]] *)
skype:vlad_stiff
28 Июля 2016, 10:52:56
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 2156
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
$product->id_manufacturer == '68' AND $product->id_manufacturer == '60' вот так не работает
Не работает потому что нет производителя с 2-мя ид.
AND замени на OR.