Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 6 Ответов
  • 939 Просмотров
*

ksalab

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Пытаюсь сделать плагин (первый раз). Необходимо в определенное место страницы вывести определенный текст.
Но что-то не получается... Может кто подсказать?

В этом участке кода страницы:
Спойлер
[свернуть]

необходимо вставить определенное сообщение.

Пытаюсь так:
Спойлер
[свернуть]
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Поиск и замена части тела страницы
« Ответ #1 : 21.08.2016, 21:47:35 »
Используйте onContentPrepare вместо onContentAfterDisplay. Замену контента попробуйте так:
Код: php-brief
$pattern='#<input((?<!h4).)*<h4>Рецензии</h4>#s';
$replacement='<input type="hidden" name="Itemid" value="101"/></form></div><p>Работает !</p></div></div><div class="clear"></div></div><div class="customer-reviews"><h4>Рецензии</h4>';
$html=preg_replace($pattern,$replacement,$html);
Не будь паразитом, сделай что-нибудь самостоятельно!
*

ksalab

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Поиск и замена части тела страницы
« Ответ #2 : 23.08.2016, 13:27:20 »
сделал так:

Код: php
<?php

defined('_JEXEC') or die;

/**
 * Plug-in to enable insert installment vars into content
 */

class plgVmimstallmentVmimstallment extends JPlugin
{
public function onContentPrepare($context, &$article, &$params, $page = 0)
{
//Проверка на админку
/*
$app = JFactory::getApplication();
if ($app->getName()!= 'site') {
return true;
}
*/

// Получаем кодовое слово из параметров
$varname = '</form>

</div>



   </div>
</div>
<div class="clear"></div>


    </div>


    
<div class="customer-reviews"> <h4>Рецензии</h4>';
// $varname = $this->params->get('varname');

//Получаем тело сайта
$html = JResponse::getBody();

// Если тегов нет
/*
if (strpos($html, $varname) === false)
{
return true;
}
*/

//Задаем шаблон поиска
$pattern = '#<input((?<!h4).)*<h4>Рецензии</h4>#s';

    $replacement='<input type="hidden" name="Itemid" value="101"/></form></div><p>Работает !</p></div></div><div class="clear"></div></div><div class="customer-reviews"><h4>Рецензии</h4>';

    $html=preg_replace($pattern,$replacement,$html);

    //Запихиваем всё обратно в тело
JResponse::setBody($html);

}
}

все равно не срабатывает ((( что я делаю не так?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Поиск и замена части тела страницы
« Ответ #3 : 23.08.2016, 13:51:45 »
Если используете событие onContentPrepare, то нужно оперировать аргументом $article. При этом меняете только материал.
Если же хотите менять весь HTML перед выводом, то используйте onAfterRender.
Еще: $varname совершенно лишняя в вашей функции.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

ksalab

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Поиск и замена части тела страницы
« Ответ #4 : 23.08.2016, 15:36:58 »
Уже упростил максимально:
Код: php
<?php

defined('_JEXEC') or die;

/**
 * Plug-in to enable insert installment vars into content
 */

class plgContentVMImstallment extends JPlugin
{
  protected $autoloadLanguage = true;
 
// public function onContentPrepare($context, &$row, &$params, $page = 0)
public function onContentAfterRender($context, &$row, &$params, $page = 0)
{
// Получаем кодовое слово из параметров
$varname = 'Рецензии';
$pattern = 'Work !';

$row->text = str_replace($varname, $pattern, $row->text);

}

}

на страницах с материалами все работает замечательно. но...
на страницах с магазином VirtueMart (описание товара) не работает (((
*

step-di

  • Захожу иногда
  • 91
  • 5 / 0
Re: Поиск и замена части тела страницы
« Ответ #5 : 23.08.2016, 16:59:54 »
на страницах с материалами все работает замечательно. но...
на страницах с магазином VirtueMart (описание товара) не работает (((

в шаблоне товара в VirtueMart описание товара нужно вывести через конструкцию типа

echo JHTML::_('content.prepare',$out);

где $out - переменная, содержащая текст с описанием, можно заменить на ту переменную, которая выводит описание.

это заставит обрабатывать текст плагинами типа content
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Поиск и замена части тела страницы
« Ответ #6 : 23.08.2016, 23:12:41 »
Мда, зря я давал советы - вы все делаете наоборот. onContentAfterRender откуда выкопали?
Для начала почитайте здесь о Joomla-событиях и их параметрах.
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Шаблон для данной страницы недоступен. сообщите об этом Администратору сайта

Автор 62411

Ответов: 0
Просмотров: 22
Последний ответ Сегодня в 10:26:10
от 62411
Как установить header Cache-Control только для одной страницы по URL?

Автор Slava77

Ответов: 0
Просмотров: 62
Последний ответ 23.03.2024, 00:16:36
от Slava77
Пропадают иконки на части страниц, пока не удалишь кеш браузера

Автор minibelka

Ответов: 4
Просмотров: 1062
Последний ответ 25.02.2024, 22:56:50
от cherianov
Как вставить модуль в код нужной страницы php?

Автор zvi

Ответов: 9
Просмотров: 3777
Последний ответ 21.02.2024, 11:03:08
от saynez
Замена данных сайта на данные поддомена

Автор rezchik

Ответов: 5
Просмотров: 351
Последний ответ 05.02.2024, 11:45:36
от web1