You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Joomla 4自定义模块获取指定ID文章introtext的规范代码需求

获取Joomla 4/5特定文章的Introtext内容

以下是符合Joomla最新编码规范、兼容Joomla 4和5的代码实现,基于官方API而非直接数据库查询:

模块Helper文件(helper.php)

<?php
defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Model\BaseDatabaseModel;

class ModCustomArticleIntroHelper
{
    public static function getArticleIntro($articleId)
    {
        // 加载文章模型
        BaseDatabaseModel::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/models');
        $model = BaseDatabaseModel::getInstance('Article', 'ContentModel', ['ignore_request' => true]);

        // 获取指定ID的文章数据(仅拉取必要字段,优化性能)
        $article = $model->getItem($articleId);

        if (!$article) {
            return null;
        }

        // 触发内容准备事件,解析introtext中的插件语法(如图片、短代码)
        Factory::getApplication()->triggerEvent('onContentPrepare', ['com_content.article', &$article, &$article->params, 0]);

        return $article->introtext;
    }
}

模块模板文件(tmpl/default.php)

<?php
defined('_JEXEC') or die;

// 可替换为模块后台配置的参数值,示例中直接指定文章ID
$targetArticleId = 123;
$introContent = ModCustomArticleIntroHelper::getArticleIntro($targetArticleId);

if ($introContent) {
    echo $introContent;
} else {
    echo '<p>目标文章不存在或无简介内容</p>';
}

关键说明

  • 使用官方ContentModelArticle模型处理文章数据,自动兼容Joomla 4/5的权限控制、状态判断
  • 调用onContentPrepare事件确保introtext中的内容插件正常渲染,避免原始代码输出
  • 可将$targetArticleId改为模块参数,通过后台表单让用户配置目标文章ID,提升模块灵活性

内容的提问来源于stack exchange,提问作者user1390379

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:57:11