Публикация блога на Drupal с телефона на WP8.1
Понадобилось прикрутить возможность вести блог на сайте через телефон Lumia с WP8.1. Быстрый обзор выдал три приложения: Writer, Blog Client и платная BloghuB. Кратко говоря, я смог заставить работать только первую и последнюю, да и то, у Writer интерфейст более глючный, и в конце концов, программа перестала работать с сайтом. BloghuB оказалась единственным приложением, которое хорошо работает и легко прикручивается к Drupal.
Теперь о минусах BloghuB - стоит 3.99$, но основная проблема в том, что найти и установить программу можно только, если на телефоне выставлен регион США или Австралия. В России программу поставить не получится. Ссылка на программу тут. У программы есть демо-режим на 9 дней, и по-моему при переустановке приложения счетчик обнуляется. Как поменять регион телефона можно глянуть тут.
Установить приложение это пол-беды. Надо еще заставить работать Drupal. Для этого будем использовать технологию MetaWeblog API, теоретически совместимую с кучей приложений для ведения блогов.
Предположим, что Drupal уже установлен. Далее надо поставить модули: Blog API, Services, Chaos tool suite (ctools).
Не забываем, что надо включить следующие модули:
После установки заходим в admin/config/services/blogapi и выставляем галочки:
Далее идем в admin/structure/services/list/blogapi_xmlrpc/resources и выставляем галочки для тех операций, которые мы разрешаем делать клиентскому приложению:
Затем идем admin/people/permissions и выставляем права на пользователей для работы с Blog API:
В моем случае я разрешил работать с сайтом только администраторам сайта.
Также надо указать в admin/config/content/formats порядок использования форматов текста, т.к. если указать первым форматом фильтрованный HTML, то наши блог записи будут публиковаться без картинок.
Потом в admin/structure/types/manage/blog/fields надо проверить что формат выбран Full HTML:
Далее начинается самое сложное. Надо пропатчить файл xmlrpc.inc в папке includes. Дело в том, что клиенты телефона WP8.1 при обращении к сайту добавляют три спецсимвола перед данными, показывающими формат UTF-8 BOM. Надо эти символы удалить. Для этого подходит команда типа: $str = str_replace("\xEF\xBB\xBF",'',$str);
Если этого не сделать, то будет выскакивать сообщение:
-32700 parse error. not well formed
Также напоминаю на всякий случай, что кодировка сообщений должна быть UTF-8. Если это не так, то можно применить патч для автоизменения кодировки. Тут сам патч.
Продолжим. Находим в файле место:
function xmlrpc_message_parse($xmlrpc_message) {
$xmlrpc_message->_parser = xml_parser_create();
// Set XML parser to take the case of tags into account.
xml_parser_set_option($xmlrpc_message->_parser, XML_OPTION_CASE_FOLDING, FALSE);
// Set XML parser callback functions
xml_set_element_handler($xmlrpc_message->_parser, 'xmlrpc_message_tag_open', 'xmlrpc_message_tag_close');
xml_set_character_data_handler($xmlrpc_message->_parser, 'xmlrpc_message_cdata');
xmlrpc_message_set($xmlrpc_message);
и добавляем туда строки:
// Remove BOM utf-8 symbols
$xmlrpc_message->message = str_replace("\xEF\xBB\xBF",'',$xmlrpc_message->message);
У нас должно получится вот что:
function xmlrpc_message_parse($xmlrpc_message) {
$xmlrpc_message->_parser = xml_parser_create();
// Set XML parser to take the case of tags into account.
xml_parser_set_option($xmlrpc_message->_parser, XML_OPTION_CASE_FOLDING, FALSE);
// Set XML parser callback functions
xml_set_element_handler($xmlrpc_message->_parser, 'xmlrpc_message_tag_open', 'xmlrpc_message_tag_close');
xml_set_character_data_handler($xmlrpc_message->_parser, 'xmlrpc_message_cdata');
// Remove BOM utf-8 symbols
$xmlrpc_message->message = str_replace("\xEF\xBB\xBF",'',$xmlrpc_message->message);
xmlrpc_message_set($xmlrpc_message);
После этого осталось настроить сам клиент BloghuB.
Добавляем блог Drupal, пишем логин, пароль и адрес сайта:
http://наш.ru/сайт/xmlrpc.php
После этих манипуляций у меня получилось подружить телефон с блогом на Drupal.
P.S. Используя это приложение нельзя добавлять в текст смайлики от телефона (те, которые можно выбрать из списка), т.к. приложение не знает таких символов и просто не опубликует запись.
P.P.S. А к примеру тут показано, как подключить Windows Live Writer к блогу на Drupal.