【问题标题】:Modify how a node in drupal will look when viewed修改 drupal 中的节点在查看时的外观
【发布时间】:2012-06-22 15:49:37
【问题描述】:

我在名为“协议”的自定义内容类型的正文字段中存储了一些文本。当您查看节点时,存储在 body 字段中的内容并不完全是我希望看到的内容。要么是完整的,要么是预告片。例如我可能会存储这样的东西:

"[usage]可重复使用 DNA 模板微阵列进行无细胞合成的蛋白质排列。[/usage] [安全注意事项]测试安全注意事项[/安全注意事项]"

但是当你查看它时我想要显示的是这样的:

“可重复使用 DNA 模板微阵列进行无细胞合成的蛋白质排列。 测试安全注意事项"

我教过这是你可以使用 hook_view 的,所以我在我的模块中尝试了这个功能:

function molmethtag_node_view($node, $view_mode, $langcode) {
  if ($node->type == 'protocol2' && $view_mode=='full') {

    $body = $node->body;
    $prot_array = _molmethtag_extract_data($body['und'][0]['value']);
    $protocol = '';
    foreach($prot_array as $tag => $prot_row) {
      $protocol .= "<div id='molmethtag_".$tag."'>".$prot_row."</div>";
    }                                                                                                                  
    $body['und'][0]['value'] = $protocol;

  }
}

但这并没有如我所愿。我希望protocol中保存的文本在查看时显示为正文,但显示的是原始文本。

有人知道我做错了什么吗? hook_view 不用于此吗?我应该改用/做什么?

【问题讨论】:

    标签: drupal module


    【解决方案1】:

    一开始有点混乱,但您需要更改的显示值在 $node-&gt;content 数组中:

    $node->content['body'] = array(
      '#markup' => $protocol
    );
    

    hook_node_view() 是一个很好的地方,但为了完整起见,如果你愿意,你也可以在 hook_preprocess_node() 中做类似的事情。

    【讨论】:

      猜你喜欢
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2019-09-20
      • 2011-01-21
      • 1970-01-01
      • 2011-06-11
      相关资源
      最近更新 更多