В ходе работ по созданию сайта возникла очередная простенькая задачка. В материале необходимо было реализовать поле "Год выпуска". Простой выпадающий список, в котором последовательно перечислены годы от некоторого начального, например 1900, и до текущего.
Сначала думал завести какое нибудь поле типа "Дата" и задать для него формат с одним только годом и прилепить календарик. Скачал модуль Date. Он попросил вдобавок модуль jQuery UI. Тот притащил за собой тяжелую библиотеку. Но с напрыга не получилось.
А задачка, как оказалось, решалась гораздо проще. Достаточно было создать поле с типом "Целое" (integer). B для него в списке допустимых значений использовать php-код:
return range( date('Y'), 1900 );
Отдельное спасибо сообществу Drupal.Ru, где и найдено было решение.
Учитывая перспективы развития сайта давно хочется заняться географией пользователей. Если попросту, то хочется по ip-адресу определять местоположение пользователя (а именно - страну и регион). И даже предлагаться зарегистрированным пользователям сохранять свое основное местоположение в своих профилях. Далее подробней.
1. Создать иерархический справочник "География" со странами и регионами.
2. При входе на сайт определять по IP местоположение пользователя.
Порядок следующий. На внешнем сервисе (на сколько я понял подходящих два: отечественный IpGeoBase и импортный MaxMind GeoIP® City Database. Для обоих есть соответствующие модули) определять страну и регион по IP-адресу. Проверять в словаре с географическими терминами наличие определенной страны и региона. В случае отсутствия добавлять их в справочник. Страну корневым термином, регион - дочерним.
Голову себе вынес, как вывести корневые термины словаря таксономии.
С самого начала выбрал для этого модуль Views, тем более, он у меня давно используется.
С аргументами я более менее разобрался.
Добавил ID термина (в настройках при добавлении из вывода исключил) и Термин (убрал Метку).
С фильтром, ограничивающим выборку одним словарем тоже все оказалось понятно.
Уперся в то, как вывести именно корневые термины из словаря таксономии.
Долго долго бился головой. К сожалению, документация по Views, по крайней мере, на русском языке оставляет желать лучшего. Пробовал и так и сяк. Перепробовал кучу связанных модулей. Ничего не выходит.
Путем проб и ошибок нашлось решение.
1. Добавил взаимосвязь "Таксономия: Родительский термин" (в настройках не указывать, что связь обязательна).
2. И после этого добавил фильтр "Таксономия: ID термина" (в настройках Связь = Родитель, Оператор = Пустое поле (NULL))
Вчера на Drupal.ru наткнулся на книжку "Руководство по быстрому старту в Drupal": https://s3.amazonaws.com/DrupalGuide/DrupalGuide.pdf
На мой взгляд книжка здорово напоминает "BZ DRUPAL HANDBOOK": http://www.garageauto.info/node/11
Только покороче.
Лично меня привлек раздел касающийся представлений. Как раз его отсутствие я и указывал в недостатках BZ DRUPAL HANDBOOK. Давно хотел познакомиться с ними поближе. Хороший повод.
Почитаю внимательнее и детализирую свое мнение.
Имеем:
Drupal 6.19
Image 6.X-1.0-beta6
Views 6.X-2.11
В нашем случае Друпал организовывает галереи с помощью родного представления Image_gallery из состава модуля Image
Как известно, галереи в модуле Image организуются с помощью терминов таксономии.
А термины таксономии при выводе материалов можно объединять и обобщать. Или иными слова применять к ним операции AND и OR.
Таким образом получается, если для вывода галереи используется запрос /image/tid/XXX, где XXX - номер галереи, то для вывода объединенной галлереи необходимо использовать запрос /image/tid/XXX,YYY XXX и YYY - номера выводимых галерей. Но при вводе такого запроса, Друпал отвечал мне "Страница не найдена".
Для решения проблемы я полез в представление Image_gallery
Установил для его аргумента "Таксономия: ID термина" следующие значения:
а) настройки проверки:
1) проверка = "термин таксономии";
2) словари установить все доступные для изображений. По умолчанию должно быть "галереи изображений";
На неделе наткнулся на запuсь: http://drupal.ru/node/48049
Понятно, мимо пройти не мог. В выходные было решено попробовать. И было попробовано.
Отдельно хочу отметить качество документации. Нашел ответы на все свои вопросы. И качество перевода отдельно порадовало.
1. Сначала я поставил mail_ru_auth
Все четко по инструкции.
а) настройка осуществляется в подразделе "Mail.ru Auth Settings" раздела "Настройка сайта";
б) установил флажки:
- "показывать кнопку входа через mail.ru на странице логина";
- "показывать кнопку входа через mail.ru в блоке логина";
в) остальные настройки не трогал.
2. Следующим поставил mail_ru_share
Тут инструкции не оказалось. Но не надо было быть семu пядей во лбу, чтобы догадаться.
а) включил модуль;
б) настройка осуществляется в подразделе "Mail.ru Share Settings" раздела "Настройка сайта";
в) там установил флажки для нужных типов материалов (заметка, запись в блоге в моем случае);
В прошлом сайта Олег настоял на том, чтобы я убрал термины таксономии (ключевые слова) из тизера (форме отображения на главной станице) материала.
Я убрал их отображение совсем (и из полного отображения материалов полностью) с помощью модуля Taxonomy_Hide.
Но мысль вернуть ключевые слова в полное отображения материала не оставляла меня.
И вот, решение найдено.
В шаблоне материала (node.tpl.php) меняем строку:
<?php if ($terms): ?><div class="terms"><?php print $terms ?></div><?php endif; ?>
на:
<?php if ($terms): { if ($page != 0) { ?><div class="terms"><?php print $terms ?></div><?php }} endif; ?>
Решил разобраться с имиджем (репутацией) пользователей сайта.
Для начала немного теории.
Как оценить имидж пользователя?
а) по его активности;
б) по качеству его активности.
Как оценить активность пользователя?
а) поощрять размещение материалов;
б) поощрять комментирование (участие в обсуждениях);
в) поощрять оценку материалов сайта.
Как оценить качество активности пользователей?
Дать возможность другим пользователям оценить материалы и комментарии оцениваемого пользователя.
Таким образом для оценки имиджа пользователя нам необходимо решить вышеуказанные задачи. Приступим.
1. В качестве основы выбрал модуль User Points. Это скорее библиотека, на основе которой мы будем решать наши задачи. Она позволяет учитывать оценки пользователей и визуализировать эти оценки.
Давно хотелось подсветить внешние ссылки. Хотя бы чтоб самому стало понятно, какие ссылки куда ведут.
Оказалось, существует готовый модуль External Links, который с успехом подсвечивает внешние и мыльные ссылки. Тут же решил его запопробовать. И не был разочарован.
Помимо подсветки внешних ссылок, которые он пасет по адресу, а не способу открытия (как я наивный юноша Чукотки предполагал). Мало того. В нем есть опция, которая позволяет открывать внешние ссылки в новом окне. Т.е. не надо париться с опцией target="_blank" для внешних ссылок. Модуль все сделает сам. И больше того, можно настроить уведомление о переходе на внешний сайт. Типа за контент не отвечаем.
Остался очень доволен. Рекомендую.
Продолжая тему работы с изображениями в Drupal, хочу поделиться способом вставки галереи изображений в материал Drupal. Этот способ имеет актуальность, если Вы на своем Drupal-сайте используете модуль Views.
Как известно галерея изображений представляет собой представление image_gallery. Таким образом, зная как вставить в материал представление, становится ясно, как вставить и галерею. Мне уже попадалась на глаза подобная тема, но что-то не получилось. И вот в очередной раз я встретил тему вставка view в содержание страницы на сайте Drupal for you. Благо, в комментариях к теме затрагивалась в том числе и вставка галлереи.