【问题标题】:How to theme views fields in Drupal 7 correctly如何正确主题化 Drupal 7 中的视图字段
【发布时间】:2023-03-08 01:18:01
【问题描述】:

我需要在 Drupal 7 中对视图进行主题化。有一个内容类型“书”,我需要列出 5 本书并以特殊方式(预览图像、标题和作者)对它们进行主题化。

当我覆盖 views-view-field.tpl.php 并打印原始 SQL 结果时,我看到所有字段都显示了。这段代码

echo "<pre>";
print_r($row);
echo "</pre>";

给予

[entity] => stdClass Object
 (
  [title] => ...
  ....
  [nid] => 34
  ...
  [body] => Array
  ...

但我不想将 [body] 从数据库传递到 php 端,因为它可能很大并导致性能问题。我没有在视图设置中选择 [body]。

有没有办法只将某些字段传递给views-view-field.tpl.php?

提前致谢。

【问题讨论】:

  • 您是否要为特定视图或一般视图主题化?
  • 我需要为一个操作一种内容类型的视图设置主题

标签: performance drupal view drupal-7 drupal-theming


【解决方案1】:

可用的变量写在 sites/all/modules/views/theme 文件夹文件内的文档中。

通常,您需要在 views-view-fields.tpl.php 模板上查看和修改的变量是 $fields

我使用 devel 模块 (http://drupal.org/project/devel) 来查看可用的变量:

<?php
//after enabling the devel module...
dpm($fields);

// This will print a Kuomo display on the page with the array's vars

?>

一般来说,在节点视图上,

<?php print $fields['title']->content; ?> 

将打印节点标题。对于字段,请尝试

<?php print $fields['field_FIELDNAME']->content; ?>

如果你有记忆,你可以用

捕获 Kuomo 中模板上所有可用的变量
<?php dpm(get_defined_vars()); ?>

确保在尝试查看变量之前清除缓存。

【讨论】:

    【解决方案2】:

    如果您想要为某个字段设置主题,您可以为该特定字段创建一个模板,如下所示:views-view-field--field-nameofmyfield.tpl.php 放置它在您的主题文件夹中并重新扫描主题中的模板:视图配置的信息部分。

    为此,您必须将该字段添加到视图中的字段中。

    【讨论】:

    • 谢谢,这行得通。但我仍然担心性能。 print_r($row) 输出给定内容类型的所有字段,即使这些字段未在视图中选择。而且它们的结构是巨大的。我可以禁用其中的大部分吗?
    • 有趣的问题。不确定...我会尝试找出答案。
    • 请注意,您可以从视图的编辑页面的高级 > 主题:信息下获取可能的模板文件名。
    【解决方案3】:

    要对主题中的信息进行排序,请使用以下命令:

    <?php dpm ($rows); ?> // View all the information in the view
    
    <?php foreach ($rows as $row_count => $row): ?>
     <?php print $row['title'];
     <?php print $row['nid'];
    <?php endforeach; ?>
    

    【讨论】:

      【解决方案4】:

      如果你想改变视图的主题然后改变 views-view-fields.tpl.php 像这样:

      <div class="pagecontent">
          <div class="colleft">
              <?php if($fields['field_file']->content){  ?><div class="views-field-file"><?php print $fields['field_file']->content; ?></div><?php } ?>
          </div>
          <div class="colright">
              <div class="views-field-title"><?php print $fields['title']->content; ?></div>
              <div class="views-field-body"><?php print $fields['body']->content; ?></div>
              <div class="views-field-view-node"><?php print $fields['view_node']->content; ?></div>
          </div>
      </div>
      

      【讨论】:

        猜你喜欢
        • 2012-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多