代码之家  ›  专栏  ›  技术社区  ›  trh88

主题Drupal分组多个字段

  •  4
  • trh88  · 技术社区  · 15 年前

    我有一个内容类型,它有4个图像。

    在我的视图中,它们被分组(组合多个值)。

    我想将每个图像单独放置,例如:

    <ul class="list">                                    
    <li><img src="/images/image1.jpg"/></li>
    <li><img src="/images/image2.jpg"/></li>
    <li><img src="/images/image3.jpg"/></li>
    <li><img src="/images/image4.jpg"/></li>
    </ul>
    

    我如何做到这一点?我想我需要用foreach循环为字段模板文件设置主题,但是我不太明白我应该做什么。

    谢谢)

    4 回复  |  直到 12 年前
        1
  •  1
  •   googletorp    15 年前

    发布的链接似乎是如何查找视图模板的一个很好的演练。对视图进行主题化与对其他内容进行主题化没有太大的不同,唯一棘手的部分是确定要覆盖的模板和要调用的模板。可以在“视图”用户界面的“主题信息”下找到此信息。

    不管怎样,一旦开始(记住清除缓存以使Drupal使用新模板),就很难确定哪些变量等是可用的,以便以您想要的方式自定义视图。随着时间的推移,这变得更容易了,但我通常使用的策略是devel模块和 dpm() . 这相当于为您打印变量,并使您更容易看到需要更改什么/如何才能获得所需的标记。还请记住,要准备好视图模板中的注释,它有很好的文档说明哪些变量对您可用。

        2
  •  0
  •   Ran Bar-Zik    15 年前

    使用视图主题化来实现这一点。这将是非常容易做的事情,但它将需要你一点编码(不太多)。

    这是一个很好的入门指南: http://www.appnovation.com/theming-views-drupal-6-simple-way

        3
  •  0
  •   trh88    15 年前

    伙计们,谢谢你们的帮助,你们把我推向了正确的方向。

    我通过重写template.php中一个名为theme-content-view-multiple-field的函数来解决这个问题。

    function MYTHEME_content_view_multiple_field($items, $field, $values) {
      $output = '';
      $i = 0;
      foreach ($items as $item) {
        if (!empty($item) || $item == '0') {
          $output .= '<li class="test field-item field-item-'. $i .'">'. $item .'</li>';
          $i++;
        }
      }
      return $output;
    }
    

    最后,我将对其进行编辑,使其仅影响此特定字段(例如 http://drupal.org/node/556232 )

    干杯:

        4
  •  0
  •   lurkerX    14 年前

    谢谢汤姆!这对Drupal6来说是一种魅力。下面是一些额外的行,用于保留默认标记(DIV)并将其更改为特定字段的li,其中field name是CCK字段的机器名。

    function MYTHEMENAME_content_view_multiple_field($items, $field, $values)
    {
      $tag = 'div';
      if($field['field_name']=='FIELDNAME')
      {
        $tag = 'li';
      }
        $i = 0;
        foreach ($items as $item)
        {
          if(!empty($item) || $item == '0')
            {
              $output .= '<'.$tag.' class="item_'. $i .'">'. $item .'</'.$tag.'>';
              $i++;
            }
        }
        return $output;
    }