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
相关产品推荐
相关产品推荐

