2014-10-10 72 views
0

我试图使用Moodle数据库中的多选表单元素来生成一个标签列表。我希望这些标签链接到显示过滤结果的相关搜索页面。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

我不确定有一个简单的方法可以用上面的方法来做到这一点。虽然,我砍死在一起,一些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; 
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); 
    } 
}