0

在 joomla 2.5 中是否有任何内置函数可以从特定类别中获取所有文章。我不想使用自定义查询从数据库中获取文章。

4

5 回答 5

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();
于 2013-10-08T12:03:07.540 回答
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适合您需要的值。

希望这可以帮助

于 2013-10-08T08:13:16.193 回答
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! 让我这样做。

于 2018-08-06T20:03:47.237 回答
0

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

于 2013-10-09T06:37:47.213 回答
0

看看这个:/modules/mod_articles_category 一个完整的(而且相当慢的)实现。您可能想让它更简单:

选择 introtext, params from #__content where catid=%s AND state=1 AND ...

(您可能希望在 publish_up 字段等上添加一些检查,但如果您对管理已发布/未发布并且不使用 publish_up / down 感到满意,则不需要这样做)。

确保您正确实现模块以利用 Joomla 缓存,即使此查询很快,最好避免即兴重复。 阅读本文以获取有关模块缓存的更多详细信息

于 2013-10-08T07:48:06.130 回答