2

我查看了 administrator\components\com_k2 文件夹中的所有位置,但找不到在 K2 中保存新项目\文章的代码。我检查了模型文件夹下的 item.php 文件。没运气。

我需要覆盖 K2 项目保存方法。

我需要知道将项目的标题和别名保存到#__K2_content 表中的确切方法。

我必须在保存和删除垃圾/删除时复制 joomla 文章中的 K2 项目。

我已经成功地覆盖了 K2 核心代码。但是我找不到正确的代码来覆盖。(覆盖方法在这里

4

2 回答 2

3

存储 K2 项目的表(至少在最新的 K2 版本 - 2.6.5 中)是#__k2_items,而不是 #__k2_content。

我浏览了代码,看起来 K2 使用了 Joomla 的方法:请参阅 administrator/components/com_k2/controllers/item.php - 第 24 行:函数 save()。一切都是从 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 文件中,其中有两行捕获数据。

$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 回答