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 モジュールを使用します。また、extrafields ディスプレイもあります。

それでも必要な場合: 新しいモジュールに 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 が発生します。これは、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 に答える