0

此代码在 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>
4

2 回答 2

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)): ?>
于 2012-12-28T11:39:48.543 回答
1

如果您将此代码复制到另一个模块。该模块不是 K2 的一部分(单独的模块与 K2 没有关系)。然后调用此代码将得到错误 Bcoz 此处的 this 表示任何 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.

这可能会解决您的问题。

于 2012-12-18T10:37:27.777 回答