在 Drupal 的自定义模块中输出 html 的正确方法是什么

Whats the correct way of outputting html in a custom module in Drupal

我用 drupal 做过几个项目,我在学习时得到的主要建议是使用视图来输出你的数据,虽然这对某些项目来说很好我发现在设置时间和设置样式控件太有限了。

我想知道这样做有什么问题,或者这样做对吗?

你运行一个查询得到你想要的特定数据。

function custom_block_get_item($nid){
  $result = db_query("SELECT `field_custom_item`  FROM {field_data_field_custom_item} WHERE entity_id = :entity_id", 
  array(
    ':entity_id' => $nid,
  ));
return $result;
}

然后循环创建 html

function custom_block_display_blurb($nid){
$html='<div id="blurb_wrapper"><div id="recent_projects_blurb">';
  $result=custom_block_get_blurb($nid);
    while($row1 = $result->fetchAssoc()){
  $a=check_markup($row1['field_custom_item'],'full_html','','');
  $html.='
  <span class="recent_project_text">'.
  $a.'</span>';
 } 
$html.='</div></div>';
return $html;
}

最后显示出来

function custom_block_block_view($delta=''){
  if (arg(0) == 'node' && is_numeric(arg(1))) $nodeid = arg(1);
    switch($delta) {
     case 'custom_block':
   $block['content'] = custom_block_display_blurb($nodeid);  
  break;
  }
  return $block;
}

这似乎是一种 hacky 的做事方式,正确的 drupal 方式是什么?

也许你的意思是使用 drupal 主题层?这允许使用 .tpl 文件和覆盖。我有一个简单的块模块可以做到这一点 here Source here

Here 是一些关于在模块中使用主题层的文档。

Here 是一些关于主题的官方 Drupal 文档(主要是主题而不是在模块中使用主题层)。