Хотелось бы найти простой способ создавать блоки с PHP-кодом, для дальнейшего их размещения в шаблоне сайта стандартными средствами drupal. Идеальный вариант был бы просто создание блока, где вписывается ссылка на PHP-файл на диске. Идея хранить PHP-код в базе мне не нравится. Подскажите, может существует готовое решение?
Комментарии
А чем стандартный block api не подходит?
Искал такой модуль для Drupal 7, но видимо нет такового.
Создать пустой блок, и в его шаблоне уже вписать PHP-код? Вроде сравнительно неплохое решение.
Куда вписывать код API изначально? В шаблон template.php? Можно какой-нибудь простейший пример такого блока?
А зачем его искать? Заходим http://сайт.ру/admin/modules включаем PHP filter и юзаем его в блоках.
Вообще не вижу проблем с PHP при создании новых блоков. Фсе работает искаробки!
А где искали? Этот модуль и в 7-ку входит. Только зачем он вам, если вы сами сказали что идея хранить PHP-код в базе мне не нравится? При желании можно и в шаблоне всё сделать, а лучше использовать block api. Все примеры тут.
Не думал что это стандартный модуль. Посмотрел. Включение модуля сильно тормозит сайт. Уж не знаю с чем это связанно, но после включения модуля даже в /admin/config зайти не удается - белая страница, после долгой загрузки. Нет, этот модуль все же не тот метод, который стоит использовать.
Спасибо, попробую. Примеры к сожалению там вовсе не простые. В частности пример по блоку аж 12 кб. Хотелось бы чтобы было максимум 12 строк кода.
Думаю PHP фильтр тут не причем, возможно, вы выполняете с его помощью какой то «тяжелый» код, во всяком случае ищите другие причины тормозов.
Какие минимально необходимо задействовать хуки block api, чтобы просто создать блок без всяких настроек и текстов? Необходим простейший блок, который бы можно было вставить в шаблон через "структура"->"блоки".
hook_block_info и hook_block_view
Делаю в template.php так :
<?php
function skin_block_info() {
$blocks = array();
$blocks['test_block'] = array(
'info' => t('New my block'),
);
return $blocks;
}
function
skin_block_view($delta = '') {if ($delta == 'test_block') {
$block = array(
'subject' => t('Test Block'),
'content' => 'Content of test block.<br>Bla, bla, bla.',
);
}
return $block;
}?>
Сбрасываю кеш сайта. В списке блоков все равно мой блок не появляется. Подскажите, что не так.
Первая строчка в описании API http://api.drupal.org/api/drupal/modules--block--block.api.php/function/...
Define all blocks provided by the module.
Спасибо за быстрый ответ. Создание модуля - это опять же лишние телодвижения. Хотелось как проще. С созданием модуля все получилось.
Если Вы собираетесь делать сайты не только с помощью кликов по админке, советую сделать модуль-пустышку с .module и info-файлом с названием вроде mycustom_module, и загружать на сайты по мере возможности. Тогда никаких лишних телодвижений не будет.