Drupal 7 - 如何从模块加载模板文件?

发布于 2024-10-22 05:25:52 字数 521 浏览 5 评论 0原文

我正在尝试在 Drupal 7 中构建自己的模块。

所以我在 Moon_page() 函数中创建了一个名为“moon”的简单模块

function moon_menu() {
  $items = array();
      $items['moon'] = array(
      'title' => '',
      'description' => t('Detalle de un Programa'),
      'page callback' => 'moon_page',
      'access arguments' => array('access content'),
      'type' => MENU_CALLBACK
  );

  return $items;
}

function moon_page(){


$id = 3;

$content = 'aa';

}

,我喜欢从主题文件加载自定义模板“moon.tpl.php”。

这可能吗?

I am trying to build my own module in Drupal 7.

So I have created a simple module called 'moon'

function moon_menu() {
  $items = array();
      $items['moon'] = array(
      'title' => '',
      'description' => t('Detalle de un Programa'),
      'page callback' => 'moon_page',
      'access arguments' => array('access content'),
      'type' => MENU_CALLBACK
  );

  return $items;
}

function moon_page(){


$id = 3;

$content = 'aa';

}

in moon_page() function, I like to load a custom template 'moon.tpl.php' from my theme file.

is this possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

再浓的妆也掩不了殇 2024-10-29 05:25:52
/*
 * Implementation of hook_theme().
 */
function moon_theme($existing, $type, $theme, $path){
  return array(
    'moon' => array(
      'variables' => array('content' => NULL),
      'file' => 'moon', // place you file in 'theme' folder of you module folder
      'path' => drupal_get_path('module', 'moon') .'/theme'
    )
  );
}

function moon_page(){

  // some code to generate $content variable

  return theme('moon', $content); // use $content variable in moon.tpl.php template
}
/*
 * Implementation of hook_theme().
 */
function moon_theme($existing, $type, $theme, $path){
  return array(
    'moon' => array(
      'variables' => array('content' => NULL),
      'file' => 'moon', // place you file in 'theme' folder of you module folder
      'path' => drupal_get_path('module', 'moon') .'/theme'
    )
  );
}

function moon_page(){

  // some code to generate $content variable

  return theme('moon', $content); // use $content variable in moon.tpl.php template
}
简单爱 2024-10-29 05:25:52

对于您自己的东西(不覆盖另一个模块的模板)?

当然,您只需要:

$args 是一个数组,其中包含由 hook_theme() 实现指定的模板。

For your own stuff (not overriding a template from another module)?

Sure, you only need to:

  • Register your template with hook_theme()

  • Call theme('moon', $args)

$args is an array that contains the arguments to the template as specified by your hook_theme() implementation.

紫南 2024-10-29 05:25:52

对于 Drupal 7,它对我不起作用。我替换了 hook_theme 中的行

'file' => 'moon', by 'template' => 'moon' 

,现在它对我有用。

For Drupal 7, it did not worked for me. I replaced line in hook_theme

'file' => 'moon', by 'template' => 'moon' 

and now it is working for me.

陈年往事 2024-10-29 05:25:52

在 drupal 7 中,我在使用时遇到以下错误:

return theme('moon', $content);

导致“致命错误:drupal_install\includes\theme.inc 在线不支持的操作数类型” 1071"

使用以下方法修复了此问题:

theme('moon', array('content' => $content));

In drupal 7 I was getting the following error when using :

return theme('moon', $content);

Was resulting in "Fatal error: Unsupported operand types in drupal_install\includes\theme.inc on line 1071"

This was fixed using :

theme('moon', array('content' => $content));

泛滥成性 2024-10-29 05:25:52

您可以使用 Moon_menu 和 hook_theme

<?php

/**
 * Implementation of hook_menu().
 */
function os_menu() {
  $items['vars'] = array(
    'title' => 'desc information',
    'page callback' => '_moon_page',
    'access callback' => TRUE,
    'type' => MENU_NORMAL_ITEM,
  );
  return $items;
}

function _moon_page() {    
  $fields = [];
  $fields['vars'] = 'var';

  return theme('os', compact('fields'));
}

/**
 * Implementation of hook_theme().
 */
function os_theme() {
  $module_path = drupal_get_path('module', 'os');

  return array(
    'os' => array(
      'template' => 'os',
      'arguments' => 'fields',
      'path' => $module_path . '/templates',
    ),
  );
}

You may use moon_menu, with hook_theme

<?php

/**
 * Implementation of hook_menu().
 */
function os_menu() {
  $items['vars'] = array(
    'title' => 'desc information',
    'page callback' => '_moon_page',
    'access callback' => TRUE,
    'type' => MENU_NORMAL_ITEM,
  );
  return $items;
}

function _moon_page() {    
  $fields = [];
  $fields['vars'] = 'var';

  return theme('os', compact('fields'));
}

/**
 * Implementation of hook_theme().
 */
function os_theme() {
  $module_path = drupal_get_path('module', 'os');

  return array(
    'os' => array(
      'template' => 'os',
      'arguments' => 'fields',
      'path' => $module_path . '/templates',
    ),
  );
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文