如何使用K2在文章中显示额外的字段

时间:2010-10-05 07:08:42

标签: custom-fields joomla-k2

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

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

但是,我如何配置这些字段以显示特定商店的详细文章/项目?

非常感谢,

提笔。

5 个答案:

答案 0 :(得分:5)

// 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']

答案 1 :(得分:4)

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

<?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项目中使用了这个版本2.6.7 Joomla 2.5.14

答案 2 :(得分:1)

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

  

部件\ com_k2 \模板\默认\ 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

答案 3 :(得分:1)

问题是$this->item->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;
}

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

答案 4 :(得分:0)

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

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