创建一个Joomla!文章以编程方式

时间:2012-09-28 16:19:33

标签: php joomla content-management-system joomla2.5

我创建了自己的组件。当我向组件添加新记录时,我还希望它在joomla中创建一篇新文章(即使用com_content)。

我在堆栈溢出Programmatically adding an article to Joomla上找到了这个,它解释了如何做到这一点。代码是有道理的,看起来它会起作用。问题是,一旦调用com_content中包含的方法,com_content中的所有相对URL都会崩溃,joomla会抛出错误。

有没有人知道如何克服这个问题?上面链接中的注释表明,在包含它之前将当前工作目录更改为com_content将会有效,但我不能100%确定如何执行此操作。

3 个答案:

答案 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)

支持Joomla 2.5和Joomla 3.0

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>