Вы здесь

Как подгружать скрипт syntaxhighlighter.js Только на страницах определенных типов нод?

0

подскажите как отключить загрузку этого скрипта для всех страниц, кроме материалов типа module

Версия Drupal: 
7.x
Категория: 
Javascript
Вопрос задан 16.06.2015 - 00:49

Ответы

1

в template.php темы.

function YOURTHEME_preprocess_node(&$vars) {
  if ($vars['node']->type == 'photogallery') {
    $theme_path = drupal_get_path('theme', 'your_theme');
    drupal_add_js($theme_path . '/your-js-file.js', 'theme');
    drupal_add_css($theme_path . '/your-css-file.css', 'theme');
  }
}
Ответ дан 16.06.2015 - 06:11

соответственно, вначале отключить в теме:

/**
 * Implements hook_js_alter().
 */
function tlito_theme_js_alter(&$js) {
  if (arg(0) != 'node') {
    unset($js['sites/all/libraries/syntaxhighlighter/scripts/shCore.js']);
    unset($js['sites/all/libraries/syntaxhighlighter/scripts/shAutoloader.js']);
    unset($js['sites/all/modules/syntaxhighlighter/syntaxhighlighter.min.js']);
    unset($js['images/syntaxhighlighter.autoloader.js']);
  }
}

но с вашим кодом он подгружается везде, потому что препроцесс ноде запускается и на страницах категорий. мне надо в моем коде сделать проверку типа страницы.

в итоге сделал так и все работает: добавил только такой код:

function tlito_theme_js_alter(&$js) {
  if (arg(0) != 'node') {
    unset($js['sites/all/libraries/syntaxhighlighter/scripts/shCore.js']);
    unset($js['sites/all/libraries/syntaxhighlighter/scripts/shAutoloader.js']);
    unset($js['sites/all/modules/syntaxhighlighter/syntaxhighlighter.min.js']);
    unset($js['images/syntaxhighlighter.autoloader.js']);
  }
}

Анализ: код убирает загрузку скриптов на всех страницах, кроме страниц материалов (где эти скрипты используются и очень важны).

Проверка страница это материала или нет - строка if (arg(0) != 'node')
Если надо проверку типа материала то вот так:

if($node->type =='my_material')
Комментарий оставлен 18.06.2015 - 21:01

кстати это не до конца работает, потому что этот модуль еще и такой добавляет код на все страницы:

<script type="text/javascript">
<!--//--><![CDATA[//><!--
SyntaxHighlighter.defaults.toolbar = false;
//--><!]]>
</script>

и это вызывает ошибку, так как скрипты не подгружаются, и эта строка не работает.
как лучше удалить эту строку в своем файле template.php ?

Комментарий оставлен 18.06.2015 - 21:01

эта строка была прописана в админке модуля мною же, чтобы удалить вопросительный знак тулбар:

SyntaxHighlighter.defaults.toolbar = false;

поэтому удалил эту строку и сделал в css скрытие блока toolbar.

Комментарий оставлен 19.06.2015 - 00:01