【发布时间】:2011-04-21 03:54:08
【问题描述】:
目前我已经安装了 Jreviews,我想用 K2 替换它,以列出专业商店的地址、电话、地图、营业时间......
对于 K2,我想我需要定义额外的自定义字段来保存这些特定信息。没问题。
但是,我该如何配置才能让这些字段显示在特定商店的详细文章/商品中?
非常感谢,
提比。
【问题讨论】:
目前我已经安装了 Jreviews,我想用 K2 替换它,以列出专业商店的地址、电话、地图、营业时间......
对于 K2,我想我需要定义额外的自定义字段来保存这些特定信息。没问题。
但是,我该如何配置才能让这些字段显示在特定商店的详细文章/商品中?
非常感谢,
提比。
【问题讨论】:
在 K2 中,您可以设置项目在类别级别的显示方式的参数。有一个选项可以在类别列表中的项目视图选项以及项目视图选项中显示额外字段。
默认情况下,内置的 K2 模板将在“附加信息”标题下显示额外的字段,其中包含字段名称和值的无序列表。您可以覆盖该模板并使额外的字段以您喜欢的方式显示。
【讨论】:
// 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']
【讨论】:
$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 无效吗?
如果你想在 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
【讨论】:
问题是$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;
}
请注意,如果您需要的额外字段是文本,这很有用,但它可以是数组或其他任何内容,因此您可能需要编写更多代码。希望这有用!
【讨论】:
在这里尝试了很多之后,我使用并为我工作过
<?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 中使用这个
【讨论】: