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

Evgen Kulibin

  • Захожу иногда
  • 61
  • 0 / 0
Друзья привет всем! Практикуюсь писать плагин, поставил себе задачу следующего характера.

У каждой страницы сайта есть свой "Заголовок страницы" <title></title>. В Админке какой хотим заголовок такой и пишем, тут все ясно. Ну а что если я хочу выводить в Заголовки всех страниц дополнительную инфу из БД по средствам php.


К примеру: Установил плагин для обмена сообщений между пользователями, приходит сообщение, в личном кабинете светится кол-во не прочитанных сообщений к примеру (3).

Вопрос: как понять какое событие перехватывать в Joomla, чтобы реализовать следующее:

$massages - предположим в эту переменную мы получаем количество непрочитанных сообщений из базы данных в нашем случае это 3.

 и Плагином хотив в тайтл всех страниц запулить такой код.

<title><?php echo '( '. $massages.' )';?> Главная страница</title>

возвращает пользователю заголовок: (3) Главная страница.

Если пользователь прочитал 3 сообщения, Заголовок становится: Главная страница.


Ищу на оф сайте https://docs.joomla.org/Plugin но не могу найти ответ.


Подскажите пожалуйста, кто знает как правильно подобрать событие, чтобы выводить сообщение в заголовок страницы.

Спасибо! ^-^ ^-^ ^-^ ^-^ ^-^
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Плагин для заголовка Title сайта
« Ответ #1 : 09.03.2022, 20:26:58 »
К примеру можно использовать событие системного плагина onAfterRender
Код: php
$doc = JFactory::getDocument();

$title = '(%s) Главная страница';
$doc->setTitle(sprintf($title, 3));
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

sergeytolkachyov

  • Захожу иногда
  • 163
  • 17 / 0
  • @sergeytolkachyov https://web-tolk.ru
*

Evgen Kulibin

  • Захожу иногда
  • 61
  • 0 / 0
Re: Плагин для заголовка Title сайта
« Ответ #3 : 09.03.2022, 21:48:46 »
К примеру можно использовать событие системного плагина onAfterRender
Код: php
$doc = JFactory::getDocument();

$title = '(%s) Главная страница';
$doc->setTitle(sprintf($title, 3));


$title = '(%s) Главная страница';

Как получить название заголовка текущей страницы?  :dry:

*

Evgen Kulibin

  • Захожу иногда
  • 61
  • 0 / 0
Re: Плагин для заголовка Title сайта
« Ответ #4 : 09.03.2022, 21:51:40 »
К примеру можно использовать событие системного плагина onAfterRender
Код: php
$doc = JFactory::getDocument();

$title = '(%s) Главная страница';
$doc->setTitle(sprintf($title, 3));



https://docs.joomla.org/API17:JDocument::setTitle


таким образом?
*

Evgen Kulibin

  • Захожу иногда
  • 61
  • 0 / 0
Re: Плагин для заголовка Title сайта
« Ответ #5 : 09.03.2022, 21:58:54 »
<?php


defined('_JEXEC') or die;
 

$massages = 3;

class plgSystemPlg_privat_massages_kt extends CMSPlugin

   
   
     
   
   public function setTitle ($title)
   {
   
   $doc = JFactory::getDocument();
    
   $doc->setTitle(sprintf($massages, $title));
   }
}



Правильный ход мыслей?
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Плагин для заголовка Title сайта
« Ответ #6 : 09.03.2022, 22:02:40 »
Как получить название заголовка текущей страницы?
Код: php
$doc = JFactory::getDocument();
$app = JFactory::getApplication();

$menu = $app->getMenu();
$active = $menu->getActive();

$params = $active->getParams();

$title = $params->get('page_title');
$doc->setTitle(sprintf($title, 3));
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Плагин для заголовка Title сайта
« Ответ #7 : 09.03.2022, 22:03:10 »
Правильный ход мыслей?
Нет! Бред какой то....
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Плагин для заголовка Title сайта
« Ответ #8 : 09.03.2022, 22:05:13 »
Правильный ход мыслей?
Код: php
class PlgSystemTest extends JPlugin
{
protected $app;

function onAfterRender()
{
$doc = JFactory::getDocument();

$menu = $this->app->getMenu();
$active = $menu->getActive();

$params = $active->getParams();

$title = $params->get('page_title');
$doc->setTitle(sprintf($title, 3));
}
}
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Evgen Kulibin

  • Захожу иногда
  • 61
  • 0 / 0
Re: Плагин для заголовка Title сайта
« Ответ #9 : 10.03.2022, 20:18:33 »
Привет! Сделал манифест, установил, после включения пишет ошибку

Call to a member function getParams() on null

Вызов функции-члена getParams() при нулевом значении

что не так делаю?






*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Плагин для заголовка Title сайта
« Ответ #10 : 10.03.2022, 20:22:39 »
что не так делаю?
Код: php
$doc = JFactory::getDocument();

$menu = $this->app->getMenu();
$active = $menu->getActive();

$title = $active->params->get('page_title');
$doc->setTitle(sprintf($title, 3));
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Evgen Kulibin

  • Захожу иногда
  • 61
  • 0 / 0
Re: Плагин для заголовка Title сайта
« Ответ #11 : 10.03.2022, 20:27:32 »
 <?php
defined('_JEXEC') or die('Restricted access..');

 
class PlgSystemMessageskt extends JPlugin {
     protected $app;

    function onAfterRender(){
   
      $doc = JFactory::getDocument();

      $menu = $this->app->getMenu();
      
      $active = $menu->getActive();

      $title = $active->params->get('page_title');
      $doc->setTitle(sprintf($title, 3));   
 }
}

Ошибка

 Call to a member function get() on null

 *ОХ-Х-Х*  !
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Плагин для заголовка Title сайта
« Ответ #12 : 10.03.2022, 20:29:48 »
В начале функции

Код: php
if(!$this->app->isSite()) { return; }
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Evgen Kulibin

  • Захожу иногда
  • 61
  • 0 / 0
Re: Плагин для заголовка Title сайта
« Ответ #13 : 10.03.2022, 20:34:06 »
<?php
defined('_JEXEC') or die('Restricted access..');

 
class PlgSystemMessageskt extends JPlugin {
     protected $app;

    function onAfterRender(){
   
      
      $active = $menu->getActive();
      print_r($active);
 }
}


0 Call to a member function getActive() on null
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Плагин для заголовка Title сайта
« Ответ #14 : 10.03.2022, 20:38:41 »
Код: php
class PlgSystemTest extends JPlugin
{
protected $app;

function onAfterRender()
{
if(!$this->app->isSite()) { return; }
$doc = JFactory::getDocument();

$menu = $this->app->getMenu();
$active = $menu->getActive();

$params = $active->getParams();

$title = $params->get('page_title');
$doc->setTitle(sprintf($title, 3));
}
}
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Evgen Kulibin

  • Захожу иногда
  • 61
  • 0 / 0
Re: Плагин для заголовка Title сайта
« Ответ #15 : 10.03.2022, 20:52:44 »
Сайт и админка поднялись. Но к заголовку "3" не добавилось. Скажи  эта строчка $title = $params->get('page_title');

page_title -- Joomla возвращает это как текущий активный заголовок странице?
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Плагин для заголовка Title сайта
« Ответ #16 : 10.03.2022, 20:55:32 »
page_title -- Joomla возвращает это как текущий активный заголовок странице?
Это параметр Заголовок страницы в браузере в настройках пункта меню
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
Re: Плагин для заголовка Title сайта
« Ответ #17 : 10.03.2022, 21:01:52 »
а ничего что надо получить пользователя 
его сообщения
и статус сообщений
индивидуальная помощь: @SetAlexx
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Плагин для заголовка Title сайта
« Ответ #18 : 10.03.2022, 21:14:34 »
а ничего что надо получить пользователя 
его сообщения
и статус сообщений
Это уже отдельно пишется! Как вариант...
Заголовок страницы: "There are ({count_message}) new posts!"

Вот код плагина!
Код: php
class PlgSystemTest extends JPlugin
{
protected $app;

function onAfterRender()
{
if(!$this->app->isSite()) { return; }
$doc = JFactory::getDocument();

$menu = $this->app->getMenu();
$active = $menu->getActive();

$title = $active->params->get('page_title');
$regex = '/{(.*?)}/i';

preg_match_all($regex, $title, $matches, PREG_SET_ORDER);

if ($matches)
{
foreach ($matches as $match)
{
list($full, $name) = $match;

if(method_exists($this, $name))
{
$result = $this->{$name}();
$title = str_replace($full, $result, $title);
}
}
}

$doc->setTitle($title);
}

protected function count_message()
{
return rand();
}
}
Каждая заглушка в заголовке страницы будет использовать функцию в плагине. Таким образом будут выполняться функции те которые необходимы.

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

Evgen Kulibin

  • Захожу иногда
  • 61
  • 0 / 0
Re: Плагин для заголовка Title сайта
« Ответ #19 : 10.03.2022, 21:40:04 »
Хочу попробовать сделать иначе. Что если получить текущего пользователя $user = JFactory::getUser(); сделать запрос и добавить переменную в зfголовок

$db =&JFactory::getDBO();
   $query = "SELECT COUNT(*) as count FROM #_uddeim WHERE (toread=0) AND (toid='".$user->id."') ";

   $db->setQuery($query);
   $result = $db->loadObjectList();
   foreach($result as $row){
      $toreads = $row->count;
   }


Так получится?

Ввел код предыдущий код, ничего не изменилось.


я вытягиваю активные сообщения из БД которые передаются компонентом com_uddeim
*

NewUsers

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

Evgen Kulibin

  • Захожу иногда
  • 61
  • 0 / 0
Re: Плагин для заголовка Title сайта
« Ответ #21 : 11.03.2022, 21:03:36 »
буду разбираться... почти закипел. Соррян, учусь... *DRINK*
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Плагин для заголовка Title сайта
« Ответ #22 : 11.03.2022, 21:13:22 »
Вот пример того что может получиться! На работоспособность не проверял, но думаю что все норм!
Заголовок страницы в браузере: "There are ({count_message}) new posts!"
Код: php
<?php

class PlgSystemTest extends JPlugin
{
    protected $app;

    function onAfterRender()
    {
        if(!$this->app->isSite()) { return; }
        $doc = JFactory::getDocument();

        $menu = $this->app->getMenu();
        $active = $menu->getActive();

        $title = $active->params->get('page_title');
        $regex = '/{(.*?)}/i';

        preg_match_all($regex, $title, $matches, PREG_SET_ORDER);

        if ($matches)
        {
            foreach ($matches as $match)
            {
                list($full, $name) = $match;

                if(method_exists($this, $name))
                {
                    $result = $this->{$name}();
                    $title = str_replace($full, $result, $title);
                }
            }
        }

        $doc->setTitle($title);
    }

    protected function count_message()
    {
        $user = JFactory::getUser();
        $user_id = (int) $user->get('id');

        $db = JFactory::getDbo();

        $query = $db->getQuery(true);

        $query->select('COUNT(DISTINCT id)');
        $query->from($db->quoteName('#__uddeim'));

        $where = $db->quoteName('toread');
        $query->where($where . ' = 0');

        $where = $db->quoteName('toid');
        $query->where($where . ' = ' . $user_id);

        $db->setQuery($query);     
        return (int) $db->loadResult();
    }
}
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Evgen Kulibin

  • Захожу иногда
  • 61
  • 0 / 0
Re: Плагин для заголовка Title сайта
« Ответ #23 : 11.03.2022, 21:16:26 »
Это уже отдельно пишется! Как вариант...
Заголовок страницы: "There are ({count_message}) new posts!"

Вот код плагина!
Код: php
class PlgSystemTest extends JPlugin
{
protected $app;

function onAfterRender()
{
if(!$this->app->isSite()) { return; }
$doc = JFactory::getDocument();

$menu = $this->app->getMenu();
$active = $menu->getActive();

$title = $active->params->get('page_title');
$regex = '/{(.*?)}/i';

preg_match_all($regex, $title, $matches, PREG_SET_ORDER);

if ($matches)
{
foreach ($matches as $match)
{
list($full, $name) = $match;

if(method_exists($this, $name))
{
$result = $this->{$name}();
$title = str_replace($full, $result, $title);
}
}
}

$doc->setTitle($title);
}

protected function count_message()
{
return rand();
}
}
Каждая заглушка в заголовке страницы будет использовать функцию в плагине. Таким образом будут выполняться функции те которые необходимы.









({count_message}) Т.е. Ты говоришь, о том, чтобы в заголовок (название) страницы вставлять  эту заглушку, а плагин вместо заглушки будет выводить инфу?

Я реально учусь, если бы сразу мог читать код как ты, то наверное по таким вопросам не грузил бы форум  :D  ^-^
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Плагин для заголовка Title сайта
« Ответ #24 : 11.03.2022, 21:18:54 »
({count_message}) Т.е. Ты говоришь, о том, чтобы в заголовок (название) страницы вставлять  эту заглушку, а плагин вместо заглушки будет выводить инфу?
Да! Все верно...
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин StopKids для маркировки сайта знаком 18+ для Joomla 1.5-3.x

Автор ecolora

Ответов: 40
Просмотров: 19795
Последний ответ 19.03.2023, 18:55:08
от ecolora
Компонент Commedia и плагин mp3browser для медиа-сайтов

Автор ecolora

Ответов: 557
Просмотров: 118865
Последний ответ 13.03.2023, 00:25:14
от ecolora
Плагин seoLinks

Автор alexandr-spb

Ответов: 0
Просмотров: 1159
Последний ответ 26.01.2023, 23:08:41
от alexandr-spb
Плагин "Русская типографика"

Автор Physicist

Ответов: 258
Просмотров: 147524
Последний ответ 25.01.2023, 13:43:35
от Physicist
Плагин для формы авторизации

Автор web3.0

Ответов: 13
Просмотров: 4292
Последний ответ 06.07.2022, 10:14:06
от hoviki7574