За то время, пока я знакомлюсь с Друпалом и его русскоязычным коммьюнити, я успел уже принять участие в нескольких дискуссиях, которые оказались для меня, как начинающего друпалера, весьма полезны. Вот только беда, что и эти дискуссии и другие, которые я только читал, канули в Лету моего трекера, и я уже забыл, где их искать. В общем, я принял волевое решение собирать в рамках этого поста в моём блоге на drupal.ru кое-что из полезных рецептов, которые заинтересовали меня лично. Авось что-то из них пригодится и другим людям?
Если вы совсем новичок в Друпал и хотите начать работать с этой замечательной CMS, первым делом я бы рекомендовал вам вот это руководство. Ниже представлены решения проблем, нередко возникающих у начинающих администраторов сайтов на Друпал.
Косым шрифтом отмечены последние дополнения.
Модули:
1. Модуль AJAX-комментариев by neochief
Модуль, который позволяет пользователям добавлять комментарии без обновления страницы. Должно быть жутко удобная штука, но и её я ещё не пробовал.
2. Заголовки комментариев
Модуль comment_subject для изменения автозаполнения заголовков, которое часто раздражает пользователей.
3. Модуль «Я пойду!» by nleo
Модуль, добавляющий пользователя в список участников того или иного события. Я пока не тестировал, поскольку ещё не успел добраться до создания нужного типа контента.
4. Модуль «Conditional Fields»
Пока что модуль в стадии снэпшота. Принцип работы в чём-то аналогичен hierarchical select, только без таксономии. Но на самом деле модули совершенно разные:
Первый из них позволяет разместить в форме добавления и редактирования нодов группу полей, внутри которой можно указать управляющие поля и зависящие от них в том смысле, что при выборе значения в управляющем поле зависимые поля либо доступны к заполнению либо недоступны или даже скрыты в зависимости от настроек модуля.
Совершенно по-другому работает второй модуль - он посредством аякса делает возможным последовательный выбор значений элементов иерархических структур, таких как словарь таксономии или отдельное меню например. То есть при выборе разных значений в ведущем селекте меняется набор значений в ведомом селекте и его потомках, а не активируется другой селект с заранее известными опциями, как в случае с первым модулем.
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 Ах да, обещаю, что буду пополнять этот список... хотя бы иногда -)
Комментарии
для этого существуют закладки на сайте
Хм-м-м... А я то жалел, что такой функции нет. Гм... -\
Ладно, я думаю, что в таком виде людям будет полезно тоже, потому что для каждой ссылки есть небольшой тизер с рассказом о том, что это за «рецепт».
Спасибо. иногда бывает трудно найти то, что нужно
Добавил в закладки. Спасибо. Есть тут кое-что, что скоро мне потребуется.
спасиб, это лучше чем закладки
дааа, нашел свои задачи даже..
тоже думал как-нибудь собрать все в пачку, т.к. может быть полезно многим.
особенно по шестерке много вопросов до сих пор возникает..
Провёл некоторые косметические изменения топика, сделал рубрикацию, исправил кое-какие ошибки + добавил тизеры там, где их не хватало.
Хотелось бы уточнить насчет сравнения conditional fields и hierarchical select. Это совершенно разные модули, насколько я знаю.
Первый из них позволяет разместить в форме добавления и редактирования нодов группу полей, внутри которой можно указать управляющие поля и зависящие от них в том смысле, что при выборе значения в управляющем поле зависимые поля либо доступны к заполнению либо недоступны или даже скрыты в зависимости от настроек модуля.
Совершенно по-другому работает второй модуль - он посредством аякса делает возможным последовательный выбор значений элементов иерархических структур, таких как словарь таксономии или отдельное меню например. То есть при выборе разных значений в ведущем селекте меняется набор значений в ведомом селекте и его потомках, а не активируется другой селект с заранее известными опциями, как в случае с первым модулем.
Предлагаю поправить ваш пост, вставив эти объяснения, может другим понятнее будет разница.
Да, и чуть не забыл, спасибо.
Большое спасибо!
Закладки есть, но теперь там бывает очень сложно рыться. А половину из представленных в этом посте решений я просто не видел.
Интересно, а есть такой модуль для закладок на сайте Drupal, чтобы была возможность сортировать их по категориям, как в браузере по папкам?
AntonTau, у меня тоже уже не первый раз возникает мысль об этом. Как только кол-во закладок начинает расти, то начинаешь остро ощущать необходимость в их упорядочивании.
Да, но еще многое зависит от того, как их упорядочить, или даже так: каким образом сервис принудительно позволяет упорядочить закладки, чтобы бардака потом не было.
У меня в браузере их сотни, разложены довольно-таки строго по папкам/подпапкам/подподпапкам, но все равно порою ощущение бардака присутствует.
gorr
Спасибо за разъяснения. Сейчас внесу соответствующие правки.
AntonTau
Подобная проблема появляется при наличии любого содержимого, когда единиц хранения становится слишком много. Это и музыка и книги. В конечном итоге приходится лепить на всё те же метки, чтобы иметь возможность найти нужный (предмет) по ключевым словам.
А ведь можно брать метки из материалов, на которые проставлены закладки
В смысле это предложение о реализации функционала или этим уже сейчас как-то можно пользоваться? какая-то скрытая от глаз фича?
Химический Али
Теоретически — да, но что делать, если автор не поставил метки вообще или поставил их криво? Сейчас на drupal.ru полный разброс вариантов того, какие метки использовать. Я здесь попытался по максимуму использовать «правильные» теги, но есть же куча других вариантов написания.
Из названия материала.
А какие теги можно получить из названий топиков вроде «Не могу решить проблему» или «помогите, не работает Друпал»? А если там ещё и ошибки орфографические?
Для начала такие топики не нужно в закладки вносить.
Я думаю, реально никто и не вносит — потому что на такие топики нормальные люди не реагируют -)
Добавил два вопроса темизации, в том числе поставил важную ссылку на Theme Guide на Drupal.org.
Спасибо, полезная подборка. В закладки.
Одобрямс. В мемориз.
Отлично, спасибо.
Насколько я разумею, аналогом модуля "Я пойду!" может выступать модуль Petition Node http://drupal.org/project/petition_node.
Тестовая версия модуля на сайте http://петишн.блогжопа.нет
Ага, смешно, а CCK - аналог Webform
Добавил в закладки и даже сохранил на диск.
Много материала, надо разбираться, но не может быть, чтобы такое не пригодилось.
Спасибо!
Сюда бы еще про Галереи! А то ищу, ищу...
Про галереи я пока не искал, но в будущем добавлю.
Добавил два решения по организации галерей. Как раз то, о чём просили.
Спасибо за полезную подборку, добавил в закладки
Чрезвычайно полезно, спасибо.
Спасибо
тока я не нашел где в закладки положить
Второй значёк под статьёй - - вот это и есть "в закладки".
В закладки однозначно!
добавим закладки в закладки!
в закладки, пригодится
Кстати, я хотел бы обратиться ко всем, кто следит за изменениями в этом топике, с просьбой сообщать об ошибках и серьёзных обновлениях (ну, например, со снэпшота до релиза) упоминающихся здесь модулей и об альтернативных решениях. Это может помочь нам всем.
Спасибо! В закладки.
И подниму полезную тему заодно - от себя бы добавил (и жаль, что решения только под 6):