Joomla 1.5 Вывод тела статьи ДО вывода ее заголовка при использовании плагина

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

  1. Offline

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

    Регистрация:
    18.01.2008
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Доброго времени.

    Написал для себя плагин, заменяющий в теле статьи метку типа {abc NNN} на форматированный список статей из категории с номером NNN.
    Код (PHP):
    1. <?php
    2. // no direct access
    3. defined( '_JEXEC' ) or die( 'Restricted access' );
    4.  
    5. $mainframe->registerEvent('onAfterDisplayTitle','onCheck');
    6.  
    7. //jimport('joomla.event.plugin');
    8.  
    9. function onCheck(&$row, &$params)
    10. {
    11.     $row->text = preg_replace_callback("({abc (\d+)})", "onReplace", $row->text);
    12. }
    13.  
    14. function onReplace($matches)
    15. {
    16.     $catid = (int)$matches[1];
    17. /* тут запрос к базе о статьях в категории */
    18.     $db = JFactory::getDBO();
    19.     $query = "SELECT
    20.         a.id as id,
    21.         a.title as title
    22.         FROM #__content AS a WHERE a.catid = ".$catid." AND a.state = 1 ORDER BY a.ordering";
    23.     $db->setQuery( $query );
    24.     $list = $db->loadAssocList();
    25.  
    26.     $u = JRequest::getVar('Itemid');
    27.    
    28. /* тут формируется список */
    29.  
    30.     echo $text;
    31. }
    32.  
    33. ?>


    В результате получаю то, что хочу - полностью сформированный перечень, с правильным форматированием, НО! вместо порядка Заголовок, Первая часть текста, Форматированный Список, Вторая часть текста получаю Форматированный список, Заголовок, Первая часть, Вторая часть.
    Перебрал все возможные объявления триггеров для Жумлы - onPrepareContent, onAfterDisplayTitle, onBeforeDisplayContent, onAfterDisplayContent - реакция нулевая. Видимо не в этом дело.

    Подозреваю, что решение должно быть элементарным, но где копнуть мысли кончились. Ваши предложения?

    Нашел в чем ошибка - функция должна была возвращать значение для замены, а не выводить текст. Т.е. ошибка в строке

    Код (PHP):
    1. echo $text;

    надо
    Код (PHP):
    1. return $text;


    Модератору: тему можно закрыть.
     
    Последнее редактирование: 15.02.2010
  2.  

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

Загрузка...