Невозможно отредактировать статью после установки системного плагина

Я разработал интерфейсный системный плагин для Joomla 3.0, который заменяет ключевые слова для объектов в формате HTML. Это прекрасно работает в моей локальной тестовой среде, но при установке на размещенный сайт (WHM/cPanel) вызывает проблемы с областью администрирования и не позволяет администраторам редактировать статьи.

Когда администратор нажимает на статью для редактирования, страница пытается загрузиться, а затем возвращается на ту же страницу. Я разработал его только как интерфейсный плагин, поэтому я не должен влиять на область администрирования.

Проблема также заключается в том, что администратор не может создавать что-либо новое (новости, блоги, контент, пункты меню и т. д.).

Поскольку в моей лаборатории этого не происходит, я могу только предположить, что проблема связана с некоторыми настройками сервера, которые мне, возможно, потребуется включить/отключить. У меня есть полный административный доступ к WHM, cPanel и Joomla, поэтому я могу изменять настройки, когда это необходимо...

Что я заметил:

URL-адрес статьи изменится с:

/administrator/index.php?option=com_content&view=article&layout=edit&id=7

to:

/administrator/index.php?option=com_content&view=article&layout=edit&id=7

когда плагин включен. Обратите внимание, что амперсанд изменился на amp;. Это заставляет меня думать, что это может быть как-то связано с кодировкой символов UTF-8, установленной в MySQL на utf8general_ci.

Любые указатели на конфигурации, которые мне могут понадобиться изменить, будут приняты с благодарностью.

Вопрос: как предотвратить это (не удаляя основной плагин).


person ᴍᴀᴛᴛ ʙᴀᴋᴇʀ    schedule 22.02.2013    source источник
comment
Как это вы не даете ему работать в админке? На какие события отвечает плагин? Кодируемые амперсанды не имеют ничего общего с utf8, это связано с амперсандами и всеми кодируемыми специальными символами, чтобы они проверялись. Вы можете показать код, чтобы получить помощь.   -  person Elin    schedule 02.03.2013
comment
@Elin, с тех пор я добавил проверку перед вызовом класса, чтобы убедиться, что IsAdmin() === false; Это не позволило плагину сломать структуру Joomla, но кажется странным, что это происходит только в размещенной среде, а не локально.   -  person ᴍᴀᴛᴛ ʙᴀᴋᴇʀ    schedule 04.03.2013
comment
Это определенно странно, и я не могу понять, почему это происходит, если, возможно, ваша версия php немного отличается?   -  person Elin    schedule 04.03.2013


Ответы (1)


Если вы создаете системный плагин, который должен работать только на интерфейсе, вы должны проверить в своем плагине, является ли текущая страница интерфейсом. Вы можете сделать это с помощью этой функции: JFactory::getApplication()->isSite() или JFactory::getApplication()->isAdmin()

Пример использования (я предполагаю, что вы используете событие onAfterRender):

function onAfterRender() {
    // Exit if current page is from Administration panel
    if( JFactory::getApplication()->isAdmin()  ) return;

    /* your plugin main code goes here*/
}

Это не позволит вашему плагину изменить вывод панели администрирования. Если вы уже сделали это, и он проверяет, как должен, то причина ваших проблем ни в коем случае не в этом плагине.

person Artur Stępień    schedule 14.08.2013