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

ksalab

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

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

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

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

robert

  • Профи
  • 4081
  • 376
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);
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

ksalab

  • Захожу иногда
  • 11
  • 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

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

ksalab

  • Захожу иногда
  • 11
  • 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

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

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

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

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

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

robert

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

Не могу убрать заголовок страницы с главной

Автор Ханиган

Ответов: 2
Просмотров: 50
Последний ответ Сегодня в 19:50:45
от Ханиган
Поиск

Автор alpha_ru

Ответов: 5
Просмотров: 64
Последний ответ 05.09.2017, 16:56:44
от voland
Как сделать редирект с одной страницы на другую?

Автор maximka21reg

Ответов: 4
Просмотров: 467
Последний ответ 05.09.2017, 10:11:31
от SuschnosT
Индивидуальный заголовок страницы

Автор Topical

Ответов: 8
Просмотров: 141
Последний ответ 25.08.2017, 17:03:04
от Topical
как растянуть материал на всю ширину страницы (мешает пустая колонка position-8)

Автор Artefact

Ответов: 11
Просмотров: 132
Последний ответ 24.08.2017, 20:18:26
от dmitry_stas