Drupal

Drupal, BlogAPI и теги

Задача: публиковать автоматические ленты новостей на сайтах. Новости берутся с веба, обрабатываются (распознается тематика, присваиваются теги), после чего появляются на сайте.

По идее, для этого предназначен Aggregator, но его интеграция с Taxonomy запланирована только в Drupal 7. Кроме того, pull мне очень не понравился, хочется push. Для push есть BlogAPI, там даже поддерживается установка категорий (тоже довольно диким способом, ибо информация о словарях недоступна, можно получить только список терминов), но вот установка тегов (т.е. терминов, которых в словаре может не быть) через стандартный BlogAPI невозможна. mt_tags - не поддерживаются и не обрабатываются.

Я уже почти поправил BlogAPI (всего то нужно задать один параметр конфигурации - в какой словарь класть теги, остальное все тривиально) и оно уже почти работало, но нашлось готовое решение.

Inline Tags делает все что нужно. Не стандартным путем (т.е. использовать готовое поле tags в blog-редакторе и передачу значений в mt_tags), но вполне приемлемым: список тегов пишется в [tags][/tags] и все работает (проверено).

Drupal: микроправки к BlogAPI

Все-таки Drupal пишут индусы. Пришлось по уши залезть в код, чтобы выяснить, отчего не работают metaWebLog.getCategories и mt.getCategoryList. Просто забыли проверить авторизацию, отчего, по счастью, просто все сломалось, а не стало отдавать все всем наружу. Не тестируют.

Патч: blogapi.diff.gz

Патч зашлю в Drupal сегодня.

Стандартное уведомление: если вы не знаете что такое патч, то он вам не нужен.

P.S. Работу с массивами в PHP проектировали ненатуралы.

Update: правка вошла в Drupal 6.5

nofollow-noindex патч для Drupal 6.4

Ссылками в комментариях спамят не только этот блог, но и мои сайты на Drupal (libraw.org,gpgpu.ru и так далее). В отличие от MovableType, антиспам-средства у Drupal развиты еще меньше, приходится пропускать без модерирования только зарегистрированных юзеров, но и это не вполне помогает.

Мировая часть проблемы в Drupal решена - ко всем ссылкам в юзерском контенте можно добавлять rel=nofollow, отчего спамить под гугл становится неинтересно. Остается яндекс, который rel=nofollow не понимает (насколько мне известно), но зато понимает "рамблеровский" (придуманный Димой Крюковым) тег <noindex>.

Сооответственно, нужно добавить три строчки кода к modules/filter/filter.module:

Сделано примерно так же, как для Movable Type:

  • Сама ссылка заменяется на явоскриптовую
  • В noscript,noindex, a.. rel=nofollow помещается слово [link] которое и становится ссылкой для Javascript-disabled people (стандартные стили у Drupal такие, что картинка переносится на новую строку и красивая стрелка не получается).

Стандартный дисклеймер. Если вы не знаете что такое патч, то вам все вышеописанное не нужно.

Ссылками в комментариях спамят не только этот блог, но и мои сайты на Drupal (libraw.org,gpgpu.ru и так далее). В отличие от MovableType, антиспам-средства у Drupal развиты еще меньше, приходится пропускать без модерирования только зарегистрированных юзеров, но и это не вполне помогает.

Мировая часть проблемы в Drupal решена - ко всем ссылкам в юзерском контенте можно добавлять rel=nofollow, отчего спамить под гугл становится неинтересно. Остается яндекс, который rel=nofollow не понимает (насколько мне известно), но зато понимает "рамблеровский" (придуманный Димой Крюковым) тег <noindex>.

Сооответственно, нужно добавить три строчки кода к modules/filter/filter.module:

Сделано примерно так же, как для Movable Type:

  • Сама ссылка заменяется на явоскриптовую
  • В noscript,noindex, a.. rel=nofollow помещается слово [link] которое и становится ссылкой для Javascript-disabled people (стандартные стили у Drupal такие, что картинка переносится на новую строку и красивая стрелка не получается).

Стандартный дисклеймер. Если вы не знаете что такое патч, то вам все вышеописанное не нужно.

Наблюдения за жизнью пауков в банке

В Drupal-сообществе есть (или был?) такой Vrencian Zoltan. Буквально сегодня у него отняли доступ к CVS, мотивируя это тем, что он дублирует уже существующие модули.

Однако я этих модулей пересмотрел за последнее время более полусотни и из посмотренного, выбрал один именно от этого автора (легкий пост текстов с картинками) ибо этот модуль:

  • лучше варианта конкурента;
  • есть версия под 6-й друпал, чего у конкурента нет.
Да и вообще, судя по комментариям, мужик честно доделывал чужую работу до состояния, когда можно удобно использовать.

Ну ладно, его дело, собственно, но что делать пользователям модуля ?
Сейчас у меня Друпал орет, дескать неподдерживаемый модуль, снесите срочно! Соответственно, этот warning теперь будет висеть всегда, пока не снесу. И других, более важных, предупреждений я не увижу (если не буду проверять статус каждый день).

Я то перетерплю, у меня сайту два дня и текстов с картинками ровно два. Я могу и руками переделать все. А что делают те, у кого таких текстов сотни ? Замену я нашел, она более функционально, но и куда более монструозна. Но ведь это же перевставлять новые теги....

Drupal + PostgreSQL = фиаско

Умный Беляев не ошибался: Drupal с Postgresql не живет. Увы.

Последней каплей оказалась попытка побэкапить MySQL-ный вариант сайта и все-таки отнести его на Postgres (я его лучше знаю, лучше умею бэкапить, лучше умею настраивать и так далее).
Увы, Backup and Migrate получает список таблиц для бэкапа через 'SHOW TABLE STATUS', а это место, понятное дело, в постгресе не работает.

Впрочем, справедливости ради, на маленькой базе на MySQL оно работает в пару раз быстрее за счет query cache. А большой базы у меня пока нет.

Drupal и PostgreSQL

Попытка использовать Drupal совместно с PostgreSQL 8.3 с грохотом провалилась. Основная функциональность работает, но стоит копнуть чуть глубже и налетаешь на проблемы. Например на эту, судя по переписке там ниже - проблема не только в блоках (ну и вообще, идея делать join по двум полям, одно числовое, а второе - какое-то, несколько потрясла)

Довольно печально, кстати, смотреть, как ошибка найденная 2 месяца назад - не поправлена, хотя с тех пор было 1 или 2 релиза.

Натыкался и на проблемы с форматом даты, при попытке поставить русский формат (DD.MM.YYYY) оно прямо в таком формате и в базу хочет записаться.

Еще про Drupal: словил невнятный подземный стук. Смена языка пользователем сначала работала, а потом почему-то перестала, работает только смена в системе в целом. В том же месте другие грабли: экспорт строк для перевода экспортирует только те строки, которые встречались системе при работе, нормального способа экспортировать все на свежеустановленной CMS - не нашел.

Резюме. Несмотря на то, что система мне очень понравилась, впечатление пионерской поделки временами перебивает все прочие.

Pages

Subscribe to Drupal