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

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 12 января 2009 в 19:29

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

Если вы совсем новичок в Друпал и хотите начать работать с этой замечательной CMS, первым делом я бы рекомендовал вам вот это руководство. Ниже представлены решения проблем, нередко возникающих у начинающих администраторов сайтов на Друпал.

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

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

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

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

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

"gorr" wrote:

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

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

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

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

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

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

10. Node Gallery
Модуль галереи с поддержкой views2, lightbox2, token и, разумеется, таксономии. Модуль находится в альфе, но, на мой взгляд, имеет неплохие перспективы.

11. quant
Модуль аналитики, который позволяет вам смотреть, каковы были активные действия на сайте в течение определённого периода времени (сколько создано нод, оставлено комментариев и так далее). Модуль может быть расширен вами самостоятельно, так как имеет понятный API. Зависит от chart, описанного чуть выше.

Темизация:
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 и сделать урлы новостей не только удобочитаемыми, но и способными показывать архивы.

6. Галерея с помощью cck+views (Части 1 и 2)
Довольно изящное решение по созданию галерей на сайтах с уже установленными модулями cck и views на основе скринкаста. Альтернативный вариант — использование модуля Views Gallery, созданного по мотивам того же скринкаста.

7. Хендлеры Views API.
Вопросы и примеры по работе с хендлерами views.

Методы и решения некоторых задач:
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 количества символов, введённых пользователем (иногда необходимо, если хочется ограничить пространность высказываний пользователя).

14. Быстрая вставка кода SAPE в Друпал
Самое простое для понимания (и, как показала лично моя практика, самое беспроблемное) решение вопроса с прописыванием кода SAPE на сайте с установленным drupal.

15. Использование Batch API при программном создании большого количества нод.

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

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

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

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

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

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

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

8. Исправление настроек темы
Простое решение проблемы с «невосстанавливаемыми» настройками темы.

Сниппеты:
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 Ах да, обещаю, что буду пополнять этот список... хотя бы иногда -)

0 Thanks

Комментарии

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 12 января 2009 в 19:36

Хм-м-м... А я то жалел, что такой функции нет. Гм... -\
Ладно, я думаю, что в таком виде людям будет полезно тоже, потому что для каждой ссылки есть небольшой тизер с рассказом о том, что это за «рецепт».

Аватар пользователя tyred tyred 13 января 2009 в 6:08

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

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 13 января 2009 в 13:04

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

Аватар пользователя gorr gorr 13 января 2009 в 13:49

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

Аватар пользователя Antoniy Antoniy 13 января 2009 в 14:27

Большое спасибо!
Закладки есть, но теперь там бывает очень сложно рыться. А половину из представленных в этом посте решений я просто не видел.

Аватар пользователя Antoniy Antoniy 13 января 2009 в 14:30

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

Аватар пользователя WiseMan WiseMan 13 января 2009 в 14:41

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

Аватар пользователя Antoniy Antoniy 13 января 2009 в 15:27

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

У меня в браузере их сотни, разложены довольно-таки строго по папкам/подпапкам/подподпапкам, но все равно порою ощущение бардака присутствует.

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 13 января 2009 в 15:27

AntonTau
Подобная проблема появляется при наличии любого содержимого, когда единиц хранения становится слишком много. Это и музыка и книги. В конечном итоге приходится лепить на всё те же метки, чтобы иметь возможность найти нужный (предмет) по ключевым словам.

Аватар пользователя WiseMan WiseMan 14 января 2009 в 13:35

В смысле это предложение о реализации функционала или этим уже сейчас как-то можно пользоваться? какая-то скрытая от глаз фича?

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 14 января 2009 в 13:43

Химический Али
Теоретически — да, но что делать, если автор не поставил метки вообще или поставил их криво? Сейчас на drupal.ru полный разброс вариантов того, какие метки использовать. Я здесь попытался по максимуму использовать «правильные» теги, но есть же куча других вариантов написания.

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 14 января 2009 в 16:42

А какие теги можно получить из названий топиков вроде «Не могу решить проблему» или «помогите, не работает Друпал»? А если там ещё и ошибки орфографические? ;)

Аватар пользователя Химический Али Химический Али 15 января 2009 в 14:31
"<a href="mailto:ingumsky@drupal.org">ingumsky@drupal.org</a>" wrote:

А какие теги можно получить из названий топиков вроде «Не могу решить проблему» или «помогите, не работает Друпал»? А если там ещё и ошибки орфографические? ;)

Для начала такие топики не нужно в закладки вносить.

Аватар пользователя Roman ShaRP Roman ShaRP 18 июня 2009 в 20:45

Добавил в закладки и даже сохранил на диск.
Много материала, надо разбираться, но не может быть, чтобы такое не пригодилось.
Спасибо!

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 24 июня 2010 в 1:20

Кстати, я хотел бы обратиться ко всем, кто следит за изменениями в этом топике, с просьбой сообщать об ошибках и серьёзных обновлениях (ну, например, со снэпшота до релиза) упоминающихся здесь модулей и об альтернативных решениях. Это может помочь нам всем.

Аватар пользователя Айдар Айдар 21 мая 2012 в 13:18

Спасибо! В закладки.

И подниму полезную тему заодно - от себя бы добавил (и жаль, что решения только под 6):

  1. Conditional Fields зарелизен уже давно
  2. Отображение нескольких видов views на одной странице в виде вкладок tabs
  3. Как сделать формат даты: сегодня, вчера и далее числом
  4. Yandex map
  5. «Джинса» на Drupal или как «заказывать» материалы