Gaz*_*dge 2 php joomla content-management-system joomla2.5
我创建了自己的组件.当我向组件添加新记录时,我还希望它在joomla中创建一篇新文章(即使用com_content).
我在堆栈溢出时发现这个以编程方式向Joomla添加一篇文章,解释了如何做到这一点.代码是有道理的,看起来它会起作用.问题是,一旦开始调用com_content中包含的方法,com_content中的所有相对URL都会崩溃,joomla会抛出错误.
有谁知道克服这种情况的方法吗?上面链接中的注释表明,在包含它之前将当前工作目录更改为com_content将会有效,但我不能100%确定如何执行此操作.
Mat*_*röm 14
由于它是常量,因此无法更改工作目录.要解决此问题,您可以选择不使用ContentModelArticle,而只使用表类:
$table = JTable::getInstance('Content', 'JTable', array());
$data = array(
'catid' => 1,
'title' => 'SOME TITLE',
'introtext' => 'SOME TEXT',
'fulltext' => 'SOME TEXT',
'state' => 1,
);
// Bind data
if (!$table->bind($data))
{
$this->setError($table->getError());
return false;
}
// Check the data.
if (!$table->check())
{
$this->setError($table->getError());
return false;
}
// Store the data.
if (!$table->store())
{
$this->setError($table->getError());
return false;
}
Run Code Online (Sandbox Code Playgroud)
请注意,上面的代码不会触发之前/之后的保存事件.但是,如果需要,那么触发这些事件应该不是问题.另外值得注意的是,不会自动设置字段published_up,并且不会重新排序该类别中的文章.
要重新排序类别:
$table->reorder('catid = '.(int) $table->catid.' AND state >= 0');
Run Code Online (Sandbox Code Playgroud)