如何从特定类别的Joomla

问题描述 投票:0回答:4
在JOOMLA 2.5中,是否有内含功能可以从特定类别中获取所有文章。 我不想使用自定义查询从数据库中获取文章。

我将使用文章模型
php mysql joomla
4个回答
4
投票
JLoader::import('joomla.application.component.model'); JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_content/models', 'ContentModel'); $model = JModelLegacy::getInstance('Articles', 'ContentModel'); $model->getState(); $model->setState('list.limit', 10); $articles = $model->getItems();

我不确定您如何设置滑块,但是要回答您的实际问题:

3
投票

有一个内置的功能,可以使用路线来获取文章。PHP我相信这是手风琴的使用等,但是对于最简单的方法,请使用上述方法。

注:不要忘记将
catid
价值从

2

更改为您需要的任何适合您的需求。

希望这有帮助


i创建小功能以获取类别并使用自定义字段返回所有文章

function getArticlesByCategory($categoryId, $limit = "") { if (is_int($limit) && !empty($limit)) { $limit = "LIMIT $limit"; } $articles = JFactory::getDBO()->setQuery(' SELECT C.*, CONCAT( "{", GROUP_CONCAT(CONCAT(\'"\',F.name,\'"\', ":",\'"\',V.value,\'"\')), "}" ) AS \'additional_fields\' FROM #__content AS C LEFT JOIN #__fields_values AS V ON V.item_id = C.id LEFT JOIN #__fields AS F ON F.id = V.field_id WHERE C.catid = \'' . $categoryId . '\' AND F.context = "com_content.article" GROUP BY C.id ' . $limit )->loadObjectList(); if($articles){ foreach ($articles as $article) { $article->additional_fields = json_decode($article->additional_fields); } } return $articles; }

用语

2
投票
$categoryId = 9; $limit = 4; getArticlesByCategory(9,2);

joomla上进行了测试! 3.8.11

我不喜欢这样的解决方案,但是Joomla!让我这样做。
    

检查一下: /模块 /mod_articles_category,以实现完整的(相当慢)。 您可能想让它更简单:

选择intotext,来自#__content的参数,其中catid =%s and state = 1 and ...

(您可能需要在publish_up字段等上添加一些检查,但是如果您对已发布 /未发布的管理且不使用Publish_up / Down感到满意,则无需执行此操作)。 确保您正确实现该模块以利用Joomla缓存,即使此查询很快,也最好避免重复ADLIB。

阅读此

0
投票

如果您创建一个模块,则可以创建一个具有类型文章类别的模块。然后,在右侧,单击过滤选项,然后选择要显示的类别。

在Joomla 5中,这相当简单明了。请参阅下面

use Joomla\CMS\Factory; $app = Factory::getApplication(); $model = $app->bootComponent('com_content')->getMVCFactory()->createModel('Articles', 'Site', ['ignore_request' => true]); $model->setState('params', Factory::getApplication()->getParams()); // Set parameters. Won't work without this filter $model->setState('filter.category_id', $params->get('category_id')); // Category id probably set up in your module as a parameter $model->setState('filter.published', 1); // Only Published articles $model->setState('filter.access', 1); // Set access to public $model->setState('filter.featured', 'only'); // Only featured articles // List Params $model->setState('list.start', 0); $model->setState('list.limit', 4); $articles = $model->getItems(); 请参考组件

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.