2

administrator\components\com_k2 フォルダーのすべての場所を調べましたが、K2 に新しいアイテム\記事を保存するコードを見つけることができません。models フォルダーの下にある item.php ファイルを確認しました。運がない。

K2 アイテムの保存方法をオーバーライドする必要があります。

アイテムのタイトルとエイリアスを #__K2_content テーブルに保存する正確な方法を知る必要があります。

保存時に joomla 記事の K2 アイテムを複製し、ゴミ箱/削除時に削除する必要があります。

K2 コア コードのオーバーライドに成功しました。しかし、オーバーライドする正しいコードが見つかりません。(オーバーライド方法はこちら)

4

2 に答える 2

3

K2 アイテムを格納するテーブル (少なくとも最新の K2 バージョン - 2.6.5) は#__k2_items、#__k2_content ではありません。

K2 は Joomla のメソッドを使用しているように見えます。すべてが Joomla クラスから拡張されています。

class K2ControllerItem extends K2Controller
{

    public function display($cachable = false, $urlparams = array())
    {
        JRequest::setVar('view', 'item');
        parent::display();
    }

    function save()
    {
        JRequest::checkToken() or jexit('Invalid Token');
        $model = $this->getModel('item');
        $model->save();
    }
    .....
}

K2 コントローラー: /administrator/components/com_k2/controllers/controller.php

...
else if (version_compare(JVERSION, '2.5', 'ge'))
{
    class K2Controller extends JController
    {
        public function display($cachable = false, $urlparams = false)
        {
            parent::display($cachable, $urlparams);
        }

    }

}
...
于 2013-02-21T15:40:13.087 に答える
0

@Shaz、あなたは私に正しい方向性を教えてくれました。

com_k2\controllers\item.php$model->save();にデータが保存されます。

関数 save() は com_k2\models\item.php ファイルにあり、データをキャプチャする 2 つの行があります。

$row = JTable::getInstance('K2Item', 'Table');

これは $row を開始しますが、

if (!$row->bind(JRequest::get('post')))

これは $row に入力されます。

したがって、$row にはすべての変数値が含まれます。

これでif (!$row->store())、データが保存されます。

$row を使用して、同じものを Joomla に保存します! com_content の記事。

気持ちいい :)

于 2013-02-21T19:12:32.913 に答える