В PHP я чайник, только осваиваю. Добавил в PHP тестовый плагин (mod), для добавления нового элемента учебной темы. В качестве шаблога использую вот этот плагин https://github.com/moodlehq/moodle-mod_newmodule. Как я понимаю, открытие содержания происходит из grade.php, при вызове redirect. Необходимо сделать так, чтобы он открывался в новой вкладке.
$param = array('id' => $cm->id,'target' => '_blank');
$row[] = html_writer::link(new moodle_url('view.php', $param),
Имхо, 'target' => '_blank' нужно использовать с классом html_writer, а не moodle_url, как написано у вас. И ещё в html_writer::link атрибуты - это третий параметр, первый - сама ссылка, второй - название ссылки.
Я бы попробовал такую конструкцию:
$row[] = html_writer::link(new moodle_url('view.php', array('id' => $cm->id)), 'название ссылки', array('target' => '_blank'))
Посмотрите lib/outputcomponents.php и lib/weblib.php
Вы абсолютно правы, 'target' => '_blank' нужно использовать с классом html_writer, нашёл пример в исходниках. Переписал свой код вот так:
$param = array('target' => '_blank');if (is_null($cm->visible))
$param['class'] = 'dimmed';
$row[] = html_writer::link(new moodle_url('view.php', array('id' => $cm->id)),$cm->get_formatted_name(),$param);
И всё равно не работает =)))
И всё равно не работает =
Что не работает?
Проверил специально на строке 244
$row[] = html_writer::link(new moodle_url('/admin/settings.php', array('section'=>'filtersetting'.$filter)), get_string('settings'));
из файла admin/filters.php, если изменить её так:
$row[] = html_writer::link(new moodle_url('/admin/settings.php', array('section'=>'filtersetting'.$filter)), get_string('settings'), array('target' => '_blank'));
то ссылка "Настройки" фильтра открывается в новом окне браузера. Единственное, нужно кеш Мудл почистить, чтобы изменения в коде стали действовать.
ЗЫ: непонятно, к какому объекту вы применяете класс "dimmed". К 'target' => '_blank', что ли?
Почему не к ссылке в целом? Есть же тоже примеры в исходниках:
if ($cm->visible) {
$class = '';
} else {
$class = 'dimmed';
}
...............................
$link = html_writer::link(new moodle_url("/mod/$cm->modname/view.php", array("id" => $cm->id)), $name, array('class' => $class));
$row[] = html_writer::link(new moodle_url('view.php', array('id' => $cm->id)), $cm->get_formatted_name(), array('target' => '_blank'));
и в плагине этот код не пашет. Ссылка всё равно открывается в этой же вкладке. Версия мудла 3.1.1.