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

Аватар пользователя ingumsky@drupal.org

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

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

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

Модули:
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. Переброс залогиненного пользователя
Два модуля, которые позволяют перемещать только что залогинившегося пользователя на определённую страницу.

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

Модули и темы:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя penexe
penexe 9 лет назад

для этого существуют закладки на сайте

Аватар пользователя ingumsky@drupal.org
ingumsky@drupal.org 9 лет назад

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

Аватар пользователя sergebw
sergebw 9 лет назад

Спасибо. иногда бывает трудно найти то, что нужно :)

Аватар пользователя sitestyler.net
sitestyler.net 9 лет назад

Добавил в закладки. Спасибо. Есть тут кое-что, что скоро мне потребуется.

Аватар пользователя nleo
nleo 9 лет назад

спасиб, это лучше чем закладки

Аватар пользователя tyred
tyred 9 лет назад

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

Аватар пользователя ingumsky@drupal.org
ingumsky@drupal.org 9 лет назад

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

Аватар пользователя gorr
gorr 9 лет назад

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

Аватар пользователя Antoniy
Antoniy 9 лет назад

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

Аватар пользователя Antoniy
Antoniy 9 лет назад

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

Аватар пользователя WiseMan
WiseMan 9 лет назад

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

Аватар пользователя Antoniy
Antoniy 9 лет назад

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

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

Аватар пользователя ingumsky@drupal.org
ingumsky@drupal.org 9 лет назад

gorr
Спасибо за разъяснения. Сейчас внесу соответствующие правки.

Аватар пользователя ingumsky@drupal.org
ingumsky@drupal.org 9 лет назад

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

Аватар пользователя Химический Али
Химический Али 9 лет назад

А ведь можно брать метки из материалов, на которые проставлены закладки :)

Аватар пользователя WiseMan
WiseMan 9 лет назад

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

Аватар пользователя ingumsky@drupal.org
ingumsky@drupal.org 9 лет назад

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

Аватар пользователя ingumsky@drupal.org
ingumsky@drupal.org 9 лет назад

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

Аватар пользователя Химический Али
Химический Али 9 лет назад
ingumsky@drupal.org написал:
А какие теги можно получить из названий топиков вроде «Не могу решить проблему» или «помогите, не работает Друпал»? А если там ещё и ошибки орфографические? ;)

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

Аватар пользователя ingumsky@drupal.org
ingumsky@drupal.org 9 лет назад

Я думаю, реально никто и не вносит — потому что на такие топики нормальные люди не реагируют -)

Аватар пользователя ingumsky@drupal.org
ingumsky@drupal.org 9 лет назад

Добавил два вопроса темизации, в том числе поставил важную ссылку на Theme Guide на Drupal.org.

Аватар пользователя run
run 9 лет назад

Спасибо, полезная подборка. В закладки.

Аватар пользователя Алешка
Алешка 9 лет назад

Одобрямс. В мемориз.

Аватар пользователя Splinter
Splinter 9 лет назад

Отлично, спасибо.

Аватар пользователя Roman ShaRP
Roman ShaRP 9 лет назад

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

Аватар пользователя Antoniy
Antoniy 8 лет назад

Сюда бы еще про Галереи! А то ищу, ищу...

Аватар пользователя ingumsky@drupal.org
ingumsky@drupal.org 8 лет назад

Про галереи я пока не искал, но в будущем добавлю.

Аватар пользователя ingumsky@drupal.org
ingumsky@drupal.org 8 лет назад

Добавил два решения по организации галерей. Как раз то, о чём просили.

Аватар пользователя Strycker
Strycker 8 лет назад

Спасибо за полезную подборку, добавил в закладки

Аватар пользователя Tesmon
Tesmon 8 лет назад

Чрезвычайно полезно, спасибо.

Аватар пользователя dobradmin
dobradmin 8 лет назад

Спасибо
тока я не нашел где в закладки положить

Аватар пользователя Tesmon
Tesmon 8 лет назад

Второй значёк под статьёй - - вот это и есть "в закладки".

Аватар пользователя igrok54
igrok54 8 лет назад

В закладки однозначно!

Аватар пользователя Valeratal
Valeratal 8 лет назад

в закладки, пригодится

Аватар пользователя ingumsky@drupal.org
ingumsky@drupal.org 8 лет назад

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

Аватар пользователя Айдар
Айдар 6 лет назад

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

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

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