Форум русской поддержки Joomla!® CMS
10.12.2016, 09:05:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Как применить один плагин к заданному тексту (внутри модуля)?

 (Прочитано 523 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kostushko
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 40


« : 13.02.2015, 13:56:56 »

Для применения всех плагинов к любому тексту можно использовать код типа этого:

Код:
JPluginHelper::importPlugin('content');
$item->text = JHtml::_('content.prepare', $item->text);

$dispatcher = &JDispatcher::getInstance();
$dispatcher->trigger('onContentPrepare', array('com_content.article', &$item, &$item->params, 0));
Этот код применяет все плагины, к элементу $item.

Подскажите как применить к заданному тексту только один плагин?
Записан
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6461



« Ответ #1 : 13.02.2015, 14:11:22 »

Из группы контент-плагинов оставьте опубликованным только один нужный. Вышеприведенный вами код лучше не править.
Записан
Kostushko
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 40


« Ответ #2 : 13.02.2015, 14:17:45 »

Дак мне нужно чтобы плагины работали, выше приведенный код работает в модифицированном модуле mod_fj_related_plus и выводит картинки, которые урезает/сжимает и кеширует multithumb, но вместе с multithumb отрабатывает плагин комментариев, и вносит лишние изменения.

Можно сделать так чтобы заданную переменную в модуле обработал только один плагин - multithumb, не отключая остальные?
Записан
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6461



« Ответ #3 : 13.02.2015, 14:28:54 »

Штатно, имхо, никак.
Записан
Kostushko
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 40


« Ответ #4 : 13.02.2015, 14:38:11 »

ок, спасибо за ответ.
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #5 : 13.02.2015, 14:40:23 »

А что мешает вам содать свое событие и запустить его в нужном месте?
Записан
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6461



« Ответ #6 : 13.02.2015, 14:43:49 »

Это будет уже правка ядра, которая рискует слететь при ближайшей обнове.
Записан
Arkadiy
Группа развития
*****

Репутация: +432/-0
Offline Offline

Пол: Мужской
Сообщений: 5317


Крепитесь, други.


« Ответ #7 : 13.02.2015, 15:08:06 »

Можно, вчера видел, сейчас в винду зайду и напишу как.
Записан
Arkadiy
Группа развития
*****

Репутация: +432/-0
Offline Offline

Пол: Мужской
Сообщений: 5317


Крепитесь, други.


« Ответ #8 : 13.02.2015, 15:25:10 »

Код
$plugins = JPluginHelper::getPlugin('нужная_вам_группа');
 
$className = 'название_класса_вашего_плагина';
if (class_exists($className))
{
   $object = new stdClass();
   $plugin = new $className($object, array('params' => 'здесь параметры плагина либо строкой, либо JRegistry'));
   $plugin->функция_плагина(аргументы_функции);
}
 
Проблема может быть только с $object, не знаю можно ли пустой объект передавать.
Записан
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6461



« Ответ #9 : 13.02.2015, 15:26:42 »

Эээ, где применять?
Записан
Arkadiy
Группа развития
*****

Репутация: +432/-0
Offline Offline

Пол: Мужской
Сообщений: 5317


Крепитесь, други.


« Ответ #10 : 13.02.2015, 15:27:54 »

Где угодно. Человеку надо в модуле - пусть в модуле применяет.
Записан
Kostushko
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 40


« Ответ #11 : 13.02.2015, 15:31:13 »

Arkadiy, спасибо, сейчас попробую.
Записан
Arkadiy
Группа развития
*****

Репутация: +432/-0
Offline Offline

Пол: Мужской
Сообщений: 5317


Крепитесь, други.


« Ответ #12 : 13.02.2015, 15:34:28 »

Отпишитесь обязательно о результатах.
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #13 : 13.02.2015, 15:39:52 »

Это будет уже правка ядра, которая рискует слететь при ближайшей обнове.
Ничего подобного. Напишите плагин на событие "onMyNoBodyBussiness" и вызывайте его где угодно
Код
JPluginHelper::importPlugin('группа_плагина');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onMyNoBodyBussiness',array(&$что_нужно_менять));
 
Записан
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6461



« Ответ #14 : 13.02.2015, 16:43:49 »

От, блин, век живи - век учись, продолжение знаете Azn
Записан
Kostushko
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 40


« Ответ #15 : 13.02.2015, 16:45:43 »

Arkadiy, не могу запустить приведенный код, сделал так:

Код:
$plugin = JPluginHelper::getPlugin( 'content', 'multithumb' );
$params = new JRegistry();
$params->loadString($plugin->params);

$className = 'plgContentMultithumb';
if (class_exists($className))
{
  $object = new stdClass();
  $plugin2 = new $className($object, array('params'=>$params));
  $plugin2->onContentPrepare('mod_fj_related_plus.nm', &$item, $item->params, 0);
}

Ошибка где-то в строке   $plugin2 = new $className($object, array('params'=>$params)); Точную ошибку назвать не могу, сервер просто выдает 502 с формулировкой в логах - upstream sent too big header while reading response header from upstream. Но вот вариант ниже сработал верно.

Код:
       JPluginHelper::importPlugin('content');
        $dispatcher = &JDispatcher::getInstance();
        $dispatcher->trigger('onMyNoBodyBussiness123', array('mod_fj_related_plus.nm', &$item, &$item->params, 0));
« Последнее редактирование: 13.02.2015, 16:59:04 от Kostushko » Записан
Kostushko
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 40


« Ответ #16 : 13.02.2015, 16:54:28 »

robert,
Код:
       JPluginHelper::importPlugin('content');
        $dispatcher = &JDispatcher::getInstance();
        $dispatcher->trigger('onMyNoBodyBussiness123', array('mod_fj_related_plus.nm', &$item, &$item->params, 0));
Все разобрался, этот код работает правильно. Спасибо большое!
« Последнее редактирование: 13.02.2015, 16:59:29 от Kostushko » Записан
Wertos
Завсегдатай
*****

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 543


« Ответ #17 : 02.02.2016, 14:18:06 »

Апну тему
Тоже пользуюсь multithumb.
Не могу понять, как применить функцию резайса в своём плагине, даже не самого резайса. Плагин уменьшает изображения и кеширует их на диске, если изображение такое-же уже есть, то он выводит из кеша.
Вот данный функционал и требуется...
Пробовал вот так
Код
return (new plgContentMultithumb)->_onPrepareContent($context, $this->prepareHTML($data), $params, $page));
Код:
[02-Feb-2016 13:11:37 Europe/Moscow] PHP Fatal error:  Call to a member function attach() on null in /var/www/xxxxxxxxxxxx/libraries/joomla/event/event.php on line 37
[02-Feb-2016 13:11:37 Europe/Moscow] PHP Stack trace:
[02-Feb-2016 13:11:37 Europe/Moscow] PHP   1. {main}() /var/www/xxxxxxxxxxxx/index.php:0
[02-Feb-2016 13:11:37 Europe/Moscow] PHP   2. JApplicationCms->execute() /var/www/xxxxxxxxxxxx/index.php:45
[02-Feb-2016 13:11:37 Europe/Moscow] PHP   3. JApplicationSite->doExecute() /var/www/xxxxxxxxxxxx/libraries/cms/application/cms.php:252
[02-Feb-2016 13:11:37 Europe/Moscow] PHP   4. JApplicationSite->dispatch() /var/www/xxxxxxxxxxxx/libraries/cms/application/site.php:231
[02-Feb-2016 13:11:37 Europe/Moscow] PHP   5. JComponentHelper::renderComponent() /var/www/xxxxxxxxxxxx/libraries/cms/application/site.php:192
[02-Feb-2016 13:11:37 Europe/Moscow] PHP   6. JComponentHelper::executeComponent() /var/www/xxxxxxxxxxxx/libraries/cms/component/helper.php:372
[02-Feb-2016 13:11:37 Europe/Moscow] PHP   7. require_once() /var/www/xxxxxxxxxxxx/libraries/cms/component/helper.php:392
[02-Feb-2016 13:11:37 Europe/Moscow] PHP   8. JControllerLegacy->execute() /var/www/xxxxxxxxxxxx/components/com_content/content.php:38
[02-Feb-2016 13:11:37 Europe/Moscow] PHP   9. ContentController->display() /var/www/xxxxxxxxxxxx/libraries/legacy/controller/legacy.php:728
[02-Feb-2016 13:11:37 Europe/Moscow] PHP  10. JControllerLegacy->display() /var/www/xxxxxxxxxxxx/components/com_content/controller.php:106
[02-Feb-2016 13:11:37 Europe/Moscow] PHP  11. ContentViewArticle->display() /var/www/xxxxxxxxxxxx/libraries/legacy/controller/legacy.php:690
[02-Feb-2016 13:11:37 Europe/Moscow] PHP  12. JEventDispatcher->trigger() /var/www/xxxxxxxxxxxx/components/com_content/views/article/view.html.php:171
[02-Feb-2016 13:11:37 Europe/Moscow] PHP  13. JEvent->update() /var/www/xxxxxxxxxxxx/libraries/joomla/event/dispatcher.php:160
[02-Feb-2016 13:11:37 Europe/Moscow] PHP  14. call_user_func_array:{/var/www/xxxxxxxxxxxx/libraries/joomla/event/event.php:69}() /var/www/xxxxxxxxxxxx/libraries/joomla/event/event.php:69
[02-Feb-2016 13:11:37 Europe/Moscow] PHP  15. plgContentrelated_item->onContentAfterDisplay() /var/www/xxxxxxxxxxxx/libraries/joomla/event/event.php:69
[02-Feb-2016 13:11:37 Europe/Moscow] PHP  16. plgContentMultithumb->plgContentMultithumb() /var/www/xxxxxxxxxxxx/plugins/content/related_item/related_item.php:38
[02-Feb-2016 13:11:37 Europe/Moscow] PHP  17. JPlugin->__construct() /var/www/xxxxxxxxxxxx/plugins/content/multithumb/multithumb.php:25
[02-Feb-2016 13:11:37 Europe/Moscow] PHP  18. JEvent->__construct() /var/www/xxxxxxxxxxxx/libraries/cms/plugin/plugin.php:119

Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet