#moodle
#moodle
Вопрос:
как загрузить внешний JS-файл в moodle? используя moodle api, то есть библиотеки moodle..
Ответ №1:
В Moodle 2.0 я всегда использовал $PAGE->requires->js()
.
Для начала сделайте $PAGE
доступным ваш код, выполнив:
require_once($CFG->libdir . '/pagelib.php');
global $PAGE;
и затем в вашем коде:
$PAGE->requires->js( new moodle_url($CFG->wwwroot . '/blocks/your_block/script.js') );
Требуется поместить moodle_url()
вокруг вашего пути!
Комментарии:
1. Чем использование «$PAGE-> requires-> js()» лучше, чем прямое добавление «<script src=blabla>» в php темы moodle?
2. @iankit это лучше (и позволяет страницам загружаться намного быстрее) по нескольким причинам: а) Это позволяет избежать повторной загрузки одного и того же скрипта — если все четыре разных блока используют jquery, нет необходимости загружать библиотеку jquery четыре раза. б) Он может вообще не загружаться, пока это не понадобится — ваш блок, вероятно, вообще не будет нажат при большинстве загрузок страницы. c) Он загружает javascript после рендеринга страницы, поэтому пользователь не получает пустой экран в течение нескольких секунд, пока загружаются все файлы javascript. d) Moodle объединяет несколько файлов javascript, получая их в одном запросе, а не в 20.
Ответ №2:
<?php
//you have load $CFG , firstly check in config.php
//after that print_r($CFG);
//also you can use $CFG->wwwroot;
require ('../config.php');
require_once ($CFG->dirroot.'/login/lib.php');
//and then in your code:// after that
echo $OUTPUT->header(); ?>
<script src="<?php $CFG->wwwroot ?>/js/jquery-1.4.4.min.js" type="text/javascript"></script>
<script src="<?php $CFG->wwwroot ?>js/jquery.validationEngine-en.js" type="text/javascript" charset="utf-8"></script>
<script src="<?php $CFG->wwwroot ?>js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"></script>
<?php $PAGE->requires->js(new moodle_url($CFG->wwwroot.'/blocks/your_block/script.js')); ?>
Комментарии:
1. не могли бы вы подробнее объяснить, куда поместить js-файл?