Тут поэкспериментировал, и нашел интересный способ вставки PHP сниппетов (может правда изобрел велосипед :).
Суть в том, что бы сниппет хранить не в контенте сайта (блоках, страницах и т.д), а во внешних файлах и вставлять в контент
посредством php конструкции include.
Преимущества:
1. Код сниппета можно менять и отлаживать не изменяя контента.
2. При некорректном (ошибочном) коде, не надо заморачиваться с отключением блока.
3. Все сниппеты можно держать в одном месте.
Недостатки:
Нужен доступ к файловой системе сайта на создание и изменение фалов.
Желательно также иметь доступ или к конфигу апача или (если это хостер) к управлению доступом к дирректориям.
Реализация:
создаем дирректорию: например sites/all/snippets
закрываем к ней доступ для сторонних хостов
для апача в httpd.conf прописываем (подставляем естественно свой путь до директории)
Order Allow,Deny
Allow from localhost
</Directory>
Создаем файл(ы) со сниппетом в нашей созданной дирректории
например:
<?php
// Сниппет показывающий количество созданных материалов определенного типа, за определенный день
$t='blog'; //тип материала
$days=0; // за котороый день назад 0 -за сегодня,1 - за вчера и т.д.
$start_stamp = mktime(0, 0, 0, date("m"), date("d")-$days, date("Y"));
$end_stamp = mktime(23, 59, 59, date("m"), date("d")-$days, date("Y"));
//print 'start_date='.date("d-M-Y H:s",$start_stamp).'<br>';
//print 'end_date='.date("d-M-Y H:s",$end_stamp).'<br>';
$r=db_query("SELECT DISTINCT COUNT(nid) as cnt
FROM {node} WHERE type='%s' AND created BETWEEN %d and %d",$t,$start_stamp,$end_stamp);
$r=db_rewrite_sql($r);
$count=db_result($r);
print t("new $t's ").$count;
?>
и сохраняем его под любым понравившимся именем (наверное желательно что бы имя файла несло какую либо смыcловую нагрузку)
В нужный нам участок контента (блок, страница ... ) вставляем код
<?php
include 'sites/all/snippets/new_blogs.php';
?>
Можно попробовать сниппеты с псевдопараметрами
т.е. например определить ряд переменных перед include
а в самом сниппете использовать их значения, тогда один и тот же файл сниппета можно использовать в разных блоках изменяя
значения этих переменных.
Материал с сайта www.hotel-prog.ru
Комментарии
Я так у себя организовал работу с сообщениями для пользователя - нужно было на нескольких страницах выводить одно и то же сообщение при отсутствии записей во view. Сообщение по ходу разработки сайта пару раз менялось и, скорее всего, еще не раз изменится (описание того, у каких именно пользователей нет доступа к этим материалам и что нужно сделать, чтобы его получить). Каждый раз менять сообщение во всех вьюхах - не по джидайски. Сделал вывод сообщения при помощи функции, ее реализовал в отдельном файле, который и подключил везде при помощи include.
норм.