Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Интеграция веб-сервисов в знаменитые cms

Anna | 31.05.2014 | нет комментариев

В этой статье мы дадим рекомендации как за короткий срок освоить cms и написать для неё растяжение, модуль либо плагин, а также расскажем о итогах и нашем навыке интеграции обслуживания Cackle в эти системы. Cтатья может стать начальством для тех, кто собирается делать интеграции сервисов с cms системами либо легко сделать модуль.

Перед тем как решить с какой cms делать интеграцию стоит собрать статистику по запросам на интеграцию своих пользователей, а также посмотреть на всеобщую статистику по cms на сайтах зоны .RU (http://statonline.ru/metrics/webapp_cms?tld=ru) из которой видно, какие cms имеют самую огромную знаменитость.
image

Исходя из этой статистики дозволено предполагать, что результат от встраивания своего модуля в эти cms статистически будет пропорционален их популярности. Так ли это для всякой cms мы узнаем дальше.

Интеграция разрешает комфортным образом встраивать сервисы в cms и максимизировать выгоду от его применения. Совершенным решением является установка плагина в несколько кликов. Приемлемым решением может быть мод — инструкция по допиливанию cms, при котором изменяются скрипты cms. Для нашего плана любая интеграция комментариев Cackle для cms обыкновенно включает следующие пункты:

— Cинхронизация комментариев с обслуживания Cackle в локальную БД всякие 5 минут
— Отображение html для SEO
— Экспорт существующих на сайте комментариев в Cackle
— Вероятность ресинхронизации(повторное копирование комментариев в локальную БД)
— SSO (авторизация своих пользователей)
— Счётчик комментариев на основной странице
— Виджет последних комментариев

Все эти требования к модулю включают реализацию таймера, приобретение комментариев запросом через API, сохранение в БД, отображение js виджета в образцах cms на определенных страницах и админку для ввода ключей API, и других настроек.

Мы сделали интеграции нашего обслуживания комментариев Cackle в следующие cms системы:
Wordpress, Drupal, DLE, InstantCms, Joomla, Bitrix.

Сейчас хронологическом порядке опишем наш навык по интеграции для всякой cms.

WordPress

Разработка

Для создания плагина есть отлично описанная документация. Для инициализации плагина довольно обнаружить надобные хуки: actions и filters — codex.wordpress.org/Plugin_API/. Мы используем comments_template для итога своего образца с комментариями, comments_number для итога кол-ва комментариев у постов, admin_menu для добавления меню в админ панель и wp_footer для добавления js счётчика в footer. Для синхронизации по времени используем функцию wp_schedule_single_event реализующую запуск всякий функции по таймеру.

Для ознакомления с кодом скачать плагин и посмотреть изложение дозволено тут — плагин для wordpress

Тестирование

Тестирования для WP следует проводить на разных версиях, т.к. допустима обстановка, когда не окажется какой-нибудь функции либо таблицы в БД применяемой в вашем модуле. Здесь дозволено сделать следующую проверку:
if (version_compare(get_bloginfo('version'), '2.9', '>=')){ .. } 
Необходимо ли поддерживать ветхие версии? Думаю, что да. Многие блогеры сидят на ветхих версиях, т.к. обновление частенько заканчивается сменой файлов образца, движка, многие плагины перестают трудиться и доводится настраивать всё снова.

Релиз

Релиз плагина проходит коммитом в svn тега с требуемой версией. Специальное внимание стоит уделить версии проставляемой в основном файле модуля и readme файле. Модуль релизится без каждой модерации. Время предоставления доступа к svn вордпресса где-то 3-5 дней.

Итоги

Для wordpress есть открытая статистика по применению плагина в обособленный момент времени —wordpress.org/plugins/cackle/stats/. Сразу позже релиза в день было 30-50 скачиваний. На данный момент всеобщее число скачиваний около 20 000. Нашими заказчиками стали 80% пользователей.

Drupal

 

Разработка

Инициализация происходит с хука отображения блока на странице _block_view(). Специальное внимание стоит уделить подключению custom template и добавление js файла. Значимо верно передать переменные, Дабы они могли применяться.
Для подключения js:

drupal_add_js(array(
      'cackle' => array(
        'cackle_mc_site' => variable_get('cackle_mc_site', NULL),
        'node_id' => $node->nid,
      ),
  ),
  'setting');

Внутри самого js mcSite будет получаться теснее из предзагруженного свойства объекта Drupal:

var mcSite = Drupal.settings.cackle.cackle_mc_site;

Образец подключается дальнейшим образом:

$template = theme('cackle_custompage_template', array( //передача переменных в образец
        'obj' => $obj,
        'nodeid' => $nodeid,
        'has_curl' => $has_curl)
    );

Сам хук образца:

function cackle_theme() {
  return array(
    'cackle_custompage_template' => array(
      'template' => 'cackle_template',
      'arguments' => array(
        'obj' => NULL,
        'nodeid' => NULL,
         'has_curl' => $has_curl
       ),
    ),
  );
}

Необходимо также обратить внимание на то, что эти хуки подключаются только при удалении и повторной установки модуля.

Для ознакомления с кодом скачать плагин и посмотреть изложение дозволено тут — модуль для drupal

Релиз

Зарелизить модуль в каталог на сайт drupal оказался достаточно непростой квест. Вначале создается sandbox план. Заливается в git. Потом он отправляется на review. На данный план накидываются как коршуны. Первое, о чем напишут обозреватели это ошибки и предупреждения автоматизированной проверки кода —pareview.sh/. Значимо всё до пробела, и до запятой, 2 пробела взамен таба, etc. И так перед всякой правкой кода. Потом позже того, как всё поправлено и достаточно об этом рапортуешь, дальше возникает некоторый «основной» и пишет: We are quite busy now, please help us to review and we find time to review your project и ссылка на review bonus drupal.org/node/1975228 суть которого заключается в том, что перед тем как получить ревью от человека, тот, что может проапгрейдить план из sandbox в fullproject – т.е. план, тот, что будет доступен в каталоге, необходимо сделать 3 ревью других планов. Если будут обнаружены недочёты, то план отправляется на доработку, и необходимо сделать ещё 3 ревью перед тем как дозволено будет поставить тег bonus review.

На что ревьюверы обращают внимание в первую очередь:

  • для работы с БД непременно применение родного API
  • категорично запрещается в модуле генерить чистый html, для этого необходимо применять образец
  • проверка на XSS при отображении html функцией check_plain()
  • верно настроить права доступа к модуле — access arguments

Дозволено посмотреть тут как это было — drupal.org/node/1824770
Для того Дабы получить bonus review стоит удерживать руку на пульсе… как только возникает новейший план на ревью, необходимо стремительно сливать и искать ошибки и неточности из верхнего списка. Если вы это всё прошли, то вашему аккаунту будет дано право создавать full projects без модерации сообщества. И последнее предостережение: не получиться получить право создавать full projects поместив на review маленький план в несколько строчек, с целью потом увеличить функционал но теснее без модерации.
Также хочу подметить, что в изложении api дозволено обнаружить много ошибок, Дабы осознать как работает тот либо другой хук, отменнее глядеть сразу в core модули drupal.

Итог

За всё время каждого 241 скачиваний с каталога — drupal.org/project/cackle и около 100 загрузок демо версии с личного кабинета. По нашей статистике теперь модуль друпал применяется где-то на 150 сайтах.

Wix

Wix — это знаменитый конструктор сайтов. Разработчики данного конструктора сайтов сами связались настройкой плагина пришлось прикрутить по path плагина:

foreach($GLOBALS['cp_pathway'] as $key => $value){
            if(isset($GLOBALS['cp_pathway'][$key]['title'])) {
                if ($plugin_id&&$plugin_name='p_cackle'){
                    $this->events[]                 = 'SHOW_CACKLE_ADMIN';
                    cmsCore::callEvent('SHOW_CACKLE_ADMIN', $this->showCackleAdmin());
                }
            }
        }

Для ознакомления с кодом скачать плагин и посмотреть изложение дозволено тут — плагин для instantCms

Релиз

На данную cms было порядочное кол-во запросов на интеграцию со стороны заказчиков, но глядя на статистику этой cms мы не торопились делать интеграцию. Модуль заказал один из заказчиков. Мы сделали настройку индексации, а заказчик поместил модуль в instantCms блоге. Дальше мы включили в данный модуль все остальные вероятности (экспорт, sso, счётчик) и добавили к списку плагинов. Мы планировали, что сумеем поместить информацию по этому модулю на тематических сайтах и форумах, но при больше серьёзном взоре осознали, что таковых нет. Помимо того отзывы и обсуждения на блоге свелись к рациональности применения платных сервисов в свете того, что пользователи применяют бесплатную cms.

Срок разработки

3 дня. Основное время ушло на выяснение работы событий

Итог

С десяток установок.

Joomla

 

Разработка

Есть официальная документация по созданию плагина. Параметры для плагина определяются через xml, локализация через систему комфортных мессаджей. Есть комфортные событияdocs.joomla.org/Plugin/Events/Content до и позже итога контента. Для комфортного тестирования и разработки следует разобраться с типами контента, тестово создавать все основные типы контента–

$view==’article’ для компонента content
$view == ‘item’ для компонента K2
$view == ‘productdetails’ для viruemart
$view==’frontpage’ для основной страницы
$view==«featured» для избранной
$view==’section’ и $view==’category’ для категорий
Дальше по ходу отработки событий дозволено определить вид контента и наименования компонента, и обыкновенными условиями выводить в них надобные для модуля элементы.
$view = JRequest::getCmd(‘view’); $option = JRequest::getCmd(‘option’);

Для ознакомления с кодом скачать плагин и посмотреть изложение дозволено тут — плагин для joomla

Тестирование

Мы тестировали на 2-х версиях 2.5, 3.0 с компонентами k2, Virtuemart(для 3.0 нет)

Релиз

Отдельно стоит подметить joomla extention dir. Во – первых у них там баги с логином… не все формы работают… различные регистрации на форуме и на сайте. Кнопка сабмита плагина расположена в самом каталоге в подразделах. Немножко непривычная форма сабмита модуля. Очередь месяц назад, при новом релизе была 86, за месяц сдвинулась на 70. В нынешнем месяце теснее 216 приложений стоят в очереди.
Для нас целью разработки данного решение было отказ от сторонних плагинов.

1C bitrix

 

Разработка

В начале развёртывания приложения появилась трудность установки на utf-8. Пришлось длинно конфигурировать сервер.
Документация по разработке модулей — хорошая с изложением конструкции модуля и примерами. Для интеграции в битрикс общепризнанно создаётся модуль с компонентом. Компонент может быть подключен через визуальный редактор пользователем на всякий странице сайта. Одной из задач являлось приобретение идентификатор материала в виде block_id. Взамен этого пришлось применять функцию GetCurPage() возвращающая path для материала. В админку модуля легко легла наша админка всеобщего решения с небольшим изменением на функции сберегающие параметры:

COption::SetOptionString("cackle.comments", $param, $value);
COption::GetOptionString("cackle.comments", $param); 

Посмотреть код пока дозволено только в админке Cackle. Для этого дозволено воспользоваться демо регистрацией.

Релиз

Для релиза нужно отправить заявку на партнерство. В результате вам присваивается ранг технологического компаньона. Мы верили, что дозволено будет получить бесплатную лицензию для разработки, но support ответил, Дабы разработку вели на демо версии, которая на 30 дней.
При релизе значимо соблюдать название. У нас это cackle.comments. Увлекательно подметить, что с данным название модуль виден только в Установках и обновлениях, а также в Настройках модулей(если есть option.php), а если без точки, то в модулях битрикс. В маркетплейс модерация идёт достаточно длинно: 7 дней в среднем( по словам тех. Поддержки), а по факту даже 9 дней. Мы попытались сократить время разработки и применять свою библиотеку с pdo коннектором в БД. В итоге у тестировщика возникла оплошность, т.к. не оказалось активировано этого модуля, и под убеждением того, что данный модуль есть не у всех(правда поставляется с php 5.2) пришлось переписать каждый слой БД на Bitrix API. Теперь модуль вновь в модерации, и схоже при доработке модуль вновь оказывается в начале очереди.

Последние рекомендации

Всеобщие рекомендации для стремительной и удачной интеграции:

  • Иметь свою эластичную библиотеку
  • Посмотреть как написаны 2-3 модуля схожего функционала
  • Посмотреть доку по созданию модуля, если таковая имеется
  • Если доки неудовлетворительно посмотреть сам код CMS и обнаружить нужные события для инициализации модуля
  • Позже реализации протестировать на различных версиях cms и с различными образцами

В качестве инструмента мы используем сервер Openserver отдельной папкой для всякой cms.

Мы сами делаем интеграции с cms т.к. это повышает качество работы с заказчиками. Мы неизменно имеем вероятность придти на поддержка заказчику в случаи задач.

Дальше планируем делать интеграцию с другими cms. В ближайших планах это Netcat и UMI. Если данный топик будет увлекателен, то продолжим и дальше описывать интеграции.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB