Topic: Подключение скриптов с помощью функции add_js
Функция add_js позволяет подключать файлы содержащие js & jQuery скрипты, а также подгружать скрипты из строки. Рассмотрим подробнее возможности и параметры этой функции, она находится в файле
/include/loader.php
// Add JS url to load
public function add_js($data = NULL, $options = NULL)
{
$return = ($hook = get_hook('ld_fn_add_js_start')) ? eval($hook) : null;
if ($return !== null)
return $return;
if (is_null($options) || !is_array($options))
{
$options = array();
}
// Default options
$default_options = array(
// url, inline
'type' => array(
'default' => 'url',
),
//
'async' => array(
'default' => false,
),
//
'weight' => array(
'default' => 100,
),
//
'group' => array(
'default' => FORUM_JS_GROUP_DEFAULT,
),
//
'every_page' => array(
'default' => false,
),
//
'defer' => array(
'default' => false,
),
//
'preprocess' => array(
'default' => true,
)
);
$length = count($default_options);
$keys = array_keys($default_options);
for ($i = 0; $i < $length; $i++)
{
$key = $keys[$i];
if (!isset($options[$key]))
{
$default_options[$keys[$i]] = $default_options[$keys[$i]]['default'];
continue;
}
$default_options[$keys[$i]] = $options[$key];
}
// Check data — url or inline code
$default_options['data'] = forum_trim($data);
if (empty($default_options['data']) || utf8_strlen($default_options['data']) < 1)
{
return FALSE;
}
// Tweak weight
$default_options['weight'] += count($this->libs['js']) / 1000;
($hook = get_hook('ld_fn_add_js_pre_merge')) ? eval($hook) : null;
// Add to libs
if ($default_options['type'] != 'inline')
{
$this->libs['js'][$default_options['data']] = $default_options;
}
else
{
$this->libs['js'][] = $default_options;
}
($hook = get_hook('ld_fn_add_js_end')) ? eval($hook) : null;
return $this->libs['js'];
}
Для загрузки файла скриптов, например из корня сайта используется так:
$forum_loader->add_js($base_url.'/jquery.js', array('type' => 'url', 'group' => FORUM_JS_GROUP_COUNTER));
где тип подключения по ссылке:
'type' => 'url'
Тип подключения может быть и из строки, например так:
$my_variable = "$('#navprofile').add('#subscript').add('#navregister').add('#navlogin').add('#navlogout').insertAfter('#visit-links span:last-child');
var mnlst = $('#visit-links li');
for (x=0; x<mnlst.length; x++) {
$(mnlst[x]).replaceWith($('<span>').html($(mnlst[x]).html()));
}";
$forum_loader->add_js($my_variable, array('type' => 'inline', 'weight' => 50, 'group' => FORUM_JS_GROUP_SYSTEM));
где как видим тип подключения по ссылке, то есть:
'type' => 'inline'
$matches[2]