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

virfolk

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
Нужно сделать так, чтобы можно было вставлять код php в любое место заголовка страницы в браузере (метатег title).
Пример: Шины оптом <?php echo $GLOBALS['in-city']; ?> недорого

Сейчас Joomla вырезает php код. Плагин Sourcerer здесь тоже не работает.

Если в файле administrator/components/com_menus/models/forms/item_component.xml добавить filter="raw"

         <field
            name="page_title"
            type="text"
            label="COM_MENUS_ITEM_FIELD_PAGE_TITLE_LABEL"
            description="COM_MENUS_ITEM_FIELD_PAGE_TITLE_DESC"
            useglobal="true"
            filter="raw"
         />

То код сохраняется, но не исполняется, просто отображается как текст.
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Пример: Шины оптом <?php echo $GLOBALS['in-city']; ?> недорого
Пример: Шины оптом {in-city} недорого

Код: php
str_replace('{page_title}', $GLOBALS['in-city'], $item->page_title);
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

virfolk

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
str_replace('{page_title}', $GLOBALS['in-city'], $item->page_title);

Не очень понял, куда вставить этот код?
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Не очень понял, куда вставить этот код?
Там где указываете заголовок для страницы!
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

virfolk

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
str_replace('{page_title}', $GLOBALS['in-city'], $item->page_title);


А, понял, всё работает, спасибо!
Просто вы немножко опечатались, надо str_replace('{in-city}', $GLOBALS['in-city'], $item->page_title);
*

virfolk

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
А можно такую же штуку провернуть с текстами в модулях?
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
А можно такую же штуку провернуть с текстами в модулях?
Можно! Но смотря какой модуль использовать.

Для самописного модуля подойдет
Код: php
echo str_replace('{line}', __LINE__, $module->content);

Если модуль типа HTML-код, то для него есть событие onContentPrepare работающее в группе плагинов content (но что бы оно работало надо включить соответствующий параметр в настройках модуля)
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

virfolk

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
Нужно чтобы работало для всех модулей на сайте типа HTML-код. Т.е. во всех модулях, где встречается {in-city}, это выражение должно меняться на <?php echo $GLOBALS['in-city']; ?>
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Нужно чтобы работало для всех модулей на сайте типа HTML-код.
Тогда вам надо использовать событие onContentPrepare
Код: php
$item->text = str_replace('{in-city}', $GLOBALS['in-city'], $item->text);
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

virfolk

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
Что-то я ничего не понял)
*

virfolk

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
Т.е. я должен создать свой плагин типа как ниже??

<?
class PlgContentMyShortCode extends JPlugin
{   
   public function onContentPrepare($context, &$article, &$params, $page = 0)
   {
      $item->text = str_replace('{in-city}', $GLOBALS['in-city'], $item->text);
   }
}
?>
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Прямо в точку!
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

sivers

  • Живу я здесь
  • 2462
  • 335 / 0
public function onContentPrepare($context, &$article, &$params, $page = 0)
тут желательно заменить $article => $item (иначе может не заработать)
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

virfolk

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
А как сделать тоже самое, но для Joomla 4?

<?
class PlgContentMyShortCode extends JPlugin
{   
   public function onContentPrepare($context, $item, $params)
   {
      $item->text = str_replace('{in-city}', 'в Москве', $item->text);
   }
}
?>
*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
Код
<?
class PlgContentMyShortCode extends CMSPlugin
{   
   public function onContentPrepare (&$item, $params ) {
   {
      $item->text = str_replace('{in-city}', 'в Москве', $item->text);
   }
}
?>
*

virfolk

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
<?
class PlgContentMyShortCode extends CMSPlugin
{   
   public function onContentPrepare (&$item, $params ) {
   {
      $item->text = str_replace('{in-city}', 'в Москве', $item->text);
   }
}
?>

Что-то не работает(((
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Что-то не работает(((
Первый парам. $context
Код
<?php
class PlgContentMyShortCode extends CMSPlugin
{   
   public function onContentPrepare ($context, &$item, $params, $page = 0    ) {
   {
      $item->text = str_replace('{in-city}', 'в Москве', $item->text);
   }
}
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
*

virfolk

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
Первый парам. $context
Всё равно не работает

Библиотеки ядра Joomla подключены ?
Эмм... а как это проверить?
*

virfolk

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
В общем... я и так, и этак...

В итоге сменил название плагина с myShortCode на shortcode и всё заработало! Всем спасибо!

<?php

defined('_JEXEC') or die;

use Joomla\CMS\Plugin\CMSPlugin;

class PlgContentShortcode extends CMSPlugin
{
   
   public function onContentPrepare ($context, $item, $params ) {
      $item->text = str_replace('{in-city}', 'в Москве', $item->text);
   }
}
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор 62411

Ответов: 2
Просмотров: 179
Последний ответ 30.03.2024, 13:15:16
от web1
Как установить header Cache-Control только для одной страницы по URL?

Автор Slava77

Ответов: 0
Просмотров: 122
Последний ответ 23.03.2024, 00:16:36
от Slava77
Как вставить модуль в код нужной страницы php?

Автор zvi

Ответов: 9
Просмотров: 3838
Последний ответ 21.02.2024, 11:03:08
от saynez
Долго грузятся страницы категорий

Автор SuperRomario

Ответов: 4
Просмотров: 1503
Последний ответ 03.07.2023, 17:59:07
от Wood
Получить текущий номер страницы плагина "Разрыв страницы" (pagebreak)

Автор sertlan

Ответов: 1
Просмотров: 448
Последний ответ 12.06.2023, 18:14:09
от sertlan