如何从内容数组属性输出html?

时间:2016-10-03 20:47:50

标签: php html drupal drupal-7

我对主题很新,我只是继承了这段代码。我需要控制打印#output的位置和方式,但它始终显示在页面顶部,HTML标记上方。我查看了可渲染数组API,但我找不到任何特定于我的问题的内容。

在mytheme.module中:

function mytheme_output_block() {
  $content = array(
    '#theme' => 'my_theme',
    '#output' => function_that_returns_JSON();
    ...

function mytheme_hook_theme() {
  return array(
    'my_theme' => array(
      'vars' => array(
      'output' => '',
    ...

在my_theme.tpl.php中,我试过了:

<?php print $output; ?>

但它被忽略了。如何控制#output以便我可以设置样式?

2 个答案:

答案 0 :(得分:0)

不是很确定,但您可能需要直接调用数组元素。类似的东西:

$theme = mytheme_hook_theme();
echo $theme['output'];

希望有所帮助

答案 1 :(得分:0)

你使用哪个Drupal?我假设是D7。

查看hook_theme的文档:https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_theme/7.x

  1. 不是vars - 它variables
  2. 您错过了实施中的template密钥
      

    模板:如果指定,此主题实现是一个模板,这是没有扩展名的模板文件。不要把.tpl.php放在这个文件上;该扩展将由默认呈现引擎(即PHPTemplate)自动添加。如果指定了上面的路径&#39;,则模板也应该在此路径中。

  3. 那么你的钩子应该是什么样的:

    function mytheme_hook_theme() {
      return array(
        'my_theme' => array(
          'variables' => array(
            'output' => '',
          ),
          'template' => 'my-theme',
        ...
    

    请记得事后清除缓存。