Всем привет. Есть собственные типы материалов и есть basic page для простых html страниц-лэндингов и переопределения их через шаблон (landings/page--node--nid.tpl)
Зачем?
Потому что скрипты движка и версии jquery конфликтуют между собой.
Статичные html лэндинги работают, а при переносе на хостинг нет.
Как я добавляю скрипт:
<?php drupal_add_js(path_to_theme() . '/scripts/app-name.js');?>
Мне на отдельной странице функционал движка не нужен. Это должна быть статичная html со скриптами. А переписывать их под Друпал, и чтоб они еще не конфликтовали времени и желания нет.
Вопрос:
Можно ли сделать так, чтобы на отдельной ноде [NID] не подключались Друпаловские Jquery и прочее?
Страница практически живет своей отдельной жизнью, если переопределить шаблон (landings/page--node--nid.tpl), однако стандартный код друпала ломает некоторые скрипты
Может есть функция типа unset, если я хочу отключить?
Комментарии
1. hook_js_alter
2. Раз уж ничего от движка не нужно - в чем необходимость делать страницу в рамках Друпал?
А можно пример, как с hook_js_alter вырезать misc/drupal.js или misc/jquery-extend-3.4.0.js
Это в шаблоне делаете?
В рамках Друпал - потому, что нужно чтобы это было в одной структуре сайта, который на Друпал.
Это в кастомном модуле
А чем примеры со страницы дока не устраивают?
Не поулчается. Попробовал пример из комментария:
<?php
function general_js_alter(&$javascript) {
$test_js_path = path_to_theme() . '../../../../misc/drupal.js';
unset($javascript[$test_js_path]);
}
;?>
Уверен, Вы поймете в чем ошибка.
<?php= base_path() . '/misc/drupal.js'; ?>
тоже не работаетЗначит, еще не все ошибки исправили.
В качестве подсказки - ищите про имплементацию хуков в системе Друпал.Да, можно.
в template.php темы:
$node = menu_get_object();
if (!empty($node->nid) && $node->nid == 123) {
$vars['theme_hook_suggestions'][] = 'html__landing__page';
//если надо передать в темплейт ноду:
$vars['node'] = $node;
}
}
затем создаете темплейт html--landing--page.tpl.php, и резвитесь там так хотите:
<html ...
<head>
...
</head>
<body>
...
</body>
</html>
Здесь нужно что-то еще менять, кроме THEMENAME и nid == ?
Создал шаблон html--landing--page.tpl.php в папке темы templates, почистил кэш, но так же не работает. Скрипты остались...
нет, остальное все так же.
Возможно, приоритет у названий шаблонов неверный.
Попробуйте
$vars['theme_hook_suggestions'] = array('html__landing__page');
вместо
$vars['theme_hook_suggestions'][] = 'html__landing__page';
Все равно грузится обычная чистая нода со всеми drupal js-ами...
Странно. А кеш как сбрасывали?
Кеш сбрасывал. была ошибка в названии html--landing--page.tpl.php)
Спасибо, Вы мне очень помогли!
Только теперь custom скрипты не загружается, пишет net::ERR_ABORTED 403 (Forbidden) (на локалхосте тестирую)
А нет, все ок. Я сегодня совсем че-то рассеян...
Проще включить отладку twig:
https://www.drupal.org/docs/8/theming/twig/debugging-twig-templates#s-en...
в отладочных сообщениях(в html коде страницы перед тегом html) будет все написано, какой шаблон работает в данный момент, и какие - в кандидатах.
В семёрке? Вряд ли проще. Его сначала надо прикрутить к семёрке.
>Можно ли сделать так, чтобы на отдельной ноде [NID] не подключались Друпаловские Jquery и прочее?
Можно см. например
update.php
была такая проблема несколько раз.
решениt которым пользовался - корректировка кодов одностраничкика под скрипты друпала. - замена имен конфликтующих функций.
конфликты js можно увидеть в консоли по F12
кашерный способ не трогать скрипты друпала, а фиксить скрипты одностраничника.
упс.. уже было..
Делаешь свой лэндинг в виде обычной html страницы и скрипты подключаешь как тебе удобно.
Размещаешь в каталоге/подкаталоге drupal. Связь со страницами сайта на drupal-е обычными ссылками.
Зачем весь этот гемор ?
1. Поддомен
2. Подкаталог внутри сайта
3. Алиас если потребуется.
4. Настроенный settings под нужные поля БД.
Проще говоря банальный мультисайтинг . Самый простой .