Php 在Joomla中将文章加载到组件模板中
我想将一篇文章加载到Joomla框架内的组件模板php代码中 我可以在php中加载模块,在文章中加载模块,在文章中加载组件,还有..但是我从来都不想将文章加载到php组件中 有人知道这方面的代码片段吗Php 在Joomla中将文章加载到组件模板中,php,joomla,article,Php,Joomla,Article,我想将一篇文章加载到Joomla框架内的组件模板php代码中 我可以在php中加载模块,在文章中加载模块,在文章中加载组件,还有..但是我从来都不想将文章加载到php组件中 有人知道这方面的代码片段吗 非常感谢您的帮助。我会像这样在您的视图中加载文章模型 JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_content/models', 'ContentModel'); $model = JModelLegacy::getInsta
非常感谢您的帮助。我会像这样在您的视图中加载文章模型
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
。在文章显示之前,请查看,以查看它对文章所做的所有花哨的操作。我会在您的视图中加载文章模型,如下所示
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
。在文章显示之前,请先查看一下它对文章所做的所有花哨的操作。对于Joomla.3.8.10,我遇到了一个致命错误:\u克隆方法调用了第164行的…/components/com\u content/models/article.php中的非对象。
似乎模型中需要params属性:
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);
不确定是否或在什么上下文中确实需要modelegacy::addIncludePath…
。有人知道这件事吗
更新
您可能希望使用带有id筛选器的文章s(注意复数)模型,因为它还能够获取标记和关联:
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以外的其他方式获取文章(默认先获取)。来自components/com\u content/models/articles.php
- filter.article\u id:单个整数或整数数组
- filter.article_id.include:(bool)true | false
包含true
排除给定idfalse
- ->类别、作者、作者别名同上
- filter.subcategories:(bool)false | true
- filter.max_category_levels:(int)1
- filter.date_筛选:(字符串)关闭|范围|相对
- filter.date_字段:(字符串)已创建数据库表字段²
- filter.start\u date\u筛选器的范围。date\u筛选器==范围
- filter.end\u日期\u筛选器的范围。日期\u筛选器==范围
- filter.relative_date(int)0从今天开始的过去天数,对于filter.date_filtering==relative
- filter.tag(int)0标记id
- 加载标签:(bool)真|假
- 显示关联:(bool)假|真
- list.ordering:(字符串)ordering数据库表字段²
- list.direction:(字符串)ASC | DESC
- list.limit:(int)
- list.start:(int)0从零开始
id、标题、别名、签出、签出时间、catid、类别、标题、状态、访问、访问级别、创建人、创建人、排序、特色、语言、点击数、向上发布、向下发布、图像、URL、筛选标记。根据白名单检查所有字段。对于Joomla.3.8.10,我得到了一个
致命错误:\u在第164行的…/components/com\u content/models/article.php中对非对象调用了克隆方法。
似乎模型中需要params属性:
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);
不确定是否或在什么上下文中确实需要modelegacy::addIncludePath…
。有人知道这件事吗
更新
您可能希望使用带有id筛选器的文章s(注意复数)模型,因为它还能够获取标记和关联:
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以外的其他方式获取文章(默认先获取)。来自components/com\u content/models/articles.php
- filter.article\u id:单个整数或整数数组
- filter.article_id.include:(bool)true | false
包含true
排除给定idfalse
- ->类别、作者、作者别名同上
- filter.subcategories:(bool)false | true
- filter.max_category_levels:(int)1
- filter.date_筛选:(字符串)关闭|范围|相对
- filter.date_字段:(字符串)已创建数据库表字段²
- filter.start\u date\u筛选器的范围。date\u筛选器==范围
- filter.end\u日期\u筛选器的范围。日期\u筛选器==范围
- filter.relative_date(int)0从今天开始的过去天数,对于filter.date_filtering==relative
- filter.tag(int)0标记id
- 加载标签:(bool)真|假
- 显示关联:(bool)假|真
- list.ordering:(字符串)ordering数据库表字段²
- list.direction:(字符串)ASC | DESC
- list.limit:(int)
- list.start:(int)0从零开始
id、标题、别名、签出、签出时间、catid、类别、标题、状态、访问、访问级别、创建人、创建人、排序、特色、语言、点击数、向上发布、向下发布、图像、URL、筛选标记。根据白名单检查所有字段。谢谢你。这为我节省了很多时间。因此,如果我想加载别名为“000001”的文章的介绍文本,我该如何实现?PHP新手抱歉:)我试过了,但没能成功。是否需要比上述代码更多的代码?是否需要调用该应用程序<代码>$app=JFactory::getApplication()?@DalamHensi看起来应该是
如果($articleId==“21”){echo$item->fulltext;}
或者类似的东西谢谢你。这为我节省了很多时间。因此,如果我想加载别名为“000001”的文章的介绍文本,我该如何实现?PHP新手抱歉:)我试过了,但没能成功。是否需要比上述代码更多的代码?是否需要调用该应用程序<代码>$app=JFactory::getApplication()?@DalamHensi它看起来像是if($articleId==“21”){echo$item->fulltext;}
之类的东西