Есть в Drupal 7 такая замечательная возможность — упаковать набор CSS и JS в библиотеку, и подключать потом одним разом. Достигается эта радость объявлением библиотеки через hook_library() и подключением — через drupal_add_library().
И есть такой модуль — Yandex.Maps, тоже хороший во всех отношениях. Нет только в нём (по крайней мере, в текущей версии) очевидной возможности скрыть поле карты для той или ноды. Простым способом скрыть карту «в лоб» было бы добавление чекбокса «Показать карту» и вот такой примитивный JavaScript…
Читать дальше на NetSpark.Ru
Друпальчики
Как проверить, прикреплено ли к бандлу поле
Функция проверяет — прикреплено ли поле типа $field_type к бандлу $bundle сущности $entity (все аргументы — строки, не объекты).
function _mymodule_check_bundle_for_field($entity, $bundle, $field_type) {
$instances = field_info_instances($entity);
$fields = array_keys(field_read_fields(array('type' => $field_type)));
foreach ($instances as $instance => $names) {
$field_names = array_intersect(array_keys($names), $fields);
if (!empty($field_names)) {
$bundles[] = $instance;
}
}
return in_array($bundle, $bundles);
}
Как заметили в комментах, более правильно после выхода версии 7.22 вызывать
field_info_instances($entity, $bundle);
Сохраню на память.
Блок Similar Items
В данном кратком руководстве мы создадим на Views обыкновенный блок похожих товаров (или предметов), то есть Similar Items. Блок будем выводить на странице материала (назовем его «товар»), а содержимым блока будут товары из той же категории, что данный. В общем, обычный блок «Смотрите также».
Сделать такой блок достаточно легко, препятствий может быть только два — нетерпение и необычное расположение одного необходимого элемента. Но обо всем по порядку.
13 непопулярных модулей
Давно прошли времена, когда сообщество можно было удивить статьей в стиле «А вот список из шести модулей, которые я ставлю на все-все-все проекты, круто, да?!». Больше так, к счастью, не делают. Не рассказывают читателю в тристачетырнадцатый раз про CCK и Views. Теперь надо рассказывать хотя бы про Bean. Теперь путь к сердцу любителей модулей лежит через интригу. Необычное надо показать. «Ах, вы не знали про такое? Смотрите и не говорите, что не видели!»
А вот статья:
We at Zivtech have been working with Drupal for a long time, some of us for over 10 years, and in that time we’ve gotten to use (and sometimes build) a lot of really cool modules to develop stellar sites for our clients. We have sifted through thousands of modules on Drupal.org, going far beyond the first couple pages of results and venturing deep into the unknown, unheard of, and ultimately under-appreciated modules. We sent out a question to our staff to ask for their favorite obscure modules, and we've compiled this list to share some of these modules that we have found particularly helpful, and to help ensure that they don't fall through the cracks. All of these modules have fewer than 8,000 active installs, and most have under 5,000.
13 непопулярных модулей, которыми вы наверное не пользуетесь, а зря
Встречаются очень даже любопытные образцы, рекомендую ознакомиться.
Микросовет — о простоте
Мудрость, знакомая человечеству как до, так и после одного монаха-францисканца, гласит: не умножай сущности без нужды. В нашем случае это также означает: не делай сложным то, что можно делать проще.
Например, когда имеешь ноду с полями «Вес», «Цена» и «Описание» — нет никакой нужды создавать темплейт, дабы изменить порядок вывода полей. Это делается из админки. Нет нужды создавать темплейт и для того, чтобы уменьшить шрифт, каковым должны быть выведены некоторые поля. Для этого в мире есть CSS.
Да что там темплейт. Ежели алчешь темплейта, коли удобней так тебе — создай. Другие поймут. Но уж точно нет нужды, совсем никакой нужды, подменять вывод ноды в режиме full view — представлением Views. Ни для первой задачи, ни для второй, ни для иных мыслимых манипуляций с тремя текстовыми полями.
Не усложняй без нужды. Ведь те, кто придут после, умножат еще немало сущностей мысленно и устно. И отправят их за тобой.
Drupal, Android и кнопка Share
С того момента как раздобыл себе первый планшет, всегда жутко бесил порядок загрузки с него фотокарточек на домовую страницу. Найди файл в галерее → запомни как он называется и где лежит → зайди к себе на сайт → зайди в добавление картинок в галерею → нажми «загрузить» → снова найди файл в галерее… Караул, в общем. Особенно при том, что все это время в action bar-е галереи раздражительно блестела кнопка Share со всякими фейсбуками и твитторами внутри.
Очевидно же, что в Друпале должно быть точно такое же. Видимо, придется допилить. Но поскольку пилить под один сайт — скучно, надо бы запилить что-то универсальное. А вам, дорогие коллеги и читатели, это интересно?
Кстати, на скриншоте из фотошопа только красные линии. А пункт в меню Share я воткнул по-честному.
Drupal Commerce File и одноразовые ссылки
Для продажи доступа к файлам через Drupal Commerce в целом неплохо подходит модуль Commerce File. Однако, в работе с ним есть несколько нюансов, нуждающихся в напильнике или дополнительной доработке. В данной заметке пойдет речь об одном из таких нюансов.
Дело в том, что Commerce File доступом к купленным материалам управляет на уровне зарегистрированного пользователя. То есть если пользователь авторизован — можно точно определить, купил он данный файл, или нет. А если не авторизован — нельзя. И в то же время, многие пользователи хотели бы скачать купленный файл непосредственно со страницы с сообщением «Спасибо за заказ». Ну, потому что файл куплен и нет смысла ждать каких-то там паролей на почту или заходить на страницу заказа. Но по правилам Drupal Commerce, если пользователь оформлял заказ неавторизованным, то и сообщение, завершающее заказ, он тоже видит неавторизованным.
Есть решение в виде Commerce Immediate Login (sandbox), но подходит оно не всем и не всегда. Гораздо проще, в данном случае, показать (а также прислать) пользователю одноразовую ссылку на файл, так чтоб по ней можно было скачать, не авторизуясь. Этим и займемся.
Микросовет — Как нагадить следующему разработчику
Совсем недавно я писал о том, что модули надо класть в /sites/all/modules, а не в /modules. Несоблюдение этого простого правила способно немножко подпортить жизнь тем, кто будет работать с сайтом после вас.
Но настоящий дегенерат на такой мелкой пакости не остановится. Настоящий дегенерат пойдет дальше и разместит директории контриб-модулей не просто в /modules, а внутри директорий с другими контриб-модулями. Такая простая выходка, да на более-менее насыщенном проекте, гарантирует часы, а то и дни икоты. Всем дегенератам — рекомендую на вооружение.
Микросовет — числовые поля
Когда нужно добавить материалам сайта параметры — цену, габариты, массу — умный разработчик помыслит о грядущем. И сделает поля, по возможности, числами: integer, float или decimal. Потому как может потребоваться сортировать и всяко ранжировать материалы по этим полям.
Не следует также делать поля текстовыми с целью потом взять с заказчика деньги за переделку. Это портит карму и цвет лица.
Микросовет — кладите модули куда положено!
Дорогие друзья.
В Друпале модули положено класть в sites/all/modules. Не просто в modules/, где лежат стандартные модули, нет. Не надо игнорировать правила. Не надо считать себя самыми умными. И поумнее есть, а бэкапы уже делают.
Чтобы, так сказать, на своей шкуре ощутить безмерную пользу от следования этому простому правилу, проведите экперимент:
1. Возьмите сайт и поместите все модули в modules/.
2. Дождитесь, пока выйдет минорное обновление ядра Друпала.
3. Зайдите на сервер по ssh и напишите drush up.
4. Ответьте утвердительно на вопросы drush-а.
5. Наслайждайтесь — восстанавливайте сайт из бэкапа, который вы благоразумно сделали перед обновлением.
И помните, то что вы сдали сайт заказчику — не означает, что с ним больше никто не будет работать. Спасибо.