我创建了自己的组件。当我向组件添加新记录时,我还希望它在joomla中创建一篇新文章(即使用com_content)。
我在堆栈溢出Programmatically adding an article to Joomla上找到了这个,它解释了如何做到这一点。代码是有道理的,看起来它会起作用。问题是,一旦调用com_content中包含的方法,com_content中的所有相对URL都会崩溃,joomla会抛出错误。
有没有人知道如何克服这个问题?上面链接中的注释表明,在包含它之前将当前工作目录更改为com_content将会有效,但我不能100%确定如何执行此操作。
答案 0 :(得分: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;
}
请注意,上面的代码不会触发之前/之后的保存事件。但是,如果需要,那么触发这些事件应该不是问题。另外值得注意的是, published_up 字段不会自动设置,类别中的文章也不会被重新排序。
重新排序类别:
$table->reorder('catid = '.(int) $table->catid.' AND state >= 0');
答案 1 :(得分:1)
我得到的错误说:
找不到档案/var/www/administrator/com_mynewcomponent/helpers/content.php
我解决了这个问题,方法是在此位置创建一个空文件以禁止显示错误消息并手动将/var/www/administrator/com_content/helpers/content.php
包含在require_once
语句中。
答案 2 :(得分:1)
JTomContent在Joomla之前没有自动加载!版本3.0,所以它需要包括:
<div class="collapse navbar-collapse" id="mainNavBar">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Course</a></li>
<li><a href="#">About</a></li>
<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">My profile <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Friends</a></li>
<li><a href="#">Photos</a></li>
<li><a href="#">Settings</a></li>
</ul>
</li>
<!-- Your ul -->
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li>
<li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
</ul>
</div>