Drupal的6:如何让一个模板文件从一个自定义模块数据(drupal 6: how to get

2019-09-23 06:25发布

即时通讯使用自定义模块在example.com/frontpage创建我的主页的内容。

在模块中我运行查询得到我需要的数据,在阵列中。 当我回到主题(“页”,$ my_array)我得到了“网页内网页”,即默认的Drupal标志和站点名称将显示在主内容区域中的第二次。

什么是去了解这一点,创建一个特定的文件tpl.php最好的方式,其内容应该是...?

我意识到它是一个非常普遍的问题,但在2个小时的努力的事情了,阅读教程,香港专业教育学院变得不是很远都...

谢谢

Answer 1:

如果我正确理解你的问题,你所要做的就是返回的内容,而无需通过运行它theme_pagetheme_page需要你的内容并把它封装在网站模板,所以手动调用它在你的情况下被复制的模板。

另一种解决方案是让你的网页的回调函数没有返回值,而不是打印的输出theme_page 。 如果回调函数返回没有文本,该网站的模板不会自动包含。

<?php

function mymodule_menu() {
  $items = array();

  $items['option1'] = array(
    'title' => 'Front page option #1',
    'access arguments' => array('access content'),
    'page callback' => 'mymodule_option1',
    'type' => MENU_CALLBACK,
  );

  $items['option2'] = array(
    'title' => 'Front page option #2',
    'access arguments' => array('access content'),
    'page callback' => 'mymodule_option2',
    'type' => MENU_CALLBACK,
  );

  return $items;
}

function mymodule_option1() {
  // build HTML content here
  return $content;
}

function mymodule_option2() {
  // build HTML content here
  print theme('page', $content);
  return null;
}


Answer 2:

你可能是比一个自定义模块“若干意见”,为unles网页查询是很奇怪的,观点应该比那种事情的自定义模块更好。

如果你有自己的主题(或愿意创建一个),你还可以使用网页front.tpl.php(如解释在这里 )



Answer 3:

是什么在你的模板文件? 是否有可能正在在你的主题的page.tpl.php中呈现的那些元素两次,因为他们被包含了两次,即一次又一次$content变量(看起来被你的模块产生)?

许多模板文件具有以下结构:

print $head;
print $logo, $search, $navbar, $messages;
print $content;
print $footer, $closure;

如果theme('page', $my_array)负责创建在$content变量, $content已经包括$logo和朋友,他们会被渲染两次。

第一步我想借此在这种情况下是实现hook_preprocess_page()在我的主题的template.php文件中,并在一些投掷dsm()调用(如果你有安装devel模块-你应该),或print_r()的,看看到底是什么做它的页面模板。
HTH



文章来源: drupal 6: how to get data from a custom module in to a template file
标签: drupal