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

HydePHP中如何在Blade页面引入Markdown代码片段?

在HydePHP的Blade文件中引入并解析Markdown片段

完全可以实现你想要的效果,下面是具体的实现步骤:

1. 自定义Blade指令

HydePHP基于Laravel生态,你可以通过扩展Blade来创建@mdsnippet指令,用来读取Markdown文件并解析成HTML。

在项目的app/Providers/AppServiceProvider.php文件的boot方法中添加以下代码:

use Hyde\Framework\Services\Markdown\MarkdownConverter;
use Illuminate\Support\Facades\Blade;

public function boot()
{
    Blade::directive('mdsnippet', function ($path) {
        // 处理传入的路径参数,去除引号
        $path = trim($path, '\'"');
        // 拼接完整文件路径(假设_snippets目录在项目根目录)
        $filePath = base_path("_snippets/{$path}");
        
        if (!file_exists($filePath)) {
            return '<!-- Markdown片段未找到: ' . $path . ' -->';
        }
        
        // 读取Markdown内容
        $markdown = file_get_contents($filePath);
        // 调用HydePHP的Markdown转换器解析内容
        $converter = app(MarkdownConverter::class);
        $html = $converter->convert($markdown);
        
        // 返回解析后的HTML,确保原生输出不被转义
        return '{!! ' . var_export($html, true) . ' !!}';
    });
}

2. 使用自定义指令

现在你可以在Blade文件中按预期使用@mdsnippet指令:

<div class="accordion-content">
    @mdsnippet('common/some-content-for-multiple-pages.md')
</div>

注意路径是相对于_snippets目录的,无需添加开头的下划线。

3. 效果验证

当HydePHP构建站点时,会自动将Markdown内容解析为对应HTML,最终输出结果和你期望的一致:

<div class="accordion-content">
    <h2>here's some content</h2>
</div>

补充说明

  • 确保项目根目录下的_snippets目录存在,且Markdown文件有正确的读写权限。
  • 若需要调整Markdown解析规则,可参考HydePHP的Markdown配置项,或在转换器中自定义解析参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:18:15