我将使用文章模型
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();
我不确定您如何设置滑块,但是要回答您的实际问题:
有一个内置的功能,可以使用路线来获取文章。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;
}
用语
$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。
阅读此如果您创建一个模块,则可以创建一个具有类型文章类别的模块。然后,在右侧,单击过滤选项,然后选择要显示的类别。
在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();
请参考组件