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

Drupal 7 Quiz模块7.x-5.0-alpha9自定义测验报告模板不显示问题标题求助

解决方案:修复Drupal 7 Quiz模块自定义报告模板中问题标题不显示的问题

我之前在使用Quiz模块7.x-5.0-alpha9时也碰到过类似的模板变量问题,给你几个针对性的解决办法:

1. 确认模板中使用了正确的变量名

首先检查你的quiz-report-form.tpl.php文件,确保在遍历问题的循环里调用了正确的问题标题变量。这个版本的Quiz模块在报告模板中,单个问题的标题通常存储在$question['title']或者$question->title中(取决于预处理逻辑)。

举个例子,正确的循环渲染代码应该类似这样:

<?php foreach ($questions as $question): ?>
  <div class="quiz-question">
    <!-- 渲染问题标题 -->
    <h3><?php print check_plain($question['title']); ?></h3>
    <!-- 其他问题内容渲染 -->
    <?php print render($question['answer']); ?>
  </div>
<?php endforeach; ?>

如果之前你用的是旧版本的变量名(比如$question_title),就会导致标题不显示,换成对应版本的变量名即可。

2. 添加主题预处理函数传递变量

如果模板里调用正确但还是没显示,可能是模块的预处理没有把标题变量传递到模板中。你可以在当前主题的template.php文件中添加自定义预处理函数,手动把问题标题赋值到模板变量里:

function YOUR_THEME_NAME_preprocess_quiz_report_form(&$variables) {
  // 遍历所有问题,确保标题变量存在
  if (!empty($variables['questions'])) {
    foreach ($variables['questions'] as &$question) {
      // 如果title字段不存在,从实体中获取
      if (!isset($question['title']) && isset($question['question_entity'])) {
        $question['title'] = $question['question_entity']->title;
      }
    }
  }
}

记得把YOUR_THEME_NAME替换成你实际使用的机器名主题名称,修改后清空Drupal的缓存(配置性能页面清空缓存)。

3. 修复Alpha版本的模块小bug

因为你用的是alpha测试版本,可能存在变量传递的小问题。你可以临时修改Quiz模块的quiz.report.inc文件(通常在modules/quiz/reports/目录下),找到处理报告的函数,确保问题标题被正确赋值到模板数组中。

比如找到类似下面的代码段,检查是否有'title'字段的赋值:

// 示例代码,具体以模块文件为准
$question_data = array(
  'title' => $question->title,
  'answer' => $answer_output,
  // 其他字段...
);

如果没有'title'字段,手动添加上去,然后清空缓存测试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:28:44