Обновился плагин funcPack

Здравствуйте.
Вот и кончилась зима, всех с первым днем Весны!

Давно лежали на полке пара вещей и, наконец, удалось привести их в порядок и добавить к плагину. Описание того, что в плагине уже есть здесь: https://altocms.ru/blog/extensions/374.html , а добавлены же были следующие вещи:
  • 1. Модуль склонения слов
  • 2. Капча от Yii
Ссылка на гитхаб: https://github.com/andrey-v/funcpack
Еще раз напомню, плагин не есть рабочая версия, все, что там – экспериментальный код, и повод для обсуждения.

Модуль склонения

Обертка для Яндекс.Склонятора http://habrahabr.ru/post/39327/, которая позволяет получать падежи слов. Реализован как статический метод, что позволяет его использовать как в PHP-коде так и в TPL-шаблонах.
Вот такой код, например выведет фразу «У Ивана 28 друзей»
У {P::L('Иван', 3)} 28 друзей.

Склонение слова получается функцией P::L('Иван', 3), где первым параметром склоняемое слово, а вторым номер падежа (Кто? Что? — 1, Кого? Чего? — 2, Кому? Чему? — 3, Кого? Что? — 4, Кем? Чем?— 5, О ком? О чем?— 6). Все что Вам нужно – это определить падеж слова, который нужно получить.
У модуля есть настройки, которые позволяют задать один из четырех режимов его работы:
  • — 'only_ya' — только через yandex. Результат склонения возвращается только от Яндекса, а если последний не доступен, то слово выводится в начальном виде.
  • — 'only_bd' — только по БД. Каждое полученное от Яндекса слово заносится в БД, а после, если вызывается повторно – берется из нее.
  • — 'both' — совмещенный режим. Если слова нет в базе денных – оно берется у Яндекса.
  • — 'no' – отключено. Все слова выводятся без склонения.

Есть минус, статус Яндекс.Склонятора не определен, нет информации о правилах его использования, когда он закроется вообще или будет вечно, сколько запросов в сутки он отдаст и т.д.

Но есть и плюсы.
  • — Можно строить правильные, с точки зрения русского языка фразы в письмах пользователям и на сайте.
  • — Можно генерировать красивый СЕО текст.
На странице плагина ftest (example.com/ftest) можно протестировать способности модуля. Там выводятся падежи любого выбранного Вами слова.


Капча от Yii

Позволяет заменить стандартную капчу той, что идет в составе Yii. Для этого в плагине нужно переопределить экшен 'ActionCaptcha'
     protected $aDelegates = [
         'template' => [],
         'action' => [
             'ActionCaptcha',
         ],
    ];


А в родном экшене Alto (common/classes/actions/ActionCaptcha.class.php) закомментировать строку
//F::IncludeLib('kcaptcha/kcaptcha.php');


После этого капча станет выглядеть вот так:


Вот и всё.
Всем удачной работы!

Похожие статьи

  • Первый плагин для разработчиков
    Здравствуйте. В последних своих статьях я затронул темы стиля кодирования и проксирования методов модулей. Темы так и остались открыты, поэтому, продолжая начатое в них, представляю плагин для разработчиков —...

6 комментариев

0
Капча это здорово, давно хотел сам от Yii прикрутить. Спасибо, утащил к себе в копилку.
0
Еще раз напомню, плагин не есть рабочая версия, все, что там – экспериментальный код, и повод для обсуждения.

Хмм… а вот капчу бы тем не менее хотелось поменять… Есть какой-нибудь несложный способ но без экспериментального кода?
+2
Есть какой-нибудь несложный способ но без экспериментального кода?
Да есть, нужно просто перенести функционал капчи в пустой плагин. Для этого:
1. сделайте пустой плагин и перенесите в него:
— common/plugins/funcpack/classes/actions/ActionCaptcha.class.php
— папку common/plugins/funcpack/classes/kcaptcha

2. В основном файле плагина добавьте делегата
/** @var array $aDelegates Объявление делегирований */
    protected $aDelegates = [
        'template' => [],
        'action' => [
            'ActionCaptcha',
        ],
    ];


3. В родном экшене Alto (common/classes/actions/ActionCaptcha.class.php) закомментируйте строку
//F::IncludeLib('kcaptcha/kcaptcha.php');


4. Активируйте созданный плагин. Вроде все должно заработать сразу, но лучше эпспирементируйте на тестовом сервере.
0
Спасибо!
+2
В версии на гитхабе убрал подгрузку класса капчи внутрь метода EventIndex(), чтоб проще было (не придется ничего трогать в родном экшене, достаточно будет плагин подключить)
0
Ребят есть рабочая версия ?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.