在joomla 2.5中,有任何内置函数可以从特定类别中获取所有文章。 我不想使用自定义查询从数据库中获取文章。
答案 0 :(得分:3)
我不确定您是如何设置滑块然后回答实际问题的:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*')
->from($db->quoteName('#__content'))
->where($db->quoteName('catid') . ' = 2');
$db->setQuery($query);
$rows = $db->loadObjectList();
foreach ( $rows as $row ) {
echo $row->introtext;
}
有一个内置函数可以使用route.php来获取文章我相信Accordions之类的东西就是这样的,但是对于最简单的方法,请使用上面的内容。
注意:不要忘记将catid
值从2
更改为适合您需要的值。
希望这有帮助
答案 1 :(得分:3)
我会使用文章模型
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();
答案 2 :(得分:1)
我创建了一个小函数来获取类别并返回所有带有自定义字段的文章
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!让我这样做。
答案 3 :(得分:0)
检查一下:/ modules / mod_articles_category,以实现完整(且相当慢)的实现。您可能希望简化:
从#__content中选择introtext,params,其中catid =%s AND state = 1 AND ...
(您可能希望在publish_up字段等上添加一些检查,但如果您对管理已发布/未发布并且不使用publish_up / down感到满意,则不需要执行此操作。)
确保正确实现模块以利用Joomla缓存,即使此查询速度很快,最好避免重复使用adlib。有关模块缓存的更多详细信息,请Read this
答案 4 :(得分:0)
如果要创建模块,则可以创建具有“文章类别”类型的模块。然后,在右侧,单击“过滤选项”,然后选择要显示的类别。