我已经实现了自己的主题功能(theme_my_theme_function
)并实现了hook_theme
来告诉Drupal我的功能。一切正常,我在页面上得到了我想要的输出,除了......
当我查看HTML源代码时,我的函数输出的所有HTML代码都在一条长线中!如何让我的主题函数输出格式简洁且易于阅读的HTML格式?
答案 0 :(得分:1)
如果要格式化HTML,则在构建HTML字符串时必须自己完成。更简单的方法是使用模板文件而不是手动构建HTML字符串(请记住,PHP本质上是一种HTML模板语言)。这里有一个非常好的说明:http://drupal.org/node/165706
核心节点模块有一个很好的例子:
<强> node.module:强>
<?php
/**
* Implementation of hook_theme()
*/
function node_theme() {
return array(
'node' => array(
'arguments' => array('node' => NULL, 'teaser' => FALSE, 'page' => FALSE),
'template' => 'node',
)
);
}
<强> node.tpl.php:强>
<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?> clear-block">
<?php print $picture ?>
<?php if (!$page): ?>
<h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>
<div class="meta">
<?php if ($submitted): ?>
<span class="submitted"><?php print $submitted ?></span>
<?php endif; ?>
<?php if ($terms): ?>
<div class="terms terms-inline"><?php print $terms ?></div>
<?php endif;?>
</div>
<div class="content">
<?php print $content ?>
</div>
<?php print $links; ?>
</div>
可能还有一种方法可以将HTMLTidy集成到Drupal中,以便在输出之前“美化”标记,但我自己从未这样做过。
最终,我会高度建议不要担心HTML输出的格式。相反,使用Firebug for Firefox或Inspector for Chrome / Safari。它们都有一个“Inspect Element”工具,可以让你在一个漂亮的可浏览,可编辑的树中查看页面的标记。它对于Web开发非常宝贵。
*的 修改 * 强>
theme_item_list
对HTML输出进行最小格式化。以下是theme_item_list
:
<div class="item-list"><ul><li class="first">1</li>
<li>2</li>
<li>3</li>
<li class="last">4</li>
</ul></div>
在theme_item_list
的代码中,您可以看到它只是在&lt; li&gt;之后添加了一个“\ n”:
$output .= '<li' . drupal_attributes($attributes) . '>' . $data . "</li>\n";