我尝试在Moodle数据库中使用多选表单元素来生成标记列表。我希望这些标签链接到显示过滤结果的相关搜索页面。
以下模板代码适用于单个标记的项目,但对于包含多个标记的项目则无效:
<a href='/view.php?mode=list&filter=[[Tags]]'>[[Tags]]</a>
有没有办法在多选中循环项目?类似的东西:
[[for Tag in Tags]] <a href='/view.php?mode=list&filter=[[Tag]]'>[[Tag]]</a> [[/for]]
答案 0 :(得分:0)
我不确定使用上述方法有一种简单的方法可以做到这一点。虽然,我已经破解了一些javascript来完成同样的事情:
function init() {
var tags = document.getElementsByClassName('tags');
for (var i=0; i<tags.length; i++) {
tags[i].innerHTML = tags[i].innerHTML.replace(/\w[\w\s]+?(?=<br>)/g, function(n) {
return "<a href='view.php?d=16&mode=list&perpage=10&filter=1&f_81%5B%5D="+ escape(n) + "'>" + n + "</a>";
});
}
};
window.onload = init;
答案 1 :(得分:0)
假设你有edit_form.php
这样的东西
defined('MOODLE_INTERNAL') || die;
require_once($CFG->libdir . '/formslib.php');
class edit_form extends moodleform {
public function definition() {
$mform =& $this->_form;
$options = array('red' => 'red', 'blue' => 'blue', 'green' => 'green');
$select = $mform->addElement('select', 'tags', get_string('tags'), $options);
$select->setMultiple(true);
$this->add_action_buttons(false, get_string('submit'));
}
}
然后在edit.php
文件
require_once(dirname(__FILE__) . '/edit_form.php');
...
$mform = new edit_form();
$mform->display();
if ($formdata = $mform->get_data()) {
foreach ($formdata->tags as $tag) {
$url = new moodle_url('/view.php', array('mode' => 'list', 'tag' => $tag));
echo html_writer::link($url, $tag);
}
}