[Решено] Создание блока с PHP-кодом

Аватар пользователя acoder acoder 22 сентября 2011 в 8:52

Хотелось бы найти простой способ создавать блоки с PHP-кодом, для дальнейшего их размещения в шаблоне сайта стандартными средствами drupal. Идеальный вариант был бы просто создание блока, где вписывается ссылка на PHP-файл на диске. Идея хранить PHP-код в базе мне не нравится. Подскажите, может существует готовое решение?

Комментарии

Аватар пользователя acoder acoder 22 сентября 2011 в 9:20

"ХулиGUN" wrote:
Для 6 друплы из коробки был модуль php filter, просто делаете формат ввода php и профит

Искал такой модуль для Drupal 7, но видимо нет такового.

"ХулиGUN" wrote:
Как вариант можно темизировать шаблон нужного блока

Создать пустой блок, и в его шаблоне уже вписать PHP-код? Вроде сравнительно неплохое решение. Smile

"Ch" wrote:
А чем стандартный block api не подходит?

Куда вписывать код API изначально? В шаблон template.php? Можно какой-нибудь простейший пример такого блока?

Аватар пользователя KTATTOO KTATTOO 22 сентября 2011 в 9:31

acoder wrote:
"ХулиGUN" wrote:
Для 6 друплы из коробки был модуль php filter, просто делаете формат ввода php и профит

Искал такой модуль для Drupal 7, но видимо нет такового.

А зачем его искать? Заходим http://сайт.ру/admin/modules включаем PHP filter и юзаем его в блоках.

Вообще не вижу проблем с PHP при создании новых блоков. Фсе работает искаробки!

Аватар пользователя Ch Ch 22 сентября 2011 в 9:38

"acoder" wrote:
"ХулиGUN" написал(а):
Для 6 друплы из коробки был модуль php filter, просто делаете формат ввода php и профит
Искал такой модуль для Drupal 7, но видимо нет такового.

А где искали? Этот модуль и в 7-ку входит. Только зачем он вам, если вы сами сказали что идея хранить PHP-код в базе мне не нравится?

"acoder" wrote:
Куда вписывать код API изначально? В шаблон template.php? Можно какой-нибудь простейший пример такого блока?
При желании можно и в шаблоне всё сделать, а лучше использовать block api. Все примеры тут.

Аватар пользователя acoder acoder 22 сентября 2011 в 11:08

"Ch" wrote:
А где искали? Этот модуль и в 7-ку входит. Только зачем он вам, если вы сами сказали что идея хранить PHP-код в базе мне не нравится?

Не думал что это стандартный модуль. Посмотрел. Включение модуля сильно тормозит сайт. Уж не знаю с чем это связанно, но после включения модуля даже в /admin/config зайти не удается - белая страница, после долгой загрузки. Нет, этот модуль все же не тот метод, который стоит использовать.

"Ch" wrote:
При желании можно и в шаблоне всё сделать, а лучше использовать block api. Все примеры тут.

Спасибо, попробую. Примеры к сожалению там вовсе не простые. В частности пример по блоку аж 12 кб. Хотелось бы чтобы было максимум 12 строк кода. Smile

Аватар пользователя Ch Ch 22 сентября 2011 в 11:14

"acoder" wrote:
Включение модуля сильно тормозит сайт.

Думаю PHP фильтр тут не причем, возможно, вы выполняете с его помощью какой то «тяжелый» код, во всяком случае ищите другие причины тормозов.

Аватар пользователя acoder acoder 22 сентября 2011 в 11:31

Какие минимально необходимо задействовать хуки block api, чтобы просто создать блок без всяких настроек и текстов? Необходим простейший блок, который бы можно было вставить в шаблон через "структура"->"блоки".

Аватар пользователя acoder acoder 23 сентября 2011 в 9:00

Делаю в 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;
}
?>

Сбрасываю кеш сайта. В списке блоков все равно мой блок не появляется. Подскажите, что не так.

Аватар пользователя acoder acoder 23 сентября 2011 в 9:00

Спасибо за быстрый ответ. Создание модуля - это опять же лишние телодвижения. Smile Хотелось как проще. С созданием модуля все получилось.

Аватар пользователя annya annya 23 сентября 2011 в 9:45

"acoder" wrote:
Создание модуля - это опять же лишние телодвижения.

Если Вы собираетесь делать сайты не только с помощью кликов по админке, советую сделать модуль-пустышку с .module и info-файлом с названием вроде mycustom_module, и загружать на сайты по мере возможности. Тогда никаких лишних телодвижений не будет.