Joomla - K2中的代码保存了新项目的标题和别名

时间:2013-02-20 21:22:49

标签: joomla joomla2.5 joomla-k2

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

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

我需要知道将Item的标题和别名保存到#__ K2_content表中的确切方法。

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

我已成功覆盖K2核心代码。但我无法找到合适的代码来覆盖。 (覆盖方法是here

2 个答案:

答案 0 :(得分:3)

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

我查看了代码,看起来K2使用的是Joomla的方法:请参阅administrator / components / com_k2 / controllers / item.php - 第24行:function 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);
        }

    }

}
...

答案 1 :(得分: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中的文章。

感觉良好:)