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


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

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

jbadvert

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

#1 usersJbzoo

usersJbzoo

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

Добрый день.

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

 

и еще вопрос

В настройках адверта выставляем режим работы "Дата окончания публикации" (MODE_EXPIREDATE).
Почему, если вручную в файле  jbadvert.php для этого режима (в соответствующее условие) добавить строку на выполнение "кода ПХП" адверта: 
eval($mParams->get('item_php_eval'));
код не выполняется, игнорируется.

Выполняется только в режиме работы адверта в MODE_PHP, в остальных случаях нет, если даже добавить этот код вне всех проверочных условий.
 Например:
  public function modifyItem($params = null, $order = null)
    {
       .....

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

        $this->app->table->item->save($item);

        return true;
    }

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

  • 0

#2 Cheren-dow

Cheren-dow

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

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

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

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

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

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

eade_200x0.png

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

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

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


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

#3 usersJbzoo

usersJbzoo

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

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

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

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

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

eade_200x0.png

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

 

 

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

 

этот: 

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

  • 0

#4 usersJbzoo

usersJbzoo

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

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

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

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

В jbadvert.php внесли:

...

} else if ($mode == self::MODE_PHP || $mode == 'activate') { // execute php code
            eval($mParams->get('item_php_eval'));
}

...

else if ($mode == self::MODE_EXPIREDATE || $mode == 'activate') { // set new expire date (publish date)

            $addTime = 86400 * $this->app->jbvars->number($mParams->get('item_expiredate_timeout', 30));
            $oldDate = time();
....

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


  • 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 код 

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

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

 

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

else if ($mode == self::MODE_EXPIREDATE) { // set new expire date (publish date)

            $addTime = 86400 * $this->app->jbvars->number($mParams->get('item_expiredate_timeout', 30));
            $oldDate = time();

            if ($time = strtotime($item->publish_down)) {
                if ($time > 0) {
                    $oldDate = $time;
                }
            }            
 $item->publish_down = $jbdate->toMysql($oldDate + $addTime);

 eval($mParams->get('item_php_eval')); //не сработает!!!
}

 

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

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

  • 0

#7 SmetDenis

SmetDenis

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

отрабатывается, иначе, в любом случае, игнорируется.   Например, для элемента в режиме 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!