Joomla 1.5 Плагин для преобразования вывода содержимого, которое выдаёт модуль

Тема в разделе "Создание расширений для Joomla", создана пользователем gdX, 26.11.2008.

  1. Offline

    gdX Недавно здесь

    Регистрация:
    26.11.2008
    Сообщения:
    3
    Симпатии:
    0
    Можно ли реализовать подобное, не влезая в код модуля?
    Как создавать плагины для модификации конента разобрался, а вот чтобы менять содержимое вывода модуля — не очень понял.
    Знакомый программер сказал так:
    «Вот тут тебе надо проверить, если в 1.5 контент считаеться чем-то глобальным то да»
    Какой подход при этом надо использовать и возможно вообще такое?
     
  2.  
  3. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Скорее всего они не дожили до мамботов для модулей. Хотя если честно еще в 1.0.х я видел какую-то непонятную настройку про "мамботы в модулях".

    Посмотри в документации какие бывают события для мамботов (docs.joomla.org или api.joomla.org) ну и если есть чего-нибудь воздействующее на модули - то да, типа можно. Но я чую, что нельзя.
     
  4. Offline

    gdX Недавно здесь

    Регистрация:
    26.11.2008
    Сообщения:
    3
    Симпатии:
    0
    Есть такое предложение от народа:

    можно как вот сделать:
    Есть модуль. Он, допустим, выводит переменную $out

    В нём создаем событие типа
    $result = $dispatcher->trigger('onPrepareMyModule, array($out) );

    А в плагине ловим наше событие
    $mainframe->registerEvent('onPrepareMyModule,'plgChange');

    Т.е. модификация текста файла минимальная (добавление 1 строки), а результат которого и добивались.

    Буду пробовать...
     
  5. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Можно-то можно. Но мы говорили об общем случае. Если уж и модифицировать, то модицифировать не модули, а код в джумле, который эти модули исполняет. Она по-любому вывод модулей ловит. Там и фигачить.
     
  6. Offline

    Espoir Недавно здесь

    Регистрация:
    08.07.2009
    Сообщения:
    8
    Симпатии:
    0
    Так увенчалась у кого-нибудь эта задача каким-нибудь результатом? Хорошим или плохим, не важно. Поделитесь опытом пожалуйста. Хотелось бы знать, продолжать копать в данном направлении или стоит искать другие решения.:)
     
  7. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Espoir, о чем, собственно, твой пост? Все что нужно для счастливого детства в посте уже есть. :)
     
  8. Offline

    Espoir Недавно здесь

    Регистрация:
    08.07.2009
    Сообщения:
    8
    Симпатии:
    0
    А пост собственно о том,что ничего не получается сделать по вышеизложенным постам + по инфе которая имеется в инете. Вот я и хотела узнать, получилось ли у кого-нить перехватывать события из модуля. Я лузер, поэтому прошу о помощи:[. Не видать мне счастливого детства:(.Подскажите пожалуйста, что я делаю не так.
    Вот например,
    в коде модуля я пишу следующее:

    $dispatcher = &JDispatcher::getInstance();
    JPluginHelper::importPlugin('modmenu');
    $out = 'Проверка взаимодействия модуля и плагина :(';
    $arguments = array(&$out);
    $result = $dispatcher->trigger('onPrepareMyModule', $arguments);

    А в плагине:
    $mainframe->registerEvent('onPrepareMyModule','plgmodmenuPrepareMyModule');

    function plgmodmenuPrepareMyModule (&$out) {

    $pattern = '/\:\(/';
    $replacement = ':)';
    $out->text = preg_replace($pattern, $replacement, $out->text);
    }
     
  9. Offline

    Espoir Недавно здесь

    Регистрация:
    08.07.2009
    Сообщения:
    8
    Симпатии:
    0
    Со смайлами какая-то ерунда вышла, сорри.
    Ну тогда например,
    $pattern = 'Проверка';
    $replacement = 'Тест';
     
  10. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Хорошо. По порядку давай. Вопрос номер один - модуль твой собственный или какой-то-вообще-левый-непонятно-какой.
     
  11. Offline

    Espoir Недавно здесь

    Регистрация:
    08.07.2009
    Сообщения:
    8
    Симпатии:
    0
    Модуль стандартный джумловский mod_mainmenu. Туда добавили дополнительную функцию. А теперь задача вытащить эту функцию, чтобы не трогать исходный код. Вчера как только не пыталась сделать и с помошью класса и с помошью функции, но плагин "не слышит" объявленное в модуле событие.
    Не могу понять,что я делаю не так|H|
    1. Подготовила сам плагин (xml -файл и пустой php). Заархивировала,поставила через админку, все отлично. Теперь у меня существует плагин под названием addurl, который находится в созданной группе modmenu.
    2. Теперь необходимо как я понимаю добавить событие в файл модуля.

    $dispatcher = &JDispatcher::getInstance();
    JPluginHelper::importPlugin('mod_mainmenu');
    $arguments = array(&$plg_item);
    $plg_result = $dispatcher->trigger('onPrepareModmenu', $arguments );
     
  12. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Экая задумка. А не проще ли прямо в /modules/modmainmenu/helper.php или какой там файл взять и заменять. Один фиг надо менять "ядро".
     
  13. Offline

    Espoir Недавно здесь

    Регистрация:
    08.07.2009
    Сообщения:
    8
    Симпатии:
    0
    Так уже и реализовано...Хотелось бы пройти другой путь, если он возможен. Здесь идея понять возможно ли это вообще сделать?
     
  14. Offline

    Espoir Недавно здесь

    Регистрация:
    08.07.2009
    Сообщения:
    8
    Симпатии:
    0
    Если надо менять "ядро", то подскажите пожалуйста что и где надо сделать:[
     

Поделиться этой страницей

Загрузка...