Drupal 头版标记
Posted
技术标签:
【中文标题】Drupal 头版标记【英文标题】:Drupal Front Page Markup 【发布时间】:2012-04-04 18:48:50 【问题描述】:我正在尝试更改显示在 drupal 网站首页上的文章的标记,以便将它们集成到幻灯片中。 (我不能使用幻灯片模块)。我有一个 page--front.tpl.php 文件,但我需要添加比这里更具体的标记。
您如何只更改首页特定区域的标记?
我相信我需要编写一个预处理钩子,但我不确定如何仅针对首页上的文章节点。这是我想要生成的标记:
<div class="slidewrap" data-autorotate="5000">
<ul class="slidecontrols">
<li><a href="#sliderName" class="next">Next</a></li>
<li><a href="#sliderName" class="prev">Prev</a></li>
</ul>
<ul class="slider" id="sliderName">
<li class="slide">
<h2 class="slidehed">First Slide</h2>
<img src="1.jpg" />
<p>In hac habitasse platea dictumst. Nam pulvinar, odio sed rhoncus suscipit, sem diam ultrices mauris, eu consequat purus metus eu velit. Proin metus odio, aliquam eget molestie nec, gravida ut sapien. Phasellus quis est sed turpis sollicitudin venenatis sed eu odio. Praesent eget neque eu eros interdum malesuada non vel leo. Sed fringilla porta ligula egestas tincidunt. Nullam risus magna, ornare vitae varius eget, scelerisque a libero.</p>
</li>
<li class="slide">
<h2 class="slidehed"><a href="#">Second Slide</a></h2>
<img src="2.jpg" />
<p>In hac habitasse platea dictumst. Nam pulvinar, odio sed rhoncus suscipit, sem diam ultrices mauris, eu consequat purus metus eu velit. Proin metus odio, aliquam eget molestie nec, gravida ut sapien.</p>
</li>
<li class="slide">
<h2 class="slidehed">Third Slide</h2>
<img src="3.jpg" />
<p>Phasellus quis est sed turpis sollicitudin venenatis sed eu odio. Praesent eget neque eu eros interdum malesuada non vel leo. Sed fringilla porta ligula egestas tincidunt. Nullam risus magna, ornare vitae varius eget.</p>
</li>
<li class="slide">
<h2 class="slidehed"><a href="#">Fourth Slide</a></h2>
<p>In hac habitasse platea dictumst. Nam pulvinar, odio sed rhoncus suscipit, sem diam ultrices mauris, eu consequat purus metus eu velit. Proin metus odio, aliquam eget molestie nec, gravida ut sapien. Phasellus quis est sed turpis sollicitudin venenatis sed eu odio.</p>
</li>
<li class="slide">
<h2 class="slidehed">Fif' Slide</h2>
<p>In hac habitasse platea dictumst. Nam pulvinar, odio sed rhoncus suscipit, sem diam ultrices mauris, eu consequat purus metus eu velit. Proin metus odio, aliquam eget molestie nec, gravida ut sapien.</p>
</li>
</ul>
</div>
我一直在尝试使用视图模块来做到这一点。但是,当我创建新模板时,会收到以下错误消息: 警告:在 include() 中为 foreach() 提供的参数无效(/d7install/path_to_theme/views-view--featured--block.tpl.php 的第 12 行)。
这是我通过主题信息复制的模板文件:
<?php if (!empty($title)): ?>
<h3><?php print $title; ?></h3>
<?php endif; ?>
<?php foreach ($rows as $id => $row): ?>
<div class="<?php print $classes_array[$id]; ?>">
<?php print $row; ?>
</div>
<?php endforeach; ?>
【问题讨论】:
如何更改首页的标记?我想知道如何编写一个预处理钩子来添加仅针对文章的标记,或者如何在模板文件中执行此操作。我更喜欢前者,因为这似乎是 drupal 中的标准方法,但是任何一个都足够了。 您没有提供足够的信息。你到底想达到什么目的。说你想定位文章是不够的信息。你想对文章做什么?为什么 page--front.tpl.php 对您来说还不够?请更具体地提出您的问题。 我不知道为什么这不够具体,但我已经粗略地添加了我想为我的问题生成的标记。基本上我想要标题,以及显示图像的摘录。图像可以在标记内或显示在它之前。感谢您的帮助!
那是完整的文件吗?它在第 12 行显示错误,但您只粘贴了 8 行? 不,上面有cmets。对于那个很抱歉。这是第 12 行: $row): ?> 【参考方案1】:有一个简单的解决方案。为文章内容类型添加新模板。节点-article.tpl.php。然后添加一个if语句,如果文章在首页,则显示标记A,否则显示标记B。喜欢:
if (drupal_is_front_page())
<article class='front-page'>Article</article>
else
<article class='other-page'>Article</article>
【讨论】:
【参考方案2】:这都可以通过views模块来实现:http://drupal.org/project/views
创建一个块显示并让它只显示在主页上。应该不需要自定义视图模板。
您可以将 .slidercontrols UL 添加到视图的标题中。此外,如果您需要外部 div 上的属性,只需通过 jQuery 使用类似这样的内容添加它。
$('.slidewrap').attr('data-autorotate', 5000);
【讨论】:
我提到我正在使用视图模块并收到错误。我想使用模板来编辑标记。除了主页之外,我还需要更改模板文件中的标记,因此您的回答并没有真正的帮助。我很难相信如此微不足道的事情需要一个模块。他们不是用核心文件做到这一点的方法吗? “核心”是指用于编辑核心功能的模板文件。 我的回答是不需要模板views-view--featured--block.tpl.php 只需删除该模板并像平常一样使用视图。 非常感谢您的帮助。我希望能够编辑模板文件,而不必依赖数据库中的设置。 如果需要模板文件方面的帮助,请粘贴代码,我去看看。 我已经用刚刚从主题信息叠加层复制和粘贴的代码更新了问题。以上是关于Drupal 头版标记的主要内容,如果未能解决你的问题,请参考以下文章