Обработка контекста мамботом
  • GoDrGoDr Май 2011
    Как мне в своём компоненте произвести обработку содержимого мамботами, например, introtext. Т.е. мне нужно обрабатывать {mosimage} и заменить их картинками
  • ArkadiyArkadiy Май 2011
    global $_MAMBOTS;
    $_MAMBOTS->loadBotGroup( 'content' );
    $params = new mosParameters('');
    $row = null;
    $row->text = $твои_данные;
    $_MAMBOTS->trigger( 'onPrepareContent', array( &$row, &$params, 0 ), true );
    $твои_данные = $row->text;
  • GoDrGoDr Май 2011
    вот спасибо :)
  • GoDrGoDr Май 2011
    что-то ошибки.. Мне нужно создать Объект $row?
  • GoDrGoDr Май 2011
    в общем я получаю следующие данные в функции
    $sql = "SELECT a.*, DATE_FORMAT(a.created, '%d.%m.%Y') AS data, c.id AS id_s, b.title AS title_c, c.title AS title_s
    FROM <a href="/search?Search=%23__content&amp;amp;Mode=like">#__content</a> AS a
    LEFT JOIN <a href="/search?Search=%23__categories&amp;amp;Mode=like">#__categories</a> as b ON a.catid=b.id
    LEFT JOIN <a href="/search?Search=%23__sections&amp;amp;Mode=like">#__sections</a> as c ON a.sectionid=c.id
    WHERE
    DATE_FORMAT(a.created, '%Y')=" . $year. "
    AND DATE_FORMAT(a.created, '%m')=" . $month. "
    AND DATE_FORMAT(a.created, '%d')=" . $day. "
    AND b.published='1'
    AND a.state='1'
    AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '" . $now . "')
    AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '" . $now . "')
    ORDER BY a.created
    ";

    Далее получаю данные и поочерёдно их вывожу
    $database->setQuery($sql);
    $rows = $database->loadObjectList();
    echo '<h1>Материалы за '.$day.' '.$lang->months_a[$month].' '.$year.' года</h1>';
    if(count($rows) > 0){
    foreach($rows as $row){
    $row->introtext = str_replace(array('{mosimage}','{hsimage}'), '', $row->introtext);
    GDCalendarHTML::viewContentSmall($row);
    }
    }else{
    GDCalendarHTML::viewContentNo();
    }

    где мне что вставить нужно.. у меня что-то не идёт?




  • ArkadiyArkadiy Май 2011
    Так а что не идет? если запрос данных не выдает, то он какой-то странный.
  • GoDrGoDr Май 2011
    если использовать тот код который привёл, то он тупо удаляет все картинки..

    Меняю на

    ...
    global $_MAMBOTS;
    $params = new mosParameters('');
    ...
    foreach($rows as $row){
    $_MAMBOTS->trigger( 'onPrepareContent', array( &$row, &$params, 0 ), true );
    GDCalendarHTML::viewContentSmall($row);
    }
    ...
    в тексте остаются всякие {mosimage}
    Если сделать так

    foreach($rows as $row){
    $row->text = $row->introtext;
    $_MAMBOTS->trigger( 'onPrepareContent', array( &$row, &$params, 0 ), true );
    $row->introtext = $row->text;
    }
    то тоже ничего не меняется
    Отредактированно GoDr в 2011-05-05 11:36:25
  • ArkadiyArkadiy Май 2011
    А у тебя мамбот заменяющий mosimage включен?
  • GoDrGoDr Май 2011
    конечно.. в com_content меняется же
  • GoDrGoDr Май 2011
    прикрепляю файл, вдруг я что упускаю
  • ArkadiyArkadiy Май 2011
    Ты забыл после объявления глобальной $_MAMBOTS

    $_MAMBOTS->loadBotGroup( 'content' );
  • GoDrGoDr Май 2011
    Поставил.. {...} убрались, но на картинки не заменились :(
  • ArkadiyArkadiy Май 2011
    Ну в остальном наверное дело не в мамботе, надо понять как хранится информация о картинках там, где она работает и сделать такое-же хранение где не работает.
  • GoDrGoDr Май 2011
    логично :)
    буду думать...
  • GoDrGoDr Май 2011
    картинки хранятся в таблице контента.. Обработку можно в принципе сделать и самому. Но я подумал что это не выход.. могут быть и другие мамботы по обработке картинок и они должны работать.. Так что возвращаемся к началу :(
  • GoDrGoDr Май 2011
    в общем $params не такой какой должен быть.. а именно для вывода картинок нужны эти переменные
    $params->image или $params->published
    $params->introtext или $params->intro_only

    но их нет.. видимо нужно свою обработку писать.. Пока выхода не нахожу
  • ArkadiyArkadiy Май 2011
    А кто мешает внутри мамбота любой запрос сделать?
  • GoDrGoDr Май 2011
    Arkadiy, ничего не мешает.. НО(!) В последнее время я часто начинаю использовать внутренние ресурсы Джустины, а именно библиотеки. И я понял одно, что они УЖАСНЫ. Они написаны исключительно для внутреннего потребления :( очень плохо.. Например, здесь я использую библиотеку Images и понимаю что она вообще написана для мамбота (ну не вся конечно) :)

    И чтобы её использовать универсально мне сейчас приходится писать отдельные функции в компоненте, вернее дополнения к имеющимся :(

    В общем пишу всё своё и заново...

    А на будущее.. нужно очень пересмотреть библиотеки и сделать их универсальными и действительно полезными!
  • ArkadiyArkadiy Май 2011
    Да, это правильная мысль.

Добро пожаловать!

Похоже, что Вы здесь впервые. Если хотите поучаствовать, нажмите на одну из этих кнопок!

Войти Зарегистрироваться

В теме отметились