Модули

Модуль snippet_block. Ваше мнение?

Доброго времени суток уважаемые!

Хочу представить вашему вниманию модуль snippet_block.

Предисловие:

Когда столкнулся с необходимостью работы над проектом в команде разработчиков мне сразу сказали — старайся не использовать сниппеты в блоках, т.к. они хранятся в БД и через SVN команда работать с ними не сможет. А что, если в блоке требуется вывести некий сниппет в 2–3 строки кода? Писать модуль!
Тогда и возникла идея создания модуля, позволяющего хранить текст сниппетов не в БД, а в файловом варианте.

Описание функционала:

Модуль snippet_block позволяет создавать сущности, в которых устанавливать настройки для блока, такие как путь к сниппет-файлу, его видимость и способ кэширования.
После создания сущности в списке блоков появляется блок, выводящий сниппет из файла.

Немного подробнее:

Параметр State — позволяет включить, выключить и скрыть блок со страницы admin/structure/block. С первыми двумя вариантами, думаю, все понятно, а вот зачем может понадобиться скрывать блок? Если вы используете модуль panels и выводите блоки в нем, то на странице управления блоками у вас лежит куча блоков в статусе Отключен, если проект большой и древний, то в отключенных может лежать очень много блоков. Параметр Hidden позволяет скрывать блок только (!) на странице управления блоками, оставляя его видимым для других модулей.

Параметр Cache — дает возможность настроить способ кэширования блока.

Дополнительные приятности:

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

Заключение:

Возможно, модуль окажется абсолютно бесполезным, но может послужить примером работы с сущностями в Drupal 7.

 
 
28.06.2011 — 14:06

Комментарии (10)

Аватар пользователя brainstorm
28.06.2011 — 14:31
0
 
 

можно хранить функции сниппетов в теме оформления. а в блоках гнать if(function_exists(…

можно совать в шаблоны блока. и все будет можно хранить в VCS

Аватар пользователя Выдрин А.П.
28.06.2011 — 14:35
0
 
 

Правка темы на мой взгляд не позволяет получить должную гибкость.
И еще — модуль писался в первую очередь под командную разработку, а зачастую программисты (правящие код модулей и сниппетов) и дизайнеры (правящие темы) это разные отделы, еще и возможно удаленные друг от друга на расстоянии разных городов.

Аватар пользователя Выдрин А.П.
28.06.2011 — 15:10
0
 
 

Готово!

Аватар пользователя olk
28.06.2011 — 15:04
2
 
 

Когда то изобретал подобный «костыль» :)
Вот выдержка из описания

Давно озадачился мыслью, как хранить и управлять своими PHP-сниппетами. Хранить их в
базе не совсем кошерно, можно хранить в файлах и вызывать через Include, то же есть
определенные недостатки, поэтому собрался и написал не большой модуль WrapperBlocks.
Суть модуля в том, что он предоставляет Друпалу стандартные блоки, содержимое которых,
формируется PHP-сниппетом оформленным определенным образом.
Т.е. вы оформляете сниппет по определенному шаблону, сохраняете шаблон в файле с
определенным именем, бросаете этот файл в поддиректорию block-extra в директории модуля
и далее стандартными методами друпала размещаете этот блок в нужном регионе.
Я не знаю, возможно, такой модуль уже есть (я честно говоря не искал), но может, будет
кому полезно.

Вот ссылка на станицу с модулем
Новый модуль WrapperBlocks

Обратите внимание на дату публикации — 15.01.2009 :)

Аватар пользователя Выдрин А.П.
28.06.2011 — 15:12
0
 
 

Очень интересный подход :) я даже не подумал о том, что можно просто ориентироваться на наличие файлов в определенной папке.

Аватар пользователя Nikit
28.06.2011 — 15:29
0
 
 

Возможно нужно в определенных обстоятельствах, но по вашему комменту: «зачастую программисты (правящие код модулей и сниппетов) и дизайнеры (правящие темы) это разные отделы», избавиться от этого очень просто: запретить дизайнерам писать в блоки php-коды :)

Аватар пользователя Выдрин А.П.
28.06.2011 — 15:38
0
 
 

Это был ответ на коммент о том, что можно писать сниппеты в шаблонах. Вы его немного вырвали из контекста ;)

Аватар пользователя Nikit
28.06.2011 — 16:12
0
 
 

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

Аватар пользователя Выдрин А.П.
28.06.2011 — 16:35
0
 
 

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

Аватар пользователя Nikit
29.06.2011 — 04:49
0
 
 

Они это сделали для тех, кто совмещает девелопера и дизера/версталы :)