Модуль LiveJournal CrossPoster

Главные вкладки

Аватар пользователя direqtor direqtor 24 апреля 2008 в 14:21

Пощупал тут ручками модуль LiveJournal CrossPoster. Не сильно глубоко щупал, но на ощупь он мне понравился.
Тут вроде бы о нем еще не писали.
В своем блоге разместил кратенький атчетег.

Модуль LiveJournal CrossPoster и его настройки

Сам модуль представляет из себя порт с WordPress.
(Сайт разработчика - http://ebroder.net/livejournal-crossposter/.
Немного инфы для ВордПресс по русски - http://blog.freeatnet.com/projects/wp-lj-crossposter-r.)

Для публикации материалов с Друпал-сайта на ЖЖ можно использовать модуль LiveJournal CrossPoster.
Скачать файлы модуля можно со страницы проекта http://drupal.org/project/ljxp. Пока модуль работает только для пятой и четвертой версий Drupal.
Установка обычная: помещаем модуль в папку sites/all/modules/ и включаем его на странице администрирования модулей (admin/build/modules). После этого в меню администратора появляется страница LiveJournal crossposter (admin/settings/ljxp), на которой и настраивается это хозяйство.

Настройки администратора

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

Cannot crosspost to LJ - Нельзя постить в ЖЖ.
Crosspost to LJ by default - Можно постить в ЖЖ по умолчанию.
Can crosspost to LJ, but not by default - Можно постить в ЖЖ, но не по умолчанию.

Последние две возможности и позволяют автоматически создать копию материала на www.livejournal.com. Отличие их состоит в том включен ли будет постинг в ЖЖ для материала по умолчанию или нет. Но в любом случае, именно пользователь может включить или выключить эту возможность для вновь создаваемого или редактируемого материала.

Итак, выбрав тип материала, который постим, идем настраивать права пользователей. На странице управления доступом admin/user/access находим блок модуля ljxp и выставляем права can crosspost to livejournal для тех пользовательских ролей, которым мы хотим предоставить эту возможность. Естественно у этой роли должны быть и права на создание и/или редактирование того типа материала, который мы указали для постинга в ЖЖ.

Если ваш сайт однопользовательский и вы всегда под USER #1, то этот шаг можно пропустить.

Настройки пользователей

Дальнейшие настройки уже проводят сами пользователи в своем профиле и они уникальны для каждого из них.

Заходим в свой профиль и жмем «Изменить». Все настройки находятся в блоке LiveJournal cross-posting.

Ставим галочку в чекбоксе «Use Livejournal crossposting»

Host: по умолчанию тут стоит http://www.livejournal.com, но не ЖЖ единым жив этот мир, можно поставить любой другой сайт, который ЖЖ-совместим (LiveJournal-compliant site)

User: имя вашего ЖЖ-эккаунта.

Password: пароль учетной записи ЖЖ. Пароль сохраняется в базе в хэшированном виде.

Community: сообщество ЖЖ, в которое попадет этот пост. Если поле оставить пустым, то пост появится в вашем журнале.

Your site name: Название вашего сайта для употребления в заголовке поста в ЖЖ. Если оставить пустым будет использовано имя сайта, на котором мы все это настраиваем.

Tag posts with categories: Связаные с материалом термины таксономии будут переданы в ЖЖ в качестве тэгов. Правда, честно предупреждается о возможных проблемах для нероманских языков, но тут разработчики просто перезакладываются - с русским языком все в порядке.

Livejournal posts will be: выбираем как публиковать посты, для всех (Public) или только для друзей (Friends only)

Comments: выбираем где быть комментариям. В ЖЖ (Allow comments on LiveJournal) или на нашем сайте (Require users to comment here). Во втором случае комменты в ЖЖ будут отключены, а в заголовке поста будет ссылка на указанную страницу вашего сайта с формой коменнтариев.

How to handle teasers: три варианта того, что из материала постить в ЖЖ. Только тизер (Post only the teaser), тизер и ссылка на весь материал под катом (Post the teaser with the rest behind a cut) или весь материал целиком (Post the entire post).

Cut Text: собственно, текст ката передаваемый в ЖЖ, на котором и будет стоять гиперссылка на весь материал.

Custom header: Пользовательский заголовок поста. В нем можно употреблять три заглушки: %blog_name - имя блога, %permalink - ссылка на материал, %comments_link - ссылка на комментарии. Если поле оставить пустым, то модуль будет сам генерировать нужное.

Если вы ввели все необходимое, сохраните страницу и вперед на создание нового материала.

Создание и редактирование материалов

Теперь в форме редактирования или создания нового материала (того типа для которого это настроено) около формы сообщения в системный журнал появляется чекбокс «Crosspost to LiveJournal» (Отправить в ЖЖ). Ставим галочку и при отправке материала на сайт модуль ljxp автоматически продублирует его в вашем блоге Живого Журнала. Можно также и опубликовать уже имеющиеся материалы вашего сайта просто поставив галочку и пересохранив его (иногда может понадобится сбросить дату материала). При сохранении отображаются также все сделанные изменения.

Кроме того в ЖЖ отправляется именно HTML-код, который прошел обработку всеми фильтрами. Это может быть удобным для использования в ЖЖ некоторых возможностей Drupal-модулей, например, подсветки синтаксиса через фильтр GeSHi. В визуальном редакторе ЖЖ, пока таких возможностей не обнаружил. (Неужели плохо искал? Smile ). Засада поджидает нас только с относительными ссылками. Их для трансляции в ЖЖ придется писать в абсолютном виде - http://и так далее.

Снятие галочки «Crosspost to LiveJournal» у редактируемого материала, удаляет его из ЖЖ. То же самое происходит если вы измените статус публикации материала на «Неопубликовано», пост в ЖЖ будет удален.

Русификация модуля ljxp (LiveJournal CrossPoster)

С русификацией у модуля негусто. В скачанном с www.drupaler.ru .po-файле переведено строк 12 из 100 необходимых. Но, поскольку вольный перевод основных терминов я уже дал в этой заметке, можете забить его сами через страницу поиска строк для переводов (admin/settings/locale/string/search).

Там же надо будет отыскать две строки «Please leave any !comments there.» и «Originally published at !link.». Эти строчки добавляются в заголовок поста, если не настроен пользовательский. Я их перевел так: «Ваши !comments.» и «Трансляция. Оригинал: !link.».

Или введите в профиле в поле Custom header пользовательский заголовок на русском, например такой:

<strong>Из блога <a href="http://shaman.asiadata.ru/">%blog_name</a>.</strong>
<em><a href="%permalink">Оригинал сообщения находится здесь</a>.</em>

<a href="%comments_link">Ваши комментарии</a>.

Лишнее, как говорится, можете удалить. Не ваше - изменить.

Ну, вот. Теперь и у меня есть ЖЖ. http://direqtor.livejournal.com

Некоторые особенности

Если постите в разные сообщества, то придется постоянно контролировать в профиле пользователя какие из них указаны при отправке каждого материала и при необходимости сперва их изменять. Очень, кстати, большое неудобство.

Некоторые ошибки

При попытке разместить в ЖЖ какой-нибудь старый материал вы можете получить сообщение об ошибке следующего вида:

LiveJournal crossposting error: 153: Incorrect time value: You have an entry which was posted at YYYY-MM-DD HH:mm, but you're trying to post an entry before this. Please check the date and time of both entries. If the other entry is set in the future on purpose, edit that entry to use the "Date Out of Order" option. Otherwise, use the "Date Out of Order" option for this entry instead.

ЖЖ сообщает, что ваша последняя запись в нем помечена датой YYYY-MM-DD HH:mm, а вы пытаетесь создать запись с более ранней датой. Хотя опцию "Date Out of Order" наш модуль не поддерживает, есть возможность отправить в ЖЖ и более старые материалы с Друпал-сайта.

Найдите в форме редактирования ноды раздел "Информация об авторе" и удалите из поля "Время создания" все, оставив поле пустым. После этого сохраняйте материал - в ЖЖ он пойдет с текущей датой. Если захотите на своем сайте оставить старую дату, скопируйте ее предварительно в буфер обмена, а после кросспостинга зайдите в редактирование ноды снова, вставьте в поле дату и пересохраните материал. В материале на сайте и в ЖЖ будет стоять нужная дата.

Модуль доступен для 4-ой, 5-ой и 6-ой версий Drupal.

Комментарии

Аватар пользователя argon argon 25 апреля 2008 в 23:03

Скажите, а LiveJournal CrossPoster с картинками как работает? Оставляет саму картинку в блог-сайте, а в жж вставляет ссылкой? или как?

Аватар пользователя worona worona 26 апреля 2008 в 19:06

Встало все ОК,
Правда не встала заметка, закрепленная вверху списка.
LiveJournal crossposting error: 153: Incorrect time value: You have an entry which was posted at 2008-03-28 00:51, but you're trying to post an entry before this. Please check the date and time of both entries. If the other entry is set in the future on purpose, edit that entry to use the "Date Out of Order" option. Otherwise, use the "Date Out of Order" option for this entry instead.
Не встали заметки с модулем (слайдшоу)
Не ставится видео. Ошибка такая же. 153
http://worona02.livejournal.com/

Аватар пользователя direqtor direqtor 29 апреля 2008 в 13:06

Потестил - выловил эту ошибку. Появляется при постинге старых материалов. Когда они старше, чем последний пост в ЖЖ. При пересохранении удаляешь дату, в ЖЖ идет текущая. Потом пересохраняешь еще раз поставив старую дату - дата в ЖЖ обновляется.

Аватар пользователя argon argon 29 мая 2008 в 17:00

Тем не менее, с экспортом вложенных объектов все плохо:

Картинки: У меня они вставляются ассистом, и вставляются с относительным адресом. Соответственно приходится дописывать руками абсолютный адрес.

Видео: Код от видео :

<!--cut and paste--><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#vers... width="432" height="285" id="VE_Player" align="middle"><param name="movie" value="http://static.videoegg.com/ted/flash/loader.swf"><PARAM NAME="FlashVars" VALUE="bgColor=FFFFFF&file=http://static.videoegg.com/ted/movies/PHILIPPESTARCK-2007_high.flv&autoP...><param name="quality" value="high"><param name="allowScriptAccess" value="always"><param name="bgcolor" value="#FFFFFF"><param name="scale" value="noscale"><param name="wmode" value="window"><embed src="http://static.videoegg.com/ted/flash/loader.swf" FlashVars="bgColor=FFFFFF&file=http://static.videoegg.com/ted/movies/PHILIPPESTARCK-2007_high.flv&autoP... quality="high" allowScriptAccess="always" bgcolor="#FFFFFF" scale="noscale" wmode="window" width="432" height="285" name="VE_Player" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></object>

не только не передается, но и блокирует весь остальной текст поста, за этим кодом следующий.

Аватар пользователя goodboy goodboy 29 мая 2008 в 18:36

Отличный модуль, спасибо direqtor за подробную статью.

Единственное - не понял логики насчет Custom header. Если не заполнять это поле - выведется заголовок по-умолчанию (с черной рамкой). А если мне не надо заголовка вообще? Что, я должен писать в Custom header код типа:
<span></span>? Пришлось залезть в модуль и вымарать заголовок по-умолчанию.

На мой взгляд, модулю надо заполнить Custom header заголовком с черной рамкой (для примера).

Тогда, есть 3 варианта:

  1. Ничего не трогать - будет учебный заголовок с черной рамкой
  2. Написать свой код - будет свой заголовок
  3. Все стереть - не будет никакого заголовка
Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 12 апреля 2009 в 17:49

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

Аватар пользователя goodboy goodboy 14 апреля 2009 в 15:10

Можно в

  $ljxp = ljxp_load_settings($node->uid);

заменить на (например)

$ljxp = ljxp_load_settings(1);

Тогда все новости будут публиковаться в админский блог

Аватар пользователя goodboy goodboy 15 апреля 2009 в 13:28

Было бы здорово прикрутить выбор этого суперпользователя(в чей дневник все пишут) в настройке модуля. Чтоб не править руками, а выбрать из списка.

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 28 апреля 2009 в 1:01

"Goodboy" wrote:
Было бы здорово прикрутить выбор этого суперпользователя(в чей дневник все пишут) в настройке модуля. Чтоб не править руками, а выбрать из списка.

Я попытался разобраться в модуле и дописать его таким образом, чтобы можно было в его настройках прописать один ЖЖ, в который будут сваливаться все опубликованные на главной материалы разрешённых типов, но запутался — для меня модуль оказался слишком сложным.

Аватар пользователя direqtor direqtor 28 апреля 2009 в 4:01

Самая сложная функция в этом модуле ljxp_post($node), остальное все в принципе довольно прозрачно.

Т.е. задача такова: безотносительно к использованию модуля для личных нужд пользователей добавить в него возможность установки ЖЖ эккаунта и/или сообщества в который будут сливаться все записи выставляемые на главную?

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 2 мая 2009 в 16:45

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

По идее, конечно, этот модуль вообще должен быть несколько переписан, надо выделить административный инклюд — странно, что сам автор этого не сделал. Как я понимаю, это по правилам хорошего тона в Друпал сейчас полагается делать .admin.inc

Аватар пользователя prot prot 28 октября 2009 в 19:16

У меня проблема сегодня (раньше было все ок). Когда делаю новую запись в своем блоге, выдается ошибка:
LiveJournal crossposting error: 300: Client error: Don't have access to requested journal

Если поменять аккаунт - то все ок. В чем может быть проблема?

Аватар пользователя direqtor direqtor 5 ноября 2009 в 10:53

Модуль предполагает, что для каждого пользователя настраиваются свои настройки на эккаунт ЖЖ. Т.е. вы либо пользуетесь не своим эккаунтом, либо у вас в настройках неверный пароль, либо указано сообщество к которому в вашем ЖЖ не настроен доступ.

Я на этот ваш вопрос и в своем блоге отвечал

Аватар пользователя afishi afishi 22 января 2011 в 20:26

Я хотел бы объеденить всех регистраторов... может можно как то сделать. чтобы все кто заносит инф будет дублироваться на ЖЖ?

Аватар пользователя boratiche boratiche 10 февраля 2011 в 14:09

Добрый день.
После переустановке "LiveJournal crossposter" в типах материалов не появляется "Crosspost to LiveJournal".
У кого нибудь было подобное?