将文章加载到Joomla中的组件模板中

时间:2013-11-04 09:52:00

标签: php joomla article

我想将一篇文章加载到Joomla框架中的组件模板php代码中。

我可以加载php中的模块,文章中的模块,文章中的组件和..但我从来不想将文章加载到组件php中。

是否有人知道该代码片段?

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

我会在你的视图中加载文章模型,如

JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_content/models', 'ContentModel');
$model = JModelLegacy::getInstance('Article', 'ContentModel', array('ignore_request' => true));
$article = $model->getItem((int) $articleId);

现在,您可以访问文章中提供的所有字段,例如$item->fulltext$item->introtext。看一下article view,看一下它在显示文章之前所做的所有花哨的东西。

答案 1 :(得分:0)

有了Joomla .3.8.10,我得到了Fatal error: __clone method called on non-object in .../components/com_content/models/article.php on line 164

似乎模型中需要params-property:

use Joomla\Registry\Registry; // only for new Registry below
ModelLegacy::addIncludePath(JPATH_SITE.'/components/com_content/models', 'ContentModel');
$model=JModelLegacy::getInstance('Article', 'ContentModel', array('ignore_request'=>true));
// $params=JFactory::getApplication()->getParams();
// An empty registry object is just fine:
$params=new Registry;
$model->setState('params', $params); // params (even empty) is *required* for model
$article=$model->getItem((int) articleId);

不确定是否确实需要ModelLegacy::addIncludePath...或在什么情况下需要use Joomla\Registry\Registry; // for new Registry $model=JModelLegacy::getInstance('Article', 'ContentModel', array('ignore_request'=>true)); $model->setState('params', new Registry); $model->setState('filter.article_id', (int) $articleId ); // or use array of ints for multiple articles $model->setState('load_tags', true); // not available for Article model $model->setState('show_associations', true); $articles=$model->getItems(); $article=$articles[0]; 。有人对此有见识吗?

更新

您可能要使用带有id过滤器的Article s (注意复数)模型,因为它还可以获取标签和关联:

components/com_content/models/articles.php

更多过滤器

如果您想通过ID以外的其他方式获取文章(默认为默认)。来自true

  • filter.article_id:单个整数或整数数组
  • filter.article_id.include :(布尔)true | false false包括{{1}}以排除给定的id
  • -> dito分类,作者,author_alias
  • filter.subcategories:(布尔)false | true
  • filter.max_category_levels:(int)1
  • filter.date_filtering :(字符串)偏离|范围|相对
  • filter.date_field :(字符串)创建的 db表字段²
  • filter.start_date_range 用于filter.date_filtering == range
  • filter.end_date_range 用于filter.date_filtering == range
  • filter.relative_date(int)0 从今天开始过去的天数,用于filter.date_filtering == relative
  • filter.tag(int)0 标签ID
  • load_tags :(布尔)true | false
  • show_associations :(笨蛋)false | true

订购和限制

  • list.ordering :(字符串)排序 db表字段²
  • list.direction :(字符串)ASC | DESC
  • list.limit:(int)
  • list.start:(int)0 从零开始

)²有效字段: id,标题,别名,checked_out,checked_out_time,catid,category_title,状态,访问权限,access_level,创建,created_by,排序,精选,语言,匹配,publish_up,publish_down,图像,URL,filter_tag。所有字段均已根据白名单进行检查。