Довольно распространенный модуль 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):
$node->teaser = $node->field_resume[0]['value'];
$node->body = $node->field_resume[0]['value'] . $node->field_text[0]['value'];
// end of hack
В вашем случае потребуется написать другой код, зависящий от названий ваших полей и от того что вы желаете видеть до ЖЖ-ката, а что после.
Есть и другой вариант, который подойдет для ноды с любым количеством полей:
Из недостатков, вы не сможете запостить таким образом поля со ссылками, файлы или картинки. Работа хака проверена только на текстовых полях.
Да, знаю хак это плохо, но в данном случае иначе никак.
Комментарии
Круто, спасибо
Добрый день.
После переустановке "LiveJournal crossposter" в типах материалов не появляется "Crosspost to LiveJournal".
У кого нибудь было подобное?
Добрый день.
После переустановке "LiveJournal crossposter" в типах материалов не появляется "Crosspost to LiveJournal".
У кого нибудь было подобное?
Эта галочка появляется, если у автор материала настроена учетка ЖЖ в профиле и если именно он залогинен на сайте.
В профиле учетка ЖЖ настроена, захожу из под админа.
Учетка ЖЖ настроена именно в профиле админа?
Материал создан админом?
И еще, в настройках ljxp надо указать, что данный тип материалов можно кросспостить.
Учетка настроена для админа, захожу под админом. Материал создан админом. В настройках LJXP указал какой тип материала можно кроспостить.
При первой установки LJXP все работает, после переустановки не добавляет к материалу галочку "Crosspost to LiveJourna".
Переустановку делаю путем: "модули" - убрал галочку на LJXP - сохранить конфигурацию - удалить - удаляю модуль, ну а потом устанавливаю.
Это я описал как делаю переустановку модуля LJXP.
Вам проще дать кому-нибудь доступ на сайт, чем пытаться протелепатировать, что у вас там не так.
)))) да, доступ на сайт это круто
Это нормально, если доверять тем людям, у которых просишь бесплатной помощи в том деле, где сам не можешь разобраться.
Ну тогда только на ТНТ
Для того что бы плостить например картинку в lj, Я подпилил мод таким образом
Находим
$post_header .= '</b></p>';
Ниже дописываем:
foreach ($nids as $record) {
@$img_file .= $record->filename;
}
$post_header .= '<p><img src="http://cookies.dcroid.ru/sites/default/files/styles/blog_big/public/' . $img_file . '" alt="Toondra Stydio"></p>';
То есть теперь у нас будет браться последнее имя файла из базы file_managed таблицы filename и кроспосться html код отображения картинки.
А это у вас точно работает?
Особенно если изображений и/или файлов больше одного
Изначально файл один идет.
У меня хорошо работает, конечно это ни есть хорошо, делать запрос просто к последниму файлу.