用于在Joomla和Drupal上发表文章的API

时间:2015-07-09 08:53:45

标签: ruby-on-rails ruby drupal joomla

Joomla和Drupal是否提供任何类型的API来发布文章?

我有用于内容创作的Ruby on Rails应用程序,需要将文章发布到在Joomla和Drupal上运行的不同站点。

2 个答案:

答案 0 :(得分:1)

可以通过使用文章Model在Joomla站点上运行的CLI脚本来完成。

一个建议是发布RSS或XML Feed,然后您可以通过Joomla CLI脚本定期导入。下面给出了一个示例CLI脚本。注意事项:

  • 在下面的示例中,数据是从CSV文件导入的,无论数据源是什么,都必须对其进行修改。
  • catid是硬编码的 - 您可能希望将文章发布到不同的类别,在这种情况下,您需要做更多工作才能查找类别ID。
  • 它不包含标签等
  • 只是Joomla的解决方案而不是Drupal

我可以继续,但这是一个Q& A网站而不是咨询机会......; - )

<?php

/**
 * @package    Joomla.Cli
 *
 * @copyright  Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */
// Initialize Joomla framework
        const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
  require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
  define('JPATH_BASE', dirname(__DIR__));
  require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

/**
 * Cron job to import data into articles
 *
 * @since  2.5
 */
class ImportArticlesCron extends JApplicationCli
{

  /**
   * Entry point for the script
   *
   * @return  void
   *
   * @since   2.5
   */
  public function doExecute()
  {

    // Import articles model
    JControllerForm::addModelPath(JPATH_ADMINISTRATOR . '/components/com_content/models');

    // Get an instance of the content model
    $model = $this->getModel('Article', 'ContentModel');

    // This example is using a csv file but there's no reason you couldn't import an XML file here
    while (($line = fgetcsv($handle, 0, $delimiter = '|')) !== FALSE)
    {
      $data = array();
      $data['introtext'] = '';
      $data['fulltext'] = $output;
      $data['id'] = '';
      $data['state'] = ($line[1] == 'True') ? 1 : 0;
      $data['title'] = iconv("ISO-8859-1", "UTF-8//TRANSLIT", $line[3]);
      $data['created'] = $line[2];
      $data['catid'] = 38;
      $data['language'] = 'en-GB';
      $data['metadesc'] = '';
      $data['metakey'] = '';

      //$data['publish_up'] = date('Y-m-d', strtotime($line[14]));
      //$data['publish_down'] = date('Y-m-d', strtotime($line[15]));
      $model = $this->getModel('Article', 'ContentModel');

      if (!$model->save($data))
      {
        $error = $model->getError();
      }
    }
  }

}

JApplicationCli::getInstance('ImportArticlesCron')->execute();

&GT;

答案 1 :(得分:0)

Joomla问题的答案是否定的,没有网络API可以从远程发布文章。

我从来没有必要实施这样的解决方案,因此我没有得到经证实的答案。 作为开发人员,我首先想到的是构建自定义API组件。 也许,在此之前,我会调查JED以确定是否有人已经这样做了。