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


Фотография
- - - - -

jbadvert включить одновременно два режима

jbadvert

  • Закрытая тема Тема закрыта
Сообщений в теме: 9

#1 usersJbzoo

usersJbzoo

Отправлено 12 April 2016 - 06:06

Добрый день.

Как можно у элемента jbadvert включить одновременно два режима: дата окончания публикации + режим php?

 

и еще вопрос

  1. В настройках адверта выставляем режим работы "Дата окончания публикации" (MODE_EXPIREDATE).
  2. Почему, если вручную в файле jbadvert.php для этого режима соответствующее условие) добавить строку на выполнение "кода ПХП" адверта:
  3. eval($mParams->get('item_php_eval'));
  4. код не выполняется, игнорируется.
  5.  
  6. Выполняется только в режиме работы адверта в MODE_PHP, в остальных случаях нет, если даже добавить этот код вне всех проверочных условий.
  7. Например:
  8. public function modifyItem($params = null, $order = null)
  9. {
  10. .....
  11.  
  12. eval($mParams->get('item_php_eval')); //игнорируется
  13.  
  14. $this->app->table->item->save($item);
  15.  
  16. return true;
  17. }

Сообщение отредактировал Chester1988: 12 April 2016 - 06:23

  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 12 April 2016 - 16:40

Chester1988 сказал(а) 12 Апр 2016 - 05:06:

Как можно у элемента jbadvert включить одновременно два режима: дата окончания публикации + режим php?

Включить 2 режима без изменения элемента у вас не получится. Вам необходимо в XML добавить новый тип:

  1. \media\zoo\applications\jbuniversal\elements\jbadvert\jbadvert.xml

Далее уже в методе modifyItem сделать проверку на свой тип работы элемента и с копипастить код из нужных типов работы элемента.

Или же сделать дополнительные проверки для нужных модов:

eade_200x0.png

Не проверял, но должно сработать.

Chester1988 сказал(а) 12 Апр 2016 - 05:06:

eval($mParams->get('item_php_eval')); //игнорируется

Какой код вы выполняете? 


  • 0
Изображение
 

#3 usersJbzoo

usersJbzoo

Отправлено 13 April 2016 - 02:14

Cheren-dow сказал(а) 12 Апр 2016 - 15:40:

Включить 2 режима без изменения элемента у вас не получится. Вам необходимо в XML добавить новый тип:

  1. \media\zoo\applications\jbuniversal\elements\jbadvert\jbadvert.xml

Далее уже в методе modifyItem сделать проверку на свой тип работы элемента и с копипастить код из нужных типов работы элемента.

Или же сделать дополнительные проверки для нужных модов:

eade_200x0.png

Не проверял, но должно сработать.

 

 

Какой код вы выполняете? 

 

этот: 

  1. $item->created =$this->app->date->create()->toSQL();
  2. $this->app->table->item->save($item);
  3. $element = $item->getElement('aa60fb94-7d02-47b5-9b8c-49990121ce7e');
  4. $data = (array)$element->data();
  5. $data['option'][0] = 'da';
  6. $element->bindData($data);
  7. $this->app->table->item->save($item);

  • 0

#4 usersJbzoo

usersJbzoo

Отправлено 13 April 2016 - 07:18

Как Вы писали ранее,

В jbadvert.xml добавили:

  1. <param name="mode" type="list" default="publish" label="JBZOO_JBADVERT_MODE"
  2. ...
  3. <option value="activate">JBZOO_JBADVERT_MODE_ACTIVATE</option>
  4. </param>

В jbadvert.php внесли:

  1. ...
  2.  
  3. } else if ($mode == self::MODE_PHP || $mode == 'activate') { // execute php code
  4. eval($mParams->get('item_php_eval'));
  5. }
  6.  
  7. ...
  8.  
  9. else if ($mode == self::MODE_EXPIREDATE || $mode == 'activate') { // set new expire date (publish date)
  10.  
  11. $addTime = 86400 * $this->app->jbvars->number($mParams->get('item_expiredate_timeout', 30));
  12. $oldDate = time();
  13. ....

Режимы не хотят отрабатывать.


  • 0

#5 SmetDenis

SmetDenis

Отправлено 15 April 2016 - 07:07

Можете показать весь код элемента? Приложить файл например.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#6 usersJbzoo

usersJbzoo

Отправлено 15 April 2016 - 11:41

Пока решили этот вопрос, включив режим MODE_PHP, добавив в код PHP у элемента код для MODE_EXPIREDATE.

 

Получается, в режиме MODE_PHP код 

  1. eval($mParams->get('item_php_eval'));

отрабатывается, иначе, в любом случае, игнорируется.

 

Например, для элемента в режиме MODE_EXPIREDATE

  1. else if ($mode == self::MODE_EXPIREDATE) { // set new expire date (publish date)
  2.  
  3.             $addTime = 86400 * $this->app->jbvars->number($mParams->get('item_expiredate_timeout', 30));
  4.             $oldDate = time();
  5.  
  6.             if ($time = strtotime($item->publish_down)) {
  7.                 if ($time > 0) {
  8.                     $oldDate = $time;
  9.                 }
  10.             }            
  11. $item->publish_down = $jbdate->toMysql($oldDate + $addTime);
  12.  
  13. eval($mParams->get('item_php_eval')); //не сработает!!!
  14. }

 

Прикрепленные файлы

  • Прикрепленный файл  jbadvert.xml   4.69К   133 Количество загрузок:
  • Прикрепленный файл  jbadvert.php   13.29К   95 Количество загрузок:

  • 0

#7 SmetDenis

SmetDenis

Отправлено 18 April 2016 - 09:04

Chester1988 сказал(а) 15 Апр 2016 - 10:41:

отрабатывается, иначе, в любом случае, игнорируется.   Например, для элемента в режиме MODE_EXPIREDATE
 

Даже не представляю почему, т.к код верный. Главное чтобы в item_php_eval был текст и прошла проверка для publish_down

 

А не проще сразу в MODE_EXPIREDATE вписать свой код и не использовать eval  совсем?


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#8 usersJbzoo

usersJbzoo

Отправлено 18 April 2016 - 09:37

Режим MODE_EXPIREDATE отрабатывает также у других элементов адверт, у которых нет PHP кода.


  • 0

#9 SmetDenis

SmetDenis

Отправлено 18 April 2016 - 09:48

Тогда сделать собственные режимы по аналогии с существующими - будет более правильный вариант решения, чем смешивать это все вокруг одного MODE_EXPIREDATE.

 

Не получилось?


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#10 usersJbzoo

usersJbzoo

Отправлено 18 April 2016 - 11:03

Согласен, попробуем.


  • 0





Темы с аналогичным тегами jbadvert

Click to return to top of page in style!