【问题标题】:Adding additional content/markup to a drupal render array向 drupal 渲染数组添加额外的内容/标记
【发布时间】:2013-02-12 16:04:44
【问题描述】:

这是我在这里提出的第一个问题——尽管我多年来一直使用它作为参考——所以,如果这是微不足道的/已经回答的,请原谅我,但我无法找到解决方案。

我有一个渲染数组被返回到块视图数组的“内容”属性。我现在只是返回一张桌子。

<?php
$data = array(
'#markup' => theme('table', array('header' => $header, 'rows' => $rows)),
);

return $data;
?>

我想做的是在开头添加额外的标记。我尝试添加“#prefix”属性,但结果不如预期;我最终得到了块外的 HTML。其他任何我认为可行的方法似乎都会导致 PHP 错误或什么都不做。

【问题讨论】:

    标签: php drupal-7


    【解决方案1】:

    当使用带有#prefix 的HTML 标签时,它们应该用#suffix 结束。 记得关闭#prefix 中的内容吗?

    像这样:

    $data = array(
        '#type' => 'markup',
        '#prefix' => '<div>',
        '#markup' => theme('table', array('header' => $header, 'rows' => $rows)),
        '#suffix' => '</div>',
    );
    

    编辑

    要将输出控制为 HTML 而不是渲染数组,可以使用 hook_block_view() 钩子为 $block['content'] 提供纯 HTML 而不是渲染数组。 According to the documentation $block['content'] 可以处理这两种类型的输入。

    function modulename_block_view($delta='') {
      $block = array();
    
      switch($delta) {
        case 'block_name' :
          $block['content'] = '<div>Content before</div>';
          $block['content'] .= theme('table', array('header' => $header, 'rows' => $rows));
          $block['content'] .= '<div>Content after</div>';
        break;
      }
    
      return $block;
    }
    

    如果你不想使用块视图钩子,我猜你可以用这种方式渲染你的渲染数组:

    $render_array = array(
        '#type' => 'markup',
        '#markup' => theme('table', array('header' => $header, 'rows' => $rows)),
    );
    
    $before = '<div>Content before</div>';
    $after = '<div>Content after</div>';
    $data = $before.render($render_array).$after;
    return $data;
    

    请参阅render() 以获取参考。 还记得像this answer 中所述清除缓存。

    【讨论】:

    • 这并不能真正回答我的问题。我明白你在说什么,但我试图将前缀用于不同的目的;目的是我需要帮助:除了主题渲染表之外,向块中添加更多 html。不过,我确实很欣赏这种努力。我想做的是,比如说,在块中的表格之前或之后添加一些文本。
    • 啊,我明白了。 - 我编辑了我的答案以反映您的改进。
    猜你喜欢
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多