如何在node.tpl.php上生成条件语句(如果是“7”中的“1”,那么)?Drupal 6.2或如何有效地将其移动到page.tpl.php?
我正在尝试创建一个条件语句,用于在Drupal 6.2的node.tpl.php上遍历节点数组 我想要的是一个语句,它允许以下内容: 如果该项为第1项(共7项),则执行以下操作:; 如果该项为第2项(共7项),则执行以下操作:; 如果该项为第3项(共7项),则执行以下操作:; 如果该项为第4项(共7项),则执行以下操作:; 如果该项为第5项(共7项),则执行以下操作:; 如果该项为第6项(共7项),则执行以下操作:; 如果该项为7项中的第7项,则执行以下操作:; 重复这个顺序 我需要这种类型的拆分来显示一个由大小独特的矩形组成的网格,这些矩形在一系列的7个项目中反复重复。 这是我在html中构建的参考页面,我正试图将其制作成动态主页: Im使用需要加载到阵列中每个项目的不同imagecache预设。因此,最终结果应该创建一个包含7个项目的数组,每个项目具有唯一的imagecache设置。 这就是我需要转换为阵列的内容,以便我可以指定不同的imagecache预设:如何在node.tpl.php上生成条件语句(如果是“7”中的“1”,那么)?Drupal 6.2或如何有效地将其移动到page.tpl.php?,php,drupal-6,conditional,Php,Drupal 6,Conditional,我正在尝试创建一个条件语句,用于在Drupal 6.2的node.tpl.php上遍历节点数组 我想要的是一个语句,它允许以下内容: 如果该项为第1项(共7项),则执行以下操作:; 如果该项为第2项(共7项),则执行以下操作:; 如果该项为第3项(共7项),则执行以下操作:; 如果该项为第4项(共7项),则执行以下操作:; 如果该项为第5项(共7项),则执行以下操作:; 如果该项为第6项(共7项),则执行以下操作:; 如果该项为7项中的第7项,则执行以下操作:; 重复这个顺序 我需要这种类型的拆
<div class="a3 <?php print $node->nid; ?>" id="e"><div class="maphomeimage">
<div class="maphomeoverlay" style="background-image:url(<?php print $url = imagecache_create_path('primary-thumb', $node->field_featured_image[0]['filepath']); ?>);">
标题=>
给定要以7个为一组显示的$things数组:
$j = 1;
for ($i = 0; $i < count($things); $i++) {
if ($i > 0 && $i % 7 == 0)
$j = 1;
$item = $things[$i];
if ($j == 1) {
//1 of 7
} else if ($j == 2) {
//2 of 7
} else if ($j == 3) {
//3 of 7
...
}
有点接近他的答案:
$index = 0;
foreach ($items as $key => $item) {
$index = ($index + 1) % 7;
// print your item here using $index however you want
}
或
**更新**
所以。。。我不太确定这是否适合你,但以下是你需要做的:
<?php
$count = /* TODO: INSERT CODE THAT RETURN THE NUMBER OF NODES HERE */;
for ($i=0; $i<$count; $i++) {
$column = $i % 7; // column will be 0,1,2,3,4,5, or 6 only (see modulus math operator)
$id = /* TODO: INSERT CODE THAT RETURN THE NODE ID HERE */;
$bg_url = /* TODO: INSERT CODE THAT RETURN THE BACKGROUND IMAGE URL HERE */;
$node_url = /* TODO: INSERT CODE THAT RETURN THE NODE IMAGE URL HERE */;
$title = /* TODO: INSERT CODE THAT RETURN THE NODE TITLE HERE */;
?>
<div class="a3 <?php print $id; ?>" id="e-<?php print $id; ?>">
<div class="maphomeimage">
<div class="maphomeoverlay" style="background-image:url(<?php print $bg_url; ?>);">
<p><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></p>
</div>
</div>
</div>
<?php
} // end for $i
?>
基本上,替换介于/*…*/使用所需的代码。在哪里
$i是从0到$count的节点索引
$column是从0到6的列索引。将代码替换为$column=$i%7+1;使值介于1到7之间。
您可以使用$row=楼层$i/7获取该行;
还要注意,此代码不会显示在列中,您需要为每个容器应用不同的CSS类
因为每个HTML元素都应该有自己的ID,所以我修改了HTML并将ID=e替换为ID=e。只需确保$id始终是有效的HTML id值,或者完全删除id属性。或a有什么问题?你试过什么吗?你有一些更具体的代码示例吗?我不明白这是如何进入我的node.tpl.php文件的?我试着把这个放进去,并注释掉引号,但那是不可能的。我只是得到一个空白屏幕。如何将这些代码转换成单独的语句,这样我就不必注释html代码了?或者我遗漏了什么?当然,按原样复制/粘贴这些代码是行不通的,这不是一个预先消化的解决方案,而是对您要求的内容的一个总体概念,例如,在一系列的7项中重复您的模板文件,我从来没有真正使用过Drupal。。。叹气,虽然您最初的问题不是那么精确,这个答案是一个设计建议,将您的迭代划分为7个项目的系列块。我假设您对PHP有基本的了解,并且知道如何在您的问题中应用此解决方案。实际的解决方案包括了解您实际尝试了什么。。。。。。而且不仅仅是一堆混合的PHP+HTML无格式、无文档的代码,没有任何迭代块。无意冒犯。如果我对我的问题不清楚或不成熟,我很抱歉。这是我关于stackoverflow的第一个问题,我对php一窍不通。程序员不是设计师,反之亦然。没有不尊重的意思。我更新了我的答案。如果这没有帮助,stackoverflow可能不是解决这个问题的地方,您可能希望找到一些程序员来帮助您完成实际的项目。干杯如何将项目放入阵列中?我尝试了代码,但我一直得到一个空白屏幕。我不知道你的模板看起来像什么。我不知道你是如何访问数据的。我只是给了你一个算法来做你需要做的事情。
<?php
$count = /* TODO: INSERT CODE THAT RETURN THE NUMBER OF NODES HERE */;
for ($i=0; $i<$count; $i++) {
$column = $i % 7; // column will be 0,1,2,3,4,5, or 6 only (see modulus math operator)
$id = /* TODO: INSERT CODE THAT RETURN THE NODE ID HERE */;
$bg_url = /* TODO: INSERT CODE THAT RETURN THE BACKGROUND IMAGE URL HERE */;
$node_url = /* TODO: INSERT CODE THAT RETURN THE NODE IMAGE URL HERE */;
$title = /* TODO: INSERT CODE THAT RETURN THE NODE TITLE HERE */;
?>
<div class="a3 <?php print $id; ?>" id="e-<?php print $id; ?>">
<div class="maphomeimage">
<div class="maphomeoverlay" style="background-image:url(<?php print $bg_url; ?>);">
<p><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></p>
</div>
</div>
</div>
<?php
} // end for $i
?>