Перейти к содержанию

aplayer

Актив
  • Постов

    407
  • Зарегистрирован

  • Посещение

  • Победитель дней

    9

Весь контент aplayer

  1. капчу чтоли взломали? Второй уже за сегодня.
  2. И еще вопрос на злобу дня. У меня есть блок php кода в приложении Pages. Там стоит настройка "Не кешировать блок" Но он иногда редко и рандомно кешируется. Из за этого некоторые пользователи получают недостоверную и чужую информацию. Я заметил что кеширование происходит если страница долго грузится. То есть некоторые пользователи иногда могут увидеть блок который отображался ранее другому пользователю. Сейчас в моем плагине какое либо кеширование категорически запрещено. Если у пользователя долго грузится страница, он не должен видеть кешированного чужого блока. Пусть он вообще ничего не увидит, пусть хоть 502 страницу получает, но никакого кэша быть не должно. С плагином не будет таких же ситуаций как с блоками Pages?
  3. нет. Просто перекидывает на последнюю страницу форума. На стандартной теме то же самое.
  4. Все {template="phtml" group="plugins" location="global" app="core"} не кешируется но через нее нельзя передать параметры. Но эта проблема решается через хуки кода. А то что она вызывала ошибку, то это оказывается в данном форуме есть баг. Текст этого форума между буквами имеет null-байты и не может использоваться при копировании. Скопированный текст в редакторе может быть выглядеть без косяков и даже подсветка синтаксиса ничего не покажет, но при компиляции кода вызовет ошибку. Надеюсь у моего форума такой проблемы нет
  5. уже нет сил проверять. Этот код выдает ошибку "отсутсвует файл phtml" хотя файл есть. expression не дает кешироваться все остальные методы кешируются
  6. Иногда надо глянуть, что было в удаленных постах. В панели модератора в разделе удаленного контента при клике по ссылкам просто открывает форум на последней странице, а удаленный пост не отображается. В конец адреса страницы добавляется параметр ?tab=comments&showDeleted=1#comment-12345 Но даже с правами админа не могу увидеть удаленный пост. Чтобы поглядеть пост, надо сначала сделать его скрытым, а потом смотреть на форуме и потом снова удалять. Не очень удобно. Есть возможность поглядеть удаленное без включения скрытия?
  7. И все таки если в хуке шаблона \IPS\Theme::i()->getTemplate('plugins', 'core', 'global')->test() без expression, то результат кешируется. А вот то же самое в хуке кода не кешируется.
  8. то же самое нашел тут https://github.com/DoberBober/newyear-garland
  9. Это проверим. Тогда возникает вопрос. А на сколько времени кешируется плагин? Я вчера вечером засек время и с утра он ещё в кеше. Часов 8. В настройках форума для гостей 30 секунд. Для каких-то блоков 5 минут. Крон работает. Есть у меня задумки сделать кешурующийся плагин, но чтобы не более суток. Но в данный момент я это время получается не контролирую.
  10. Если до этого я хотел чтобы хук отображал шаблон передавая ему динамические данные, что было бы очень удобно. то сейчас шаблон вызывает хук. Тоже сгодится. Главное чтобы отсутствие кеширования при вызове с помощью expression не являлось недокументированной возможностью. Иначе пофиксят этот баг и все полетит... к чертям.
  11. насколько я понял если его не прописать в хуке шаблона, то весь плагин закешируется. Вся соль как раз в нем. прямой вызов - \IPS\Theme::i()->getTemplate... кешируется '{expression="\IPS\Theme::i()->getTemplate... не кешируется а дальше финт ушами чтобы не писать большую часть php-кода на логике шаблона.
  12. Оставлю здесь заметку для себя чтобы не забыть. создаем хук шаблона phtml шалон хук темы //<?php /* To prevent PHP errors (extending class does not exist) revealing path */ if (!\defined('\IPS\SUITE_UNIQUE_KEY')) { exit; } class hook90 extends _HOOK_CLASS_ { /* !Hook Data - DO NOT REMOVE */ public static function hookData() { return array_merge_recursive( array ( 'globalTemplate' => array ( 0 => array ( 'selector' => '#ipsLayout_mainArea', 'type' => 'add_inside_start', 'content' => '{expression="\IPS\Theme::i()->getTemplate(\'plugins\',\'core\', \'global\')->test()"}', ), ), ), parent::hookData() ); } /* End Hook Data */ } В нем главное прописать '{expression="\IPS\Theme::i()->getTemplate(\'plugins\',\'core\', \'global\')->test()"}' и можно про этот хук забыть. Cоздаем хук кода с классом \IPS\core\modules\front\system\plugins В нем создаем функцию (_test()), которая и будет выполнять классический php //<?php /* To prevent PHP errors (extending class does not exist) revealing path */ if (!\defined('\IPS\SUITE_UNIQUE_KEY')) { exit; } class hook91 extends _HOOK_CLASS_ { public function _test() { return time(); } } в шаблоне phtml пишем <ips:template parameters="" /> {{$plugins = new \IPS\core\modules\front\system\plugins; $time = $plugins->_test();}} {$time} По факту мы вызвали метод класса $plugins->_test(); который будет выполнен без кеширования. поправьте если что не так или укажите недостатки
  13. не удобно. Надо будет строчек 200 перевести в шаблонный {{php}} Выше уже был спор на эту тему, не надо к нему возвращаться. Изначально мне бы хотелось получить динамические данные в хуке. А потом передать их в шаблон. И чтобы это не кешировалось. А можно как нибудь в хуке создать функцию и вызвать её в шаблоне?
  14. не помогает. Получается если expression не в хуке, то результат кешируется. Кешируется сам хук без expression. Вот такой вот замкнутый круг.
  15. WaNted и всетаки '{expression="\IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' )->phtml( $params )"}'; в этой конструкции не работает. Хотелось бы передавать параметры в шаблон
  16. Вроде заработало. Надеюсь \IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' )->phtml( $params ); в этой конструкции будет работать без кеширования
  17. Вопрос стоит очень остро. версия форума 4.4.9 прилагаю тестовый плагин с исходниками. Тестировал на разных сайтах. Итог один. Если выключить режим разработчика PHP выполняется 1 раз и результат выполнения замораживается для всех пользователей навсегда. Тестовый плагин при каждом обновлении страницы, между навигатором и контентом должен выводить результат функции time() - постоянно увеличивающееся число. Но но выводит только постоянное число. plugins.7z
  18. Если выключить режим разработчика, то вот такой хук зависает. Кешируется и обновляется раз в пол часа //<?php /* To prevent PHP errors (extending class does not exist) revealing path */ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) ) { exit; } class hook73 extends _HOOK_CLASS_ { /* !Hook Data - DO NOT REMOVE */ public static function hookData() { $content = time(); return array_merge_recursive( array ( 'globalTemplate' => array ( 0 => array ( 'selector' => '#ipsLayout_mainArea', 'type' => 'add_inside_start', 'content' => $content, ), ), ), parent::hookData() ); } /* End Hook Data */ } Он должен при обновлении страницы выводить результат функции time() Если сменить пользователя, то он тоже видит цифру, которая была сгенерирована у предыдущего пользователя.
  19. установил плагин на тестовую копию боевого сайта. На нем блок начал кешироваться. Причем так, что одни пользователи видят кешированный блок предназначенный другим пользователям. У меня цель создать плагин который будет выдавать динамическую информацию, уникальную для каждого пользователя. Поэтому блок не должен кешироваться и отображаться одно и тоже разным пользователям На сайте на котором разрабатывался плагин, все хорошо. Наверно из за режима разработчика.
  20. да включен. Предположительно это похоже не сессию. В течении определенного времени после активности изменения принимаются, а после как будто где-то кешируются и больше исходники не читаются.
  21. И еще такой вопрос. Когда я правлю файлы хуков и шаблоны phtml, то какое-то время сайт реагирует на изменения. Но через некоторое время перестает. То-есть я вношу правки в файлы, а сайт продолжает работать как будто ничего не изменилось. Чтобы изменения вступили в силу надо плагин скачать и заново установить. А можно ли что нибудь сделать так чтобы не пришлось переустанавливать плагин? Ведь какое-то время изменения применяются без переустановки.
  22. WaNted вот такой код завершается ошибкой Whoops \ Exception \ ErrorException (E_NOTICE) Undefined variable: secret_key <ips:template parameters="$secret_key" /> <div>{$secret_key}</div>
  23. В документации много где сказано, что в шаблон можно передать параметры чрез эту строку. И больше ни слова ка именно их передавать. <ips:template parameters="$param1" /> Как я не пытаюсь эти параметры передать мне все пишет ошибку типа $param1 не определена или об отсутствии аргументов у функции. Как мне из хука перекинуть несколько параметров в шаблон phtml? вот пример хука //<?php /* To prevent PHP errors (extending class does not exist) revealing path */ if (!\defined('\IPS\SUITE_UNIQUE_KEY')) { exit; } class hook49 extends _HOOK_CLASS_ { /* !Hook Data - DO NOT REMOVE */ public static function hookData() { $secret_key = "secret_key"; $content = '{template="phtml" group="plugins" location="global" app="core"}'; return array_merge_recursive(array( 'globalTemplate' => array( 0 => array( 'selector' => '#ipsLayout_mainArea', 'type' => 'add_before', 'content' => $content, ), ), ), parent::hookData()); } /* End Hook Data */ } Как отправить переменную $secret_key в шаблон PHTML чтобы ее можно было отобразить на странице?
  24. при разработке плагина использовал в хуке функцию in_array мне выдает такую ошибку Не могу понять что это такое и как с этим бороться. Я так понимаю движок не дает мне использовать эту функцию в открытом виде. Что делать?
×
×
  • Создать...