Сборник полезных рецептов


slasant - Posted on 25 Март 2009

За то время, пока я знакомлюсь с Друпалом и его русскоязычным коммьюнити, я успел уже принять участие в нескольких дискуссиях, которые оказались для меня, как начинающего друпалера, весьма полезны. Вот только беда, что и эти дискуссии и другие, которые я только читал, канули в Лету моего трекера, и я уже забыл, где их искать. В общем, я принял волевое решение собирать в рамках этого поста в моём блоге на drupal.ru кое-что из полезных рецептов, которые заинтересовали меня лично. Авось что-то из них пригодится и другим людям?

Косым шрифтом отмечены последние дополнения.

Модули:
1. Модуль AJAX-комментариев by neochief
Модуль, который позволяет пользователям добавлять комментарии без обновления страницы. Должно быть жутко удобная штука, но и её я ещё не пробовал.

2. Заголовки комментариев
Модуль comment_subject для изменения автозаполнения заголовков, которое часто раздражает пользователей.

3. Модуль «Я пойду!» by nleo
Модуль, добавляющий пользователя в список участников того или иного события. Я пока не тестировал, поскольку ещё не успел добраться до создания нужного типа контента.

4. Модуль «Conditional Fields»
Пока что модуль в стадии снэпшота. Принцип работы в чём-то аналогичен hierarchical select, только без таксономии. Но на самом деле модули совершенно разные:

"gorr" написал(а):

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

5. Личные сообщения
Модуль, позволяющий посетителям обмениваться личными сообщениями на сайте.

6. Модуль «Photomarks» by nleo
Отметить себя (не только себя) на фотографии (аналогично фкантагду и проч.)

7. Google maps
Вывод карт и маркеров на определённых страницах. Полезно также это и это.
+ Модуль Simple Gmap by bodro — более лёгкий, но реализующий только основной функционал.
+Модуль Yandex Maps by bohart — аналог для карт Яндекса.

8. Графики и диаграммы
Построение графиков и диаграмм через Chart API, причём для рендеринга используются мощности Гугла, а не Вашего сайта!

9. Переброс залогиненного пользователя
Два модуля, которые позволяют перемещать только что залогинившегося пользователя на определённую страницу.

Темизация:
1. Theme Guide (на английском языке!)
Руководство по темизации с официального сайта Друпал.

2. Имя и фамилия вместо ника
Как указывать в качестве имени автора новости (статьи) не ник пользователя, а указанные им фамилию и имя.

3. Темизация пояснений
Решение по темизации пояснений о форматировании и прочем — весьма и весьма полезно.

4. Темизация ноды, имеющей разные синонимы
Рассказ о том, как правильно по-разному темизировать одну и ту же ноду, к которой могут обращаться через разные синонимы.

5. Темизация ноды by HIgor1968
Пример того, как реализовать темизацию ноды с CCK и таксономией без использования views.

6. Темизация блока с опросом
Чистка некрасивостей и создание красивостей -)

7. Темизация вывода таксономии
Красивый вывод терминов таксономии по словарям, а не кучей. Плюс в довесок модуль Term Display, занимающийся, по сути, тем же самым. И пример модуля, вообще убирающего термины при выводе ноды.

8. Темизация конкретной ноды
Как определить адрес ноды, которую нужно темизировать.

9. Таксономия
Ряд ссылок с указанием того, как работает таксономия.

10. Ссылки на материал
Постоянные ссылки на материал + вставка в конце статьи «ссылки для копирования».

11. «Не проверено» в комментарии
Простой способ убрать фразу «(не проверено)» из подписи анонима в комментарии.

12. Темизация страницы «на обслуживании»
Простой способ с помощью небольшого хака темизировать страницу «на обслуживании».

13. Темизация регистрационной формы
«Склейка» филдсетов регистрационной формы и темизация её вывода (для пятёрки и для шестёрки).

14. Настройка темы
Простое и понятное объяснение того, как решить некоторые вопросы темизации.

Таксономия:
1. БД по странам/регионам/городам + по маркам и моделям авто by penexe
БД в виде словарей таксономии + скрипт для того, чтобы добавить их к себе на сайт, с подробным описанием того, что нужно делать.

cck + views:
1. Глубина погружения в таксономию во views
Как глубоко должен залезать views при выводе нод, принадлежащих родительскому термину.

2. Интервал в фильтре во views
Использование интервала при создании фильтра во views.

3. Ссылки на другие материалы
Работа с Node reference.

4. Аргументы во views by penexe
Подробный рассказ о том, как работать с аргументами во views.

