此代码调用joomla&中的k2组件的字段。显示。此代码在k2中工作。但是当我在另一个模块上复制此代码以调用该字段时会出现此错误: 我在网上搜索了2天但其他都没有:
<?php if($this->item->params->get('itemExtraFields') && count($this->item->extra_fields)): ?>
<!-- Item extra fields -->
<div class="itemExtraFields">
<ul>
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<?php if($extraField->value != ''): ?>
<li class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<?php if($extraField->type == 'header'): ?>
<h4 class="itemExtraFieldsHeader"><?php echo $extraField->name; ?></h4>
<?php else: ?>
<span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span>
<?php endif; ?>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
这下面的代码在模块之前,但是当我添加到我的代码中时不能工作:
<?php if($params->get('itemExtraFields') && count($item->extra_fields)): ?>
<div class="moduleItemExtraFields">
<b><?php echo JText::_('K2_ADDITIONAL_INFO'); ?></b>
<ul>
<?php foreach ($item->extra_fields as $extraField): ?>
<?php if($extraField->value): ?>
<li class="type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<span class="moduleItemExtraFieldsLabel"><?php echo $extraField->name; ?></span>
<span class="moduleItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
<div class="clr"></div>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<div class="clr"></div>
答案 0 :(得分:3)
为什么要将K2组件HTML复制到模块中。使用K2_content模块,它解决了所有一般用途。它还有外场显示。
如果您仍然需要它: 您是否在为新模块使用K2组件类?如果您没有在helper.php中为您的模块准备课程,那么它现在可以正常工作。要解决这个问题,你需要将helper.php中的类从K2组件复制到模块的helper.php中,但是,获取正确的代码是一项艰巨的任务。
对于逐行html,您可以从类中导入该函数。 Joomla有类将函数直接导入模板文件(default.php)。为此你必须:
1-从helper.php中找到extrafield函数 2-直接将其导入模板文件。
您可以直接使用它作为CLASS :: FUNCTION的地方。在下面的示例中,它来自K2_content模块。
<?php foreach (modK2ContentHelper::getItems($item->extra_fields) as $extraField): ?>
如果未在新模块的xml文件中定义,请不要在模块中使用以下内容:
<?php if($params->get('itemExtraFields') && count($item->extra_fields)): ?>
答案 1 :(得分:1)
如果您将此代码复制到另一个模块。 该模块不是K2的一部分(独立模块与K2无关)。然后调用此代码将获得错误Bcoz这里代表任何K2模型,控制器或视图,但在您的模块中可能是模块帮助。
so the solution i suggest is make sure the required k2 files are included in the module.
and then call the $this-> with class name or create object.
这可以解决您的问题。