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

基于PHP+Bootstrap的FAQ项目:实现文件夹驱动的动态列表需求

嘿,这个需求太实用了——让非技术人员不用碰代码就能更新FAQ,完美降低维护门槛。我来给你梳理一下怎么用PHP循环实现自动检测这些数字文件夹,动态生成对应的Bootstrap折叠面板:

核心思路

我们需要遍历指定目录下的数字命名文件夹,对每个合法的文件夹(包含question.txt和answer.txt),自动生成你原来写的那套Bootstrap accordion结构,全程不用手动添加单条FAQ代码。

完整实现代码

直接替换你原来的单条FAQ代码就行:

<div id="accordion" role="tablist">
    <?php
    // 定义FAQ根目录(根据你的实际路径调整)
    $faqRootDir = '../faqs/professionals/eligibility-conditions/';
    
    // 筛选出所有数字开头的文件夹(仅获取目录,排除文件)
    $faqFolders = glob($faqRootDir . '[0-9]*', GLOB_ONLYDIR);
    
    // 自然排序:保证1、2、10的顺序,而不是1、10、2
    natsort($faqFolders);
    
    // 遍历每个FAQ文件夹
    foreach ($faqFolders as $folder) {
        // 提取文件夹名(也就是FAQ的数字标识)
        $faqNumber = basename($folder);
        // 拼接对应的文件路径
        $questionPath = $folder . '/question.txt';
        $answerPath = $folder . '/answer.txt';
        
        // 跳过缺失文件的文件夹,避免页面报错
        if (!file_exists($questionPath) || !file_exists($answerPath)) {
            continue;
        }
    ?>
    <div class="card">
        <div class="card-header d-flex w-100 justify-content-between" role="tab" id="heading<?php echo $faqNumber; ?>">
            <h5 class="mb-0">
                <a data-toggle="collapse" href="#collapse<?php echo $faqNumber; ?>" role="button" aria-expanded="false" aria-controls="collapse<?php echo $faqNumber; ?>">
                    <?php include($questionPath); ?>
                </a>
            </h5>
            <small><?php echo $faqNumber; ?></small>
        </div>
        <div id="collapse<?php echo $faqNumber; ?>" class="collapse" role="tabpanel" aria-labelledby="heading<?php echo $faqNumber; ?>" data-parent="#accordion">
            <div class="card-body">
                <div><p><?php include($answerPath); ?></p></div>
            </div>
        </div>
    </div>
    <?php } ?>
</div>

关键细节说明

  • 文件夹筛选:glob()函数精准匹配数字开头的文件夹,如果你需要严格限制只能是纯数字文件夹,可以后续加正则验证$faqNumber,比如if (!ctype_digit($faqNumber)) continue;。
  • 自然排序:natsort()是核心,它能按照人类习惯的数字顺序排序,避免出现10排在2前面的尴尬情况。
  • 容错处理:检查文件是否存在,防止更新者漏传question.txt或answer.txt导致页面报错,直接跳过有问题的文件夹即可。
  • 唯一ID生成:用FAQ的数字编号动态生成headingX和collapseX,保证每个折叠面板的ID唯一,避免Bootstrap折叠功能冲突。

现在更新者只要在FTP的对应目录下新增数字命名的文件夹,里面放好question.txt和answer.txt,系统就会自动把它加到FAQ列表里,完全不用碰代码~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:05:53