Можно ли создать лэндинг в обход движка?

Аватар пользователя Alex1989_drupal Alex1989_drupal 18 декабря 2019 в 19:34

Всем привет. Есть собственные типы материалов и есть 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, если я хочу отключить?

Лучший ответ

Аватар пользователя Andruxa Andruxa 18 декабря 2019 в 20:24
1

Да, можно.
в template.php темы:

function THEMENAME_preprocess_html(&$vars) {
  $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, и резвитесь там так хотите:

<!DOCTYPE ...
<html ...
<head>
...
</head>
<body>
...
</body>
</html>

Комментарии

Аватар пользователя Alex1989_drupal Alex1989_drupal 18 декабря 2019 в 19:58

А можно пример, как с hook_js_alter вырезать misc/drupal.js или misc/jquery-extend-3.4.0.js
Это в шаблоне делаете?
В рамках Друпал - потому, что нужно чтобы это было в одной структуре сайта, который на Друпал.

Аватар пользователя Alex1989_drupal Alex1989_drupal 18 декабря 2019 в 20:06

Не поулчается. Попробовал пример из комментария:

<?php    
function general_js_alter(&$javascript) {
   
$test_js_path path_to_theme() . '../../../../misc/drupal.js';
   unset(
$javascript[$test_js_path]);  
}
;
?>
Аватар пользователя bumble bumble 18 декабря 2019 в 20:21

Значит, еще не все ошибки исправили.
В качестве подсказки - ищите про имплементацию хуков в системе Друпал.

Аватар пользователя Andruxa Andruxa 18 декабря 2019 в 20:24
1

Да, можно.
в template.php темы:

function THEMENAME_preprocess_html(&$vars) {
  $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, и резвитесь там так хотите:

<!DOCTYPE ...
<html ...
<head>
...
</head>
<body>
...
</body>
</html>
Аватар пользователя Alex1989_drupal Alex1989_drupal 18 декабря 2019 в 20:28

Здесь нужно что-то еще менять, кроме THEMENAME и nid == ?
Создал шаблон html--landing--page.tpl.php в папке темы templates, почистил кэш, но так же не работает. Скрипты остались...

Аватар пользователя Andruxa Andruxa 18 декабря 2019 в 20:49

нет, остальное все так же.
Возможно, приоритет у названий шаблонов неверный.
Попробуйте
$vars['theme_hook_suggestions'] = array('html__landing__page');
вместо
$vars['theme_hook_suggestions'][] = 'html__landing__page';

Аватар пользователя Alex1989_drupal Alex1989_drupal 18 декабря 2019 в 21:15

Кеш сбрасывал. была ошибка в названии html--landing--page.tpl.php)
Спасибо, Вы мне очень помогли!
Только теперь custom скрипты не загружается, пишет net::ERR_ABORTED 403 (Forbidden) (на локалхосте тестирую)

Аватар пользователя Orion76 Orion76 24 декабря 2019 в 0:01

Проще включить отладку twig:
https://www.drupal.org/docs/8/theming/twig/debugging-twig-templates#s-en...

в отладочных сообщениях(в html коде страницы перед тегом html) будет все написано, какой шаблон работает в данный момент, и какие - в кандидатах.

Аватар пользователя sas@drupal.org sas@drupal.org 19 декабря 2019 в 11:12

>Можно ли сделать так, чтобы на отдельной ноде [NID] не подключались Друпаловские Jquery и прочее?
Можно см. например
update.php

Аватар пользователя iehon iehon 19 декабря 2019 в 17:09

была такая проблема несколько раз.
решениt которым пользовался - корректировка кодов одностраничкика под скрипты друпала. - замена имен конфликтующих функций.
конфликты js можно увидеть в консоли по F12
кашерный способ не трогать скрипты друпала, а фиксить скрипты одностраничника.

Аватар пользователя ewolf ewolf 21 декабря 2019 в 10:48

Делаешь свой лэндинг в виде обычной html страницы и скрипты подключаешь как тебе удобно.
Размещаешь в каталоге/подкаталоге drupal. Связь со страницами сайта на drupal-е обычными ссылками.

Аватар пользователя Pixelbroks Pixelbroks 23 декабря 2019 в 16:22
1

Зачем весь этот гемор ?
1. Поддомен
2. Подкаталог внутри сайта
3. Алиас если потребуется.
4. Настроенный settings под нужные поля БД.

Проще говоря банальный мультисайтинг . Самый простой .