以编程方式向Joomla添加文章

时间:2011-08-12 14:43:35

标签: joomla1.5 joomla1.6 joomla-template

我是Joomla的新手(坦率地说,刚刚开始探索使用Joomla的可能性)并需要帮助以编程方式向Joomla后端表添加文章(请参阅下面的详细信息)。同样沿着同样的路线,我想了解列的值应该如何:

  • PARENT_ID
  • LFT
  • RGT
  • 水平

为表jos_assets#__assets)生成它们的功能角色(例如它们是“指针/索引”,类似于一个os inode来唯一地标识文件或者是他们更多的功能属性,如识别类别,子类别等)

使用以下简化示例来说明我尝试做的事情可能会有所帮助。假设我们有一个程序来收集各种关键信息,例如网络文章作者的姓名,文章的主题类型,文章的日期以及文章的链接。我希望能够扩展此程序以编程方式将此信息存储在Joomla中。目前,该信息存储在自定义表中,并且用户通过自定义php网页可以使用搜索标准,例如作者姓名,在特定日期范围内查找感兴趣的文章。然后显示此搜索的结果以及指向实际文章的超链接。这些文章本地存储在Web服务器上,而不是外部链接。存储在自定义表中的超链接部分包括物理文档的相对路径(相对于Web根目录),例如:

Author   date         type    html_file
Tom      08-14-2011   WEB     /tech/11200/ar_324.html
Jim      05-20-2010   IND     /tech/42350/ar_985.html

由于Joomla提供的所有优势都超过了编写自定义php搜索和演示页面以及趋势等,我们真的想切换到它。例如,在其他表中,似乎可以通过编程方式填充#__assets#__content以从我们现有的php程序(用于编译数据)填充Joomla,然后使用Joomla。

非常感谢任何示例,建议和帮助

最诚挚的问候 碣

2 个答案:

答案 0 :(得分:5)

初步说明:Joomla 1.6 / 1.7非常相似。 1.5不是那么多。我假设1.6 / 1.7,因为这是我建议作为新项目的基础。

首先,您需要运行访问Joomla框架。您可以通过组件,模块或引导它或其他任何内容的cron来完成此操作。我不会去做怎么做。

但是一旦你这样做,创建一篇文章就相当简单了。

<?php
require_once JPATH_ADMINISTRATOR . '/components/com_content/models/article.php';

$new_article = new ContentModelArticle();

$data = array(
    'catid' => CATEGORY_ID,
    'title' => 'SOME TITLE',
    'introtext' => 'SOME TEXT',
    'fulltext' => 'SOME TEXT',
    'state' => 1,
);
$new_article->save($data);

实际的字段列表会比那些(必填字段等)稍长一些,但是你应该从Joomla框架中获得理智的错误消息等,这些都可以说明这一点。

总结如下:

  • 加载Joomla框架,以便您可以访问数据库,组件,模型等
  • 包括com_content文章类,它将处理验证,为您保存到数据库等
  • 根据需要填写必填字段的文章实例
  • 致电保存()

现在我考虑一下,这可能会在1.5 ......

中起作用

答案 1 :(得分:2)

找到一种更好的方法来做到这一点,没有任何错误Create a Joomla! Article Programatically

$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;
}