[textAdvs] Умная реклама в контенте страницы

Компонент для встраивания блоков рекламы в [[*content]] ресурса при отображении страницы пользователю.

Умеет:
* Размещаться до/после определённого по счёту тега
* Работать только на определённом шаблоне
* Отображать блоки объявлений один за другим (по мере обновления страницы)
* Подтягивать кастомные теги


Как добавить свой тег


Тег для компонента — это класс-обработчик в папке core/components/textadvs/handlers/tags/. Сюда мы можем добавить наш кастомный класс и его подхватит компонент.

Требования для класса-обработчика:

  1. Название класса в формате txaTag{tag}

  2. Название файла в формате txatag{tag}.class.php

  3. Класс должен расширять абстрактный класс txaTagBase

  4. Класс должен иметь 2 публичных свойства:
    $key — ключ тега, по сути это сам тег,
    $name — название тега (отображается менеджеру).

  5. Класс должен иметь публичный метод prepare($content), в котором происходит вызов функции preg_replace_callback с необходимым для обработки регулярным выражением и указанием колбека $this->pregReplaceCallback().

Давайте рассмотрим всё вышеописанное на конкретном примере. Допустим, мы хотим добавить тег hr. Наш класс будет выглядеть так:
class txaTagHr extends txaTagBase
{
    /** @var string $key */
    public $key = 'hr';
    /** @var string $name */
    public $name = '<hr>';

    /**
     * @param string $content
     *
     * @return string
     */
    public function prepare($content)
    {
        $this->idx = 0; // здесь мы обнуляем номер найденного тега
        $content = preg_replace_callback('/<hr[^>]*>/usi', array($this, 'pregReplaceCallback'), $content);

        return $content;
    }
}
Называться файл должен txataghr.class.php

Вот так просто и легко мы можем расширять функционал компонента textAdvs, если это требуется!

Как скачать


Компонент доступен для покупки в нашем любимом Modstore.pro.
Павел Гвоздь
29 ноября 2018, 12:19
6
277
+13

Комментарии: 9

Yar
Yar
29 ноября 2018, 12:36
+1
куплю (недорого) из-за «Отображать блоки объявлений один за другим (по мере обновления страницы)»
Yar
Yar
29 ноября 2018, 12:41
0
Бывает, что внутри одного шаблона есть ресурсы, в которых реклама не нужна (например, когда ресурс монетизируется через ссылки на партнерскую программу). Поэтому, по-возможности, прошу добавить возможность исключать ресурсы. Т.е. указали шаблон + ресурсы, к которым textAds не применять
Константин
29 ноября 2018, 13:11
1
+2
Буквально на днях думал о том, что было бы неплохо иметь решение, которое позволяло бы автоматически вставлять рекламу google adsence после второго-третьего абзаца, особенно в больших статьях, а то все приходилось делать руками и тут пожалуйста, появился данный компонент. Обязательно куплю.

А вообще, огромное спасибо за Вашу работу! На многих сайтах использую Ваши компоненты: tvSuperSelect, phpThumbOn, xLike, videoGallery.

Кстати, недавно перевел один свой joomla-сайт на modx. И теперь очень не хватает одного компонента для внутренней перелинковки. Очень классная была вещь. Может Вам будет интересно сделать что-то подобное? Я думаю востребован он будет. Сразу скажу, что проспонсировать я в данный момент работу не смогу. Не очень хорошо с финансами.
    Yar
    Yar
    29 ноября 2018, 13:14
    0
    Для перелинка pdoNeiglbros входит в pdoTools
      Павел Гвоздь
      29 ноября 2018, 13:23
      0
      Он не про такую перелинковку.
      Константин
      29 ноября 2018, 13:28
      0
      Вы переходили по ссылке, которую я давал в своем сообщении? Джумловский плагин seoLinks и pdoNeighbors выполняют одну и ту же задачу?
        Yar
        Yar
        29 ноября 2018, 13:36
        0
        нет, не переходил. Боюсь, что после перелинковки от «Джумловский плагин seoLinks» ваш анкор лист будет переспамлен одинаковыми вхождениями ключей. Гугл такое не оценит, а скорее всего даже пессимизирует ваш сайт в поиске
          Константин
          29 ноября 2018, 13:38
          0
          Спасибо за подсказку. Я к этому готов
Павел Гвоздь
29 ноября 2018, 20:35
0
Пришлось переименовать пакет, т.к. Adblock чудит с названием textAds.