Пишем плагин для Thunder 3

Тема в разделе "Thunder 3.X", создана пользователем Firestarter, 29 июн 2016.

Статус темы:
Закрыта.
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Приветствую. В всязи с ситуацией на рынке валют, демпнгую))

    Всего 7 дней скидка 30% "для своих":

    Из Новостей на 13 августа 2018, у меня:

    Бесплатный дорген AttoGen

    MassSiteProxy 1х. Скриипт массового копирования сайтов > MassSiteProxy 1.06. Куча новых Фишек

    CPA GEN 1х. Скрипт генерации белых дорвеев подарю 2 красивых шаблона новым клиентам

    Thunder 3.x Генератор дорвеев > Новые отзывы

    Скрипт безлимитного переводчика

    Скрипт купонного сайта на Wordpress

    Промо коды пачка на Всех))) Действительны всего 7 дней.

    E6696751CFD64F82
    23B34C0DFD234071
    494676AF930746E2
    61333A5E926F4AF2
    A2C5D28D9E1647E2
    3177B1018BF244ED
    A0027E48A18045D5
    33247242204D4BC0
    CF432FC5AE894BBA
    DE80241C027B44DB
    F4346CBB0AE94C14
    A10DAB0667844775

    Большая просьба, написать, кто какой ипользовал

    Партнерская программа для блогеров-дорвейщиков - до 30% с продажи.

  1. Firestarter

    Firestarter Администратор
    Команда форума

    26 окт 2015
    1.188
    550
    #1 Firestarter, 29 июн 2016
    Последнее редактирование: 29 июн 2016
    Пару заметок для тех, кто хочет расширить возможности доргена.
    Заметки будут работать, для всех версий, начиная с Thunder 3.0.

    Все плагины лежат в папке /plugins/ доргена. Подключаются автоматически при загрузке каждой страницы дорвея.

    Файл плагина должен бить именован латинскими символам с Заглавной.
    Название класса плагина начинается с приставки которая является название файла + _Twig_Extension

    Заготовка для плагина(файл Plugin.php + название класса Plugin_Twig_Extension):

    Код:
    <?php
    
    class Plugin_Twig_Extension extends Twig_Extension
    {
    
        private $container  = NULL;
    
        function __construct ($container = NULL) {
      
            $this->container = $container;
        }
    
        public function getName()
        {
            return 'plugin';
        }
    
        public function getDescription()
        {
            return '';
        }
    
        public function getGlobals()
        {
            return [];
        }
    
        public function getFunctions() {
            return [];
        }
    
        public function getFilters()
        {
            return [];
        }
    
    }
    Функция getName - должна возвращать название плагина в транслите.
    Функция getDescription - описание функционала плагина.
    getName и getDescription автоматически подхватываются админкой и отображаются на странице "Плагины".

    Функция getGlobals() регистрирует все ваши глобальные переменные для шаблонизатора доргена.
    Функция getFunctions() регистрирует все функции для шаблонов доргена.
    Функция getFilters() регистрирует все фильтра для шаблонов доргена.

    Функции и переменные зарегистрированные в getGlobals() выполняться всегда, доже без использования их в шаблоне.
     
  2. Firestarter

    Firestarter Администратор
    Команда форума

    26 окт 2015
    1.188
    550
    Напишем простую функцию для вывода текущего ключа страницы(не зависимо от того включен ЧПУ или нет):

    В getFunctions() добавляю:

    Код:
    public function getFunctions() {
            return [
                new \Twig_SimpleFunction('get_current_url', array($this, 'getCurrentUrl')),
            ];
        }
    и ниже добавляю функцию , которая будет выводить ключ:

    Код:
    public function getCurrentUrl() {
    
            $url = $this->container->request->getUri()->getPath();
    
            $chanks = explode("/", $url);
    
            $encoded_keyword = end($chanks);
    
            if(empty($encoded_keyword)) {
                return null;
            }
    
            if($this->container->cache->contains($encoded_keyword)) {
    
                return $this->container->cache->fetch($encoded_keyword);
    
            } else {
    
                return rawurldecode($encoded_keyword);
            }
    
        }
    Если в шаблон сайта добавить:

    {{get_current_url()}}

    Сработает наша функция getCurrentUrl и выведет текущий ключ.

    ПС: если нужно зарегистрировать еще одну функцию, добавляем новый элемент массива в getFunctions:

    Код:
    public function getFunctions() {
            return [
                new \Twig_SimpleFunction('get_current_url', array($this, 'getCurrentUrl')),
                new \Twig_SimpleFunction('get_hello_world', array($this, 'getHelloWorld')),
            ];
        }
     
    Art, sheck и amness нравится это.

Поделиться этой страницей