2

外部スクリプトから Joomla コンテンツをレンダリングすることは可能ですか? com_contentたとえば、すべてのコンテンツ プラグインとモジュール機能を利用できるようにするために、コンポーネントに渡したい html 文字列があります。JDocumentRendererComponentクラスを使うべきだと思います。外部ファイルのコード:

<?php

require_once ('framework.php'); //loading joomla framework

jimport('joomla.document.html.renderer.component');

$contentHtml = '<p>Some content html</p>';

echo JDocumentRendererComponent::render('com_content',array(),$contentHtml);

?>

私が得るのは最後の行のエラーです:

Fatal error: Class 'JDocumentRendererComponent' not found...

私は何を間違っていますか?何か案は?

4

2 に答える 2

0

これは、Joomla フレームワークを外部スクリプトに含めていないためです。以下のコードを使用します。これにより、Joomla! 環境が正しくロードされている

/* Initialize Joomla framework */
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
/* Required Files */
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
/* To use Joomla's Database Class */
require_once ( JPATH_BASE .DS.'libraries'.DS.'joomla'.DS.'factory.php' );
/**************************************************/
// Your code starts here...
// Remember that the Site application isn't running, so you cannot access $mainframe or any of its methods.
/**************************************************/

JDocumentRendererComponentフレームワークを正しくロードすると、クラスは /libraries/joomla/document/html/renderer/component.php にあります。

于 2013-01-03T06:41:36.350 に答える
0

私の質問に対する他の解決策を見つけました。このジョブは、コンテンツ プラグイン イベント (トリガー) によっても実行できます。からのコードcomponents/com_content/views/article/view.html.php:

JPluginHelper::importPlugin('content');
$results = $dispatcher->trigger('onContentPrepare', array ('com_content.article', &$item, &$this->params, $offset));

$item->event = new stdClass();
$results = $dispatcher->trigger('onContentAfterTitle', array('com_content.article', &$item, &$this->params, $offset));
$item->event->afterDisplayTitle = trim(implode("\n", $results));

$results = $dispatcher->trigger('onContentBeforeDisplay', array('com_content.article', &$item, &$this->params, $offset));
$item->event->beforeDisplayContent = trim(implode("\n", $results));

$results = $dispatcher->trigger('onContentAfterDisplay', array('com_content.article', &$item, &$this->params, $offset));
$item->event->afterDisplayContent = trim(implode("\n", $results));

したがって、実際に文字列からオブジェクトを作成し、これらのトリガーに渡すことができます。その結果、主要な機能を備えた記事のようにレンダリングされたコンテンツが得られます。

それに関するいくつかの詳細情報:

http://www.inmotionhosting.com/support/edu/joomla-25/create-plugin/content-plugin-events https://groups.google.com/forum/#!msg/joomla-dev-cms/VZVurjiZWIs /9Vr45KS2LTMJ

于 2013-01-03T14:24:08.353 に答える