我查看了 administrator\components\com_k2 文件夹中的所有位置,但找不到在 K2 中保存新项目\文章的代码。我检查了模型文件夹下的 item.php 文件。没运气。
我需要覆盖 K2 项目保存方法。
我需要知道将项目的标题和别名保存到#__K2_content 表中的确切方法。
我必须在保存和删除垃圾/删除时复制 joomla 文章中的 K2 项目。
我已经成功地覆盖了 K2 核心代码。但是我找不到正确的代码来覆盖。(覆盖方法在这里)
存储 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);
}
}
}
...
@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 中的文章。
感觉不错 :)