TYPO3: изменить тип плагина с USER на USER_INT

У меня есть рабочее расширение TYPO3. Прилагается эта страница вики. Как я могу изменить код этого расширения, чтобы оно было типа USER_INT? Т.е. Я не хочу, чтобы TYPO3 кэшировал вывод этого плагина, и хочу, чтобы TYPO3 вызывал расширение каждый раз, когда страница использует это расширение, т.е. отключала кеширование для этого расширения.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
6 958
6

Ответы 6

Чтобы отключить кеширование для вашего расширения, перейдите в файл piX / class.tx_XXX_piX.php и удалите следующую строку (под объявлением вашего класса):

var $pi_checkCHash = true;

Вам также необходимо добавить следующую строку в основной метод (ниже $ this-> pi_loadLL ();):

$this->pi_USER_INT_obj=1;    // Configuring so caching is not expected. This value means that no cHash params are ever set. We do this, because it's a USER_INT object!

Сейчас я работаю над другим проектом, и у меня нет среды, чтобы проверить это, но это будет полезная информация для других людей, у которых есть такая же проблема. Благодарю за ваш ответ.

avernet 21.02.2009 04:26

Это не отключает кеширование, а только отключает проверку параметра cHash.

Sebs 21.09.2010 14:38

Хотя ваш ответ правильный, всегда лучше не изменять файлы классов php расширения. Либо попробуйте изменить его с помощью функции XCLASS, либо используйте (анонимный) метод ниже, изменив только файл ext_localconf.php.

Mateng 03.07.2011 10:28

Когда вы создали свое расширение с помощью Kickstarter, вам также необходимо перейти в файл [yourextension] /ext_localconf.php и изменить эту строку

t3lib_extMgm::addPItoST43($_EXTKEY,'piX/class.tx_yourextension_piX.php','_piX','list_type',0);

к этому:

t3lib_extMgm::addPItoST43($_EXTKEY,'piX/class.tx_yourextension_piX.php','_piX','list_type',1);

grunwalski, это наоборот, вы должны это изменить:

t3lib_extMgm::addPItoST43($_EXTKEY,'piX/class.tx_yourextension_piX.php','_piX','list_type',1);

к этому:

t3lib_extMgm::addPItoST43($_EXTKEY,'piX/class.tx_yourextension_piX.php','_piX','list_type',0);

Точно. «Если $ cached установлен как объект содержимого USER (cObject), создается - в противном случае создается объект USER_INT».

Fedir RYKHTIK 25.08.2011 03:21

Самый простой способ решить вашу проблему - вернуться в Extension Maganer, выбрать свое расширение, выбрать «Редактировать на Kickstarter» в раскрывающемся меню, а затем выбрать соответствующий плагин Frontend для редактирования его свойств.

Установите первый флажок, что означает, что вы хотите, чтобы ваши плагины отображались как объекты USER_INT cObjects. После этого нажмите кнопку «Просмотреть результат», снимите флажки со всех пользовательских файлов PHP (ваш собственный код, такие как модули и плагины) справа и нажмите кнопку «ЗАПИСАТЬ». Пожалуйста, будь осторожен. Если вы не снимите флажки у собственных файлов, они будут перезаписаны фиктивными файлами.

Правильный и полный способ сделать это - комбинация ответов @arturh и @Mehdi Guermazi:

  1. измените последний параметр в вызове addPItoST43() в ext_localconf.php с 1 на 0
  2. удалите строку var $pi_checkCHash = true; из определений свойств в заголовке класса pi1.
  3. добавьте строку $this->pi_USER_INT_obj=1; в начало функции main () в pi1.

Эти изменения идентичны тем, что вы получите при использовании метода kickstarter, описанного в решении @bencuss.

Отредактируйте файл setup.txt вашего расширения myext. Измените «USER» на «USER_INT».

plugin.tx_myext = USER_INT
plugin.tx_myxt {

Это расширение никогда не будет кэшироваться.

Другие вопросы по теме