【问题标题】:How to display extra fields in article with K2如何使用 K2 在文章中显示额外字段
【发布时间】:2011-04-21 03:54:08
【问题描述】:

目前我已经安装了 Jreviews,我想用 K2 替换它,以列出专业商店的地址、电话、地图、营业时间......

对于 K2,我想我需要定义额外的自定义字段来保存这些特定信息。没问题。

但是,我该如何配置才能让这些字段显示在特定商店的详细文章/商品中?

非常感谢,

提比。

【问题讨论】:

    标签: custom-fields joomla-k2


    【解决方案1】:

    在 K2 中,您可以设置项目在类别级别的显示方式的参数。有一个选项可以在类别列表中的项目视图选项以及项目视图选项中显示额外字段。

    默认情况下,内置的 K2 模板将在“附加信息”标题下显示额外的字段,其中包含字段名称和值的无序列表。您可以覆盖该模板并使额外的字段以您喜欢的方式显示。

    【讨论】:

      【解决方案2】:
      // In the item template you can skip this first line...
      $this->item->extra_fields = K2ModelItem::getItemExtraFields($this->item->extra_fields);
      
      $extraFlds = array();
      if ( $this->item->extra_fields ){
        foreach ( $this->item->extra_fields as $key=>$extraField ){
           $extraFlds[ $extraField->name ] = $extraField->value;
        }
      }
      

      然后您可以访问关联数组中的额外字段,例如$extraFlds['my field']

      【讨论】:

      • 这段代码非常有用,谢谢!对于任何打算像我一样复制+粘贴的人,请注意在代码的最后一行 $extarFlds 应该是 $extraFlds。
      • k2 似乎已经更新了他们的类 - 现在需要实例化对象:$k2obj = new K2ModelItem(); $fields = $k2obj->getItemExtraFields($this->item->extra_fields, $this->item);
      • 它现在不适合我。我收到WARNING: CREATING DEFAULT OBJECT FROM EMPTY VALUE 错误。这对 Joomla 3.3 和 K2 v2.6.7 无效吗?
      • 顺便说一句,我在 category.php 中尝试这个
      • 对不起..我的错。我需要在 category_item.php 而不是 category.php 中进行编辑
      【解决方案3】:

      如果你想在 k2 表列表中显示 custum 字段,请转到:

      components\com_k2\templates\default\category_item.php

      并像这样在第 136 行附近编辑文件:

      <?php foreach ($this->item->extra_fields as $key=>$extraField):
                  **if(strpos($extraField->name,"/")){**
                  ?>
                  <li class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
                      <span class="catItemExtraFieldsLabel"><?php echo $extraField->name; ?></span>
                      <span class="catItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
                  </li>
                  <?php **}** endforeach; ?>
      

      我在我的网站上这样做:www.joomir.com

      【讨论】:

        【解决方案4】:

        问题是$this-&gt;item-&gt;extra_fields实际上是从数据库中检索到的JSON字符串,所以必须先解码。它的结构比较复杂(不幸的是每个字段都用它的id来标记,它的名字根本没有出现),如果你执行你会看到它:

        print_r($this->item->extra_fields);`
        

        如果您想通过字段名称调用字段值,我会这样做:

        if ($this->item->params->get('itemExtraFields')) {
        
        $item_extra_fields = json_decode($this->item->extra_fields);
        
        $put_your_extra_field1_name_here = $item_extra_fields[1]->value;
        $put_your_extra_field2_name_here = $item_extra_fields[2]->value;
        $put_your_extra_field3_name_here = $item_extra_fields[3]->value;
        $put_your_extra_field4_name_here = $item_extra_fields[4]->value;
        }
        

        请注意,如果您需要的额外字段是文本,这很有用,但它可以是数组或其他任何内容,因此您可能需要编写更多代码。希望这有用!

        【讨论】:

          【解决方案5】:

          在这里尝试了很多之后,我使用并为我工作过

          <?php 
          // if form is empty show default form
          $k2obj = new K2ModelItem(); 
          $fields = $k2obj->getItemExtraFields($this->item->extra_fields, $this->item); 
          //echo $this->item->extraFields->State->name; 
          echo $this->item->extraFields->FIELD_ALIAS->value;
          
          ?>
          

          这是有效的,并注意到它与实例化类有关。

          注意:我在 k2 item i 版本 2.6.7 Joomla 2.5.14 中使用这个

          【讨论】:

            猜你喜欢
            • 2013-06-18
            • 2014-10-24
            • 2014-11-01
            • 2013-06-24
            • 2013-05-12
            • 2016-05-24
            • 2012-12-27
            • 2011-07-18
            • 2015-02-15
            相关资源
            最近更新 更多