Здравствуйте! Учусь писать модули.
<?php
function xray_menu() {
$items['simple_page'] = array(
'title' => 'Simple page',
'page callback' => 'xray_simple_page_content',
'access callback' => TRUE,
'menu_name' => 'main-menu',
'file' => 'xray.pages.inc',
'options' => array('attributes' => array('class' => array('test-class'))),
);
return $items;
}
?>
<?php
function xray_simple_page_content() {
$nodes = db_query("SELECT * FROM {suroveckij_faq} ");
$nodes = $nodes->fetchAll();
foreach($nodes as $k) {
echo $k->question;
echo '<p />';
echo $k->answer;
echo '<hr />';
}
return 'Конец';
}
?>
Почему содержимое echo выводится в самом начале страннице (отдельно от дизайна) а содержимое return где положено? и как выводить с помощью hook_menu php-циклы на созданную им страницу.
Комментарии
Потому что echo - Вывод на экран, а return - возврат в вызывающую функцию.
Что такое php-циклы и зачем их выводить на страницу ? Если Вас инетересует как вывести что либо перебором в цикле на страницу, то надо различать build и Theme в drupal, принято в в функуиях которые вызываются из _menu return build, а он автомтически выводится через theme сам. Рекомендую почитать https://api.drupal.org/api/drupal , а для быстрого въезда на примерах https://www.drupal.org/project/examples
Благодарю! А можно подробнее про "_menu return build"? не могу найти информацию.
Можно, очень просто и подробно, см. modules/node/node/module -> _menu -> 'node' -> node_page_default()