3

我有一个抓取 4 个字段的简单视图,基本上它抓取特定内容类型的字段。字段如下:
CSS 类(纯文本)
Image(图像)
Title
Body

很简单的东西。我已经创建了视图,但是我需要以一种专门的方式输出东西,我无法确定这些东西是如何与我的构建中的自定义标记一起分解的。我需要将每一行包装在一个容器中,每一行分解成它自己的容器,看看下面的代码。

   <div id="homepage-folio-portlets">
    <div class="homepage-folio-portlet [CSS class]">
     <div class="homepage-folio-portlet-image"><img src="[Image]" width="450" height="330" alt="" class="[CSS class]-image" /></div>
     <div class="homepage-folio-portlet-text">
      <strong>[Title]</strong>
      <p>[Body]</p>
     </div>
    </div> <!-- /homepage-folio-portlet -->
   </div> <!-- /homepage-folio-portlets -->

所以我有一个容器homepage-folio-portlets,在其中我想迭代视图,使用类homepage-folio-portlet为返回的每一行创建一个新容器,包括该行中的 CSS 类。

我最大的障碍是弄清楚如何在 template.php 中构建我的 .tpl 文件或主题函数。我了解命名约定,但一旦进入,我真的不知道该怎么做。我有一种感觉,我需要在 template.php 中做一些小魔术,以确保我的行输出知道内容中的 CSS 类,但谁知道呢。任何帮助和方向表示赞赏。

4

3 回答 3

3

在观看了上述视频后,我对如何完成我打算做的事情变得更加清楚了。最大的“啊哈”是因为 foreach 循环,“行样式输出”模板的默认代码让我感到困惑。我没有意识到我可以简单地以我认为适合此文件的任何方式输出每个字段而无需循环。该视频展示了如何使用以下简写 $fields['ID-of-field']->content 单独引用您的字段。要获得“ID-of-field”,只需滚动到特定视图的“主题信息”选项窗格中的“显示输出”、“样式输出”和“行样式输出”链接。

我使用在我的视图的编辑屏幕中找到的“主题信息”来确定“行样式输出”的最具体的 .tpl 来创建和创建它,在本例中为 view-view-fields--my-view-name- -default.tpl.php。

view-view-fields--my-view-name--default.tpl.php - 行输出 .tpl 文件
(不再使用默认的 foreach,因为我知道我想要的字段而不是循环字段,我可以无论如何我认为合适,只需输出它们)

   <div id="homepage-folio-portlets">
    <div class="homepage-folio-portlet <?php print $fields['CSS_class']->content ?>">
     <div class="homepage-folio-portlet-image"><img src="<?php print $fields['Image']->content ?>" width="450" height="330" alt="" class="<?php print $fields['CSS_class']->content ?>-image" /></div>
     <div class="homepage-folio-portlet-text">
      <strong><?php print $fields['Title']->content ?></strong>
      <p><?php print $fields['Body']->content ?></p>
     </div>
    </div> <!-- /homepage-folio-portlet -->
   </div> <!-- /homepage-folio-portlets -->

之后,我对“样式输出”和“显示输出”.tpl 文件做了一点递归,以摆脱 Drupal 添加的所有额外标记。请注意,我真正关心的只是以 .tpl 样式打印出 $row(使用它的 foreach 循环),并在显示 tpl 中打印出 $rows。它输出的正是我想要的,我再高兴不过了。最后,这有点道理。希望这对其他人有帮助。

仅供参考...

views-view-unformatted--my-view-name--default.tpl.php - 样式 .tpl 文件
(希望在此处保留 foreach 循环,以便输出每一行)

<?php foreach ($rows as $id => $row): ?>
 <?php print $row; ?>
<?php endforeach; ?>

views-view--my-view-name--default.tpl.php - 显示 .tpl 文件

<?php print $rows; ?>

通过删除所有额外的标记,我失去了特定于管理链接等视图的重要内容,但出于我的目的,这很好。

于 2010-12-07T00:25:31.663 回答
1

在您的视图的编辑选项卡上,在基本设置下,查找“主题:”并单击“信息”链接。然后在“默认:主题信息”部分中,粗体文件名是当前用于主题该视图的特定子部分的文件名。其他名称是可用于覆盖默认值的“建议”,它们的顺序是从最不具体到最具体。

在您的情况下,首先,听起来您想覆盖“行样式输出”:

  1. 点击“Row style output”链接,复制默认模板代码。
  2. 根据您是否希望将此样式用于所有视图、此视图、此视图的特定显示等,选择一个建议的文件名用于行样式。
  3. 将步骤#1中复制的代码粘贴到步骤#2中选择的文件名中
  4. 根据需要编辑代码,以添加特定的类
  5. 单击“重新扫描模板文件”以重建模板缓存
  6. 对要自定义的任何其他子模板重复步骤 1-5。
于 2010-12-06T21:19:40.173 回答
0

您是否尝试过将模板文件用于行?您应该在视图模块(在管理员中)中看到它。创建视图时,单击左侧下方框中的“信息”。您将需要刷新模板缓存(您将看到一个按钮来执行此操作)。

于 2010-12-06T21:19:32.487 回答