我查看了administrator \ components \ com_k2文件夹中的所有位置,但无法找到在K2中保存新项目\文章的代码。我检查了models文件夹下的item.php文件。没有运气。
我需要覆盖K2项目保存方法。
我需要知道将Item的标题和别名保存到#__ K2_content表中的确切方法。
我必须在保存时复制joomla文章中的K2项目,并删除垃圾/删除。
我已成功覆盖K2核心代码。但我无法找到合适的代码来覆盖。 (覆盖方法是here)
答案 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中的文章。
感觉良好:)