Быстрый хак модуля Livejournal Crossposter (ljxp) для работы с полями CCK

Jan 15, 2011 12:01


http://shaman.asiadata.ru/node/443.

Довольно распространенный модуль Livejournal Crossposter (ljxp) предназначен для автоматической публикации материалов Drupal-сайтов на Livejournal-совместимых сервисах. Я уже как-то писал о его установке и настройке у себя в блоге и на Drupal.ru. Но у модуля есть один существенный недостаток - он кросспостит в ЖЖ только стандартные заголовки ноды и ее тело (body) в виде тизера или полного текста. Поля CCK в нем полностью игнорируются. И устранить этот недостаток пока можно только хаком.

Сам модуль ljxp достаточно прост по своему устройству. Чтобы найти код, который формирует части сообщения передаваемого в ЖЖ через xmlrpc откроем основной файл модуля ljxp.module (я использовал последнюю версию 1.6). Найдем в нем функцию ljxp_post() в строке 402. Именно она и формирует из ноды требуемое по спецификации API ЖЖ сообщение и передает его на сайт. Если вы не используете системное body, то поля переменной $node->teaser и $node->body содержат пустое значение. Именно здесь мы их и можем заполнить любым содержанием.

В принципе на этом идея хака понятна, но приведу один практический пример из собственных проектов. Я редко использую body, а для имитации его функционала применяю два поля: Анонс (field_resume) и Полный текст (field_text). В моем случае хак выглядит так (со строки 403):

// begin of hack
  $node->teaser = $node->field_resume[0]['value'];
  $node->body = $node->field_resume[0]['value'] . $node->field_text[0]['value'];
// end of hack
В вашем случае потребуется написать другой код, зависящий от названий ваших полей и от того что вы желаете видеть до ЖЖ-ката, а что после.

Есть и другой вариант, который подойдет для ноды с любым количеством полей:

// begin of hack
  $node->teaser = node_view($node, TRUE, FALSE, FALSE);
  $node->body = node_view($node, FALSE, FALSE, FALSE);
// end of hack
Из недостатков, вы не сможете запостить таким образом поля со ссылками, файлы или картинки. Работа хака проверена только на текстовых полях.

Да, знаю хак это плохо, но в данном случае иначе никак.

Заметки начинающего друпаллурга, ljxp, drupal 6, модули, хак, drupal

Previous post Next post
Up