2014-10-10 61 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); 
    } 
}