5. Pathauto + views
Скринкаст решения (на английском!), которое позволяет использовать плюсы views и pathauto и сделать урлы новостей не только удобочитаемыми, но и способными показывать архивы.

Методы и решения некоторых задач:
1. Форматирование даты и времени
Разбор того, как работает стандартная функция Друпала format_date, и описание сложностей, с которыми сталкиваешься при работе с ней.

2. Использование переменных в блоках и на страницах
Решение для шестого Друпала — вместо _phptemplate_variables($hook, $vars) (пятый Друпал) в шестом надо использовать phptemplate_preprocess_block() и phptemplate_preprocess_page().

3. Массив значений в SQL-запросе
Как использовать в Друпал массив в качестве условия для запроса к БД массив значений.

4. Импорт информации в БД
Массовое создание нужных нод средствами Друпал.

5. Запрет на редактирование отдельной ноды
Подсказка метода решения запрета на редактирование отдельной ноды всем пользователям кроме админа, например.

6. Профиль пользователя
Что нужно сделать, чтобы сделать доступным просмотр пользователей из того же города/любящих тот же цвет и т.п.

7. Рефреш капчи через AJAX by kosilko
Перезагрузка капчи без перезагрузки страницы.

8. Ограничение доступа к содержимому
Ограничение и предоставление доступа к модулям и блокам, созданным Вами, через user_access()

9. Программное создание ноды
Пример программного создания ноды внутри Друпал.

10. Clean URLs
Включение «чистых адресов» через .htaccess и settings.php.

11. Вывод времени в часовом поясе пользователя
Вывод даты и времени с учётом часового пояса, указанного пользователем. Используется Date API.

12. Конвертация кодировки БД на лету
Как при подключении дополнительной базы данных на лету конвертировать данные из cp-2151 в UTF8, например.

13. Вывод количества знаков, введённых пользователем
Вывод рядом с полем textarea количества символов, введённых пользователем (иногда необходимо, если хочется ограничить пространность высказываний пользователя).

Решение проблем:
1. Решение проблем с IE<7 + тут
Избавление от «падения» правой колонки в IE младших версий (из-за кривой работы этого броузера с css).

2. Права на загружаемые изображения
Решение проблемы в ядре Друпала — невыполнения chmod при закачке файла на сервер.

3. Относительные пути
Решение небольшой проблемы с относительными путями (не надо забывать ставить слеш ;)

4. «Пропажа» полей
Решение проблемы с «пропажей» некоторых полей после обновления (отключить/включить модуль и запустить update.php)

5. Пропажа альта и описания картинки во views и в нодах
Исправление через патчи глюка с заменой альта в картинках, созданных через Imagefield на «a» во views и полным исчезновением его в нодах.

6. Локализация заголовка prvatemsg
Исправление локализации заголовка privatemsg таким образом, чтобы не терять количество новых сообщений.

7. Создание модулем таблицы в БД
Решение проблемы с «нежеланием» Друпала использовать ваш модуль для создания таблицы в БД (выборочная чистка записей в таблице system).

Сниппеты:
1. «Сейчас на сайте»
Сниппет для пятого и шестого друпала, отображающий блок с пользователями, которые сейчас находятся на сайте.

2. Копипаст тизера и ссылки
Блок, появляющийся на странице материала определённого типа и предоставляющий тизер и ссылку на материал Вашего сайта для копирования на другие ресурсы.

А также:
1. example.net->www.example.net + решение с параллельными логинами пользователя
Как с помощью .htaccess сделать редирект с одного доменного имени на другое и как избавиться от отображения параллельного логина одного и того же пользователя на сайте через разные броузеры.

2. Кое-что об AHAH
Здесь, здесь, здесь, здесь и здесь.

3. Русский морфологический поиск
Решения для пятого и шестого Друпала.

4. Запуск хронометра (cron) из Сети
Бесплатный русскоязычный (если кому-то важно ;) сервис, автоматически запускающий крон сайта.

5. Обновление между минорными версиями
Что именно можно не делать при обновлении между минорными версиями (6.8->6.9, 6.3->6.9 и т.п.) и почему.

PS Плюс ссылка на мой блог здесь на drupal.ru — в основном, я задаю вполне конкретные развёрнутые вопросы и получаю на них соответствующие ответы. Может быть это пригодится ещё кому-нибудь кроме меня -)

UPD Окинул взглядом это безобразие и пообещал самому себе, что позднее разобью его по темам, чтобы было удобнее пользоваться.
UPD 2 Ах да, обещаю, что буду пополнять этот список... хотя бы иногда -)

источник: drupal.ru