О проекте

Данный сайт попытка повысить коммуникацию самых активных разработчиков на CMS Drupal - блоггеров. Если Вы ведете свой блог о Друпале, значит Вы готовы делиться вашими знаниями, помочь другим. Не всегда ваши знания доходят до потребителя. Задача данного сайта агрегировать знания различных блогов в единую ленту и привести на Ваши блоги активных пользователей.

Активность пользователей на Вашем сайте будет дополнительным стимулом к дальнейшей работе.

Удачи во всех Ваших начинаниях!

Программирование

EntityFieldQuery, node access и count

-7 votes
+
-

Допустим, есть вот такой код. Мы хотим получить количество нод заданного типа с заданными тегами, но считать только ноды, к которым есть доступ у текущего юзера (см. addTag).
$query = new EntityFieldQuery();

Микросовет банальный, про Views

-11 votes
+
-

Держите свои вьюхи в коде. Хук hook_views_default_views() — ваш лучший друг при работе с Views. Как только представление обрело нужные очертания — в код его, в код. Это легко, приятно и помогает от головных болей.

Почитать про Drupal 8

-11 votes
+
-

Drupal 8 in 2 Steps — примеры базовых вещей (создать страницу, переменную, темизировать что-то).
Changes in the Form API in Drupal 8 — об изменениях в Form API.
Drupal 8: Ajax in Forms — небольшой пример с аяксификацией формы.

Немного динамического раутинга в Drupal 7

-15 votes
+
-

В Друпале, как известно, адреса основных сущностей, таких как пользователи и материалы, имеют вид user/123 и node/123 соответственно (где 123 — это id сущности). Если мы хотим, например, сделать страницу со всеми фотографиями для каждого пользователя, то скорее всего мы сделаем ее с адресом вроде user/123/photos. Ну потому что надо же откуда-то id пользователя взять и загрузить все его фотографии. И этот адрес будет хорош всем кроме одного — пользователю непонятно, почему он, Василий Петрович Пупкин, называется «123».

Entity API и пустое значение поля

-13 votes
+
-

Наверное, самая раздражающая вещь в Entity API изложена вот в этом комменте.
The problem is that you must set an empty value that is compatible with the data type of your field. If you do not, you will get an exception raised. Passing NULL or array() when a string is expected will therefore raise an error.
Another thing to keep in mind is that the data you pass will also depend on whether your field is a single value, a multi value field, or a field with multiple properties.

CasperJS и Drupal

-11 votes
+
-

На днях разбирался в прогрессивной (кто-то даже говорит — хипстерской) библиотеке front-end-тестирования CasperJS. В результате родилась заметка о предмете. Заметка получилась немножко длинной, не обессудьте: как говорится, я написал длинное письмо, потому что не было времени написать короткое.
Если тезисно, в заметке рассматриваются следующие вопросы:

User login block на продвинутых костылях

-13 votes
+
-

Как известно, всеми любимый блок логина в Друпале не появляется на страницах регистрации и восстановления пароля (user/register и user/password соотвественно). Объясняется это бессмысленное, на мой взгляд, ограничение обычным usability. В коде user.module, в котором оно реализовано, так и написано:
// For usability's sake, avoid showing two login forms on one page.

Особенность ajax_command_replace

-13 votes
+
-

Оказывается, у функции ajax_command_replace() есть интересная особенность, которая, скажем так, не совсем документирована. Суть в том, что JS, отвечающий за замену старого html — новым, от нового кода ждет того, что это будет один тег верхнего уровня, а не два, три или больше. Вложенных тегов может быть до фига, но верхнего уровня — только один. В противном случае новый код будет автоматически обернут в дополнительный div.

Ссылка more из Views в заголовке блока

-17 votes
+
-

Как известно, модуль Views позволяет выводить в генерируемых им блоках ссылку «еще». Вот так можно по-быстрому взять эту ссылку из содержимого блока и поместить в заголовок блока:
/**
 *
 * hook_block_view_alter() implementation
 *
 * @param type $data
 * @param type $block
 */

Про CKE Fake Objects

-15 votes
+
-

А что если нам нужно выводить на страницу своеобразный токен, а в самом редакторе CKE при редактировании заменять его картинкой? Зачем? Ну, например, пишет пользователь сайта статью, и хочет вставить в нее картинку. Но не простую картинку, которую можно просто загрузить при редактировании и вставить insert-ом или one click upload-ом. А такую картинку, чтобы она была материалом в пользовательском фотоальбоме и вставлялась прямо оттуда.