Это моя первая попытка создать модуль Drupal: Hello World.
Мне нужно, чтобы он отображался как пользовательский блок, и я обнаружил, что это может быть реализовано с помощью двух хуков Drupal7: hook_block_info () и hook_block_view () внутри моего модуля helloworld. В Drupal 6 был использован устаревший hook_block ().
В реальной форме это работает, но отображает только текст: «Это блок, который является Моим модулем». Мне действительно нужно отобразить вывод моей основной функции: helloworld_output (), переменная t.
<?php
function helloworld_menu(){
$items = array();
//this is the url item
$items['helloworlds'] = array(
'title' => t('Hello world'),
//sets the callback, we call it down
'page callback' => 'helloworld_output',
//without this you get access denied
'access arguments' => array('access content'),
);
return $items;
}
/*
* Display output...this is the callback edited up
*/
function helloworld_output() {
header('Content-type: text/plain; charset=UTF-8');
header('Content-Disposition: inline');
$h = 'hellosworld';
return $h;
}
/*
* We need the following 2 functions: hook_block_info() and _block_view() hooks to create a new block where to display the output. These are 2 news functions in Drupal 7 since hook_block() is deprecated.
*/
function helloworld_block_info() {
$blocks = array();
$blocks['info'] = array(
'info' => t('My Module block')
);
return $blocks;
}
/*delta si used as a identifier in case you create multiple blocks from your module.*/
function helloworld_block_view($delta = ''){
$block = array();
$block['subject'] = "My Module";
$block['content'] = "This is a block which is My Module";
/*$block['content'] = $h;*/
return $block;
}
?>
Все, что мне сейчас нужно, это отобразить содержимое вывода моей основной функции: helloworld_output () внутри блока: helloworld_block_view ().
У вас есть идея, почему $ block ['content'] = $ h не будет работать? Спасибо за помощь.