Drupal 7自定义页面和URI

时间:2013-12-09 14:38:38

标签: php drupal drupal-7 hook

我遇到了一个我无法弄清楚的小问题。 我有一个网站,会有一组页面可以自定义(但是有页面模板),只有自定义内容。

例如: http://mypage.com/?q=stuff

我读到了挂钩并制作了file-page-stuff.tpl.php和重复的page.tpl.php,但页面标题是 - 找不到页面,我不是我做得对,因为重复page.tpl.php中

这些页面将包括自定义手写模块和自定义PHP代码,但整体布局将与其他节点相同。

我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

要创建未链接到节点的页面,您必须在自制模块中实现hook_menu

function MODULENAME_menu() {
  return array("stuff" => array( // link (in your case: http://mypage.com/stuff)
  'title' => "stuff", // title of the page
  'page callback' => "themefunction", // logic for the content
  'type' => MENU_CALLBACK // there are more types, read hoo_menu() for further details
  );
}

你可以用你喜欢的任何东西替换 themefunction ,但你必须实现它!

function themefunction() {
  // do some theming output stuff like:
  $items['hello'] = "Hello World!"; // your variable output
  return theme('stuff_theme', array('items' => $items)); // say Drupal to theme that stuff in your default page-template
}

然后你需要在Drupal中注册你的主题,实现hook_theme(也就是你主模块文件中的那个)

function MODULENAME_menu() {
  return array(
    'stuff_theme' => array( // file name of the template WITHOUT .tpl.php
      'variables' => array( 
        'items' => NULL // variables that are assigned to the template
      )
    )
  );
}

最后你需要创建模板* stuff_theme.tpl.php *(在模块文件夹中):

<div><?= $items['hello']; ?></div>

不幸的是,这是创建真正自定义内容页面的唯一方法。对于节点中的小代码注入,您还可以启用 PHP过滤器模块。