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

Drupal 8 in 2 Steps — примеры базовых вещей (создать страницу, переменную, темизировать что-то).
Changes in the Form API in Drupal 8 — об изменениях в Form API.
Drupal 8: Ajax in Forms — небольшой пример с аяксификацией формы.
Responding to Events in Drupal 8 — о событиях в Drupal 8 с шутками и Бэтменом.
Exploring the Cache API in Drupal 8 — про Cache API с простыми примерами.
Install Drush 7 for Drupal 8 without throwing away Drush 6 — памятка как поставить drush 7 рядом с drush 6.

Всё на английском.

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

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

Обычно (для отдельных страниц) в Друпале эта проблема решается с помощью синонимов (path aliases), то есть каждой странице (user/123) ставится в соответствие уникальный адрес (vasya), и страница /user/123 становится доступной по адресу /vasya. А чтобы избежать дубликатов страниц (т.е. одинаковых страниц с разными адресами), делается автоматический редирект с оригинальной страницы на ее синоним: при заходе на страницу user/123 пользователя перенаправляет на страницу /vasya.

Однако в случае когда страница динамическая (все фотографии данного пользователя) — получается, что нужно для каждой страницы вида user/{uid}/photos завести свой синоним. И обновлять его, если обновится синоним для страницы пользователя. И удалять, если пользователь удалится. И добавлять, если пользователь добавится. В общем, мало того, что для каждого пользователя нам придется не один, а два синонима хранить. Так нам еще и CRUD для синонимов поддерживать понадобится. А что если мы хотим еще страницу с блогами пользователя, страницу с его друзьями? Или вообще, мы хотим страницу архива материалов адресом вида user/123/archive/2014/09?

Читать дальше про inbound/outbound_alter на NetSpark.Ru

Погонял немного OpenLucius

Всякие проекты для совместной онлайн-работы я давно люблю и изучаю. Раньше в NetSpark активно работали с OpenAtrium, потом по ряду причин перешли на Basecamp, которым по сей день и пользуемся.

Однако я периодически вижу, как появляется что-то новое коллаборационистское и мимо по-прежнему не прохожу: а ну как сделают что-то, что больше Бейзкэмпа понравится, да еще FOSS если? Сейчас вот попробовал OpenLucius. По факту могу сказать следующее:
 — Это Друпал. То есть можно доделать, улучшить и углубить всё своими руками. Это плюс.
 — Авторы явно вдохновляются удачными интерфейсными решениями Бейзкемпа. Это тоже плюс.

А главный минус — общая недоделанность. На орге в версии стоит слово beta, но чтобы полноценно работать, явно не хватает удобных мелочей. Таких например как аяксификация (которой почти нет) и уменьшение гигантских форм создания чего либо (которые бесили еще в опенатриуме). Таких как возможность создать список задач с клавиатуры, нажимая enter для добавления каждой следующей.

Итого: когда-нибудь может получиться удачный проект, особенно если судить по роадмэпу. Но сейчас желание посмотреть «а что тут еще есть хорошего» исчезает минут через 10 после установки. Продолжаем пользоваться бейзкэмпом.

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

Лондон, январь 2015

В январе пришлось по заданию партии сгонять на недельку в Лондон. Нашлось время походить-посмотреть и немножко пофоткать. Большим фотоаппаратом решил себя не отягощать, а про существование маленького — напрочь забыл. Пришлось обходиться телефоном. К чему он, кстати, был не очень готов: одновременно фоткать все подряд, ходить в интернет и работать навигатором Samsung Galaxy Note 2 был согласен часов 8 без дозаряда. Поэтому некоторые фотокарточки пришлось и вовсе позаимствовать у товарищей.

Подробности осмотра Лондона — далее.

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

Наверное, самая раздражающая вещь в 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.

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

Кстати, в комменте не сказано, но если по страшному стечению обстоятельств сбрасываемое поле помечено как required — это тоже будет неизбежное исключение.

Микросовет — global $user в функциях

Порой при написании модулей под Друпал нам кажется, что вот эта функция ну уж точно будет исполняться лишь для текущего пользователя. И потому не нужно аргументом передавать $uid — обойдемся глобальным объектом $user.

На мой взгляд, в большинстве случаев рано или поздно все равно возникнет нужда вызвать функцию для другого — не текущего — пользователя. И придется либо рефакторить, либо изгаляться с подменой и возвращением global $user.

Январь в Лондоне

Январь в Лондоне

Домой уже скоро!

Выдвинулся в Англию

По заданию партии выдвигаюсь в Лондон. Пробуду неделю, до следующего воскресенья. Кому вдруг чего не успел, вернусь — сделаю.

Фотоаппаратом в этот раз отягощать себя не стал (увы). Посмотрим, на что сгодится телефон — если время будет.

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

До скорого!

Туристическая соцсеть ТурБаза

Уже достаточно давно мы в NetSpark работаем над социальной сетью туристического толка ТурБаза. Сейчас можно, так сказать, поделиться промежуточным результатом.

Сделан сайт на Drupal 7, на заказ. Фич на сайте много, активно используется Solr, Message, OG, Gmap и много чего еще. Кастомного кода тоже немало. Краткий обзор функционала и ссылки на полезные статьи по теме можно найти в нашем портфолио. Если какие вопросы, можно писать в комментарии прямо тут.

С наступающим Новым годом

Дорогие друзья и коллеги!

Поздравляю вас с наступающим Новым годом!

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

Счастья вам во всем!

Ура!