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