如何从特定类别joomla获取文章

时间:2013-10-08 05:16:17

标签: php mysql joomla

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

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)

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