如何在node.tpl.php上生成条件语句(如果是“7”中的“1”,那么)?Drupal 6.2或如何有效地将其移动到page.tpl.php?

如何在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项,则执行以下操作:; 重复这个顺序 我需要这种类型的拆

我正在尝试创建一个条件语句,用于在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预设:

<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
?>