Можно ли настроить вставку скрипта в ноду или нужно редактировать шаблон?

Главные вкладки

Аватар пользователя univerico univerico 17 июля 2019 в 11:19

Здравствуйте! Мне нужно добавить скрипт на страницу, точнее на множество страниц (сотни). При ручном создании добавляю в режиме "источник" с форматом ввода Full HTML.
А как его добавить при импорте ноды с feeds, чтобы он работал именно как скрипт?
Ближайшая тема вот эта , но в ней ничего про импорт в режим источника так и не решилось.
Так как скрипт одинаков для множества страниц, то как альтернативу вижу вариант с созданием отдельного типа материала и вставление скрипта в шаблон для этого типа, но все же хотелось бы иметь возможность непосредственно в ноду вставлять.

Лучший ответ

Аватар пользователя ivnish ivnish 17 июля 2019 в 11:21
1

Скрипт - это js файл?
Не забывайте указывать версию drupal

Комментарии

Аватар пользователя univerico univerico 17 июля 2019 в 15:49

Версия Друпал 7, 8
Это будет скрипт для улучшенного отображения формул с Latex, либо готовый какой-то, либо самопис, я еще пока думаю над этим и пока точно не знаю, какой, но, так как страниц с ними много и сами страницы хочу импортировать, то скрипт нужно либо в тему добавлять (для определенного типа, чтобы они зря не грузились на страницах там, где не будет формул), либо в каждую нужную ноду вставлять при импорте.

Аватар пользователя gun_dose gun_dose 17 июля 2019 в 11:36
2

Не занимайтесь ерундой. Как правило, на всех страницах body имеет классы, по которым можно определить, что это за тип ноды. Например, на странице, которую вы сейчас смотрите, это класс "node-type-blog". Поэтому самое простое и очевидное решение добавить ваш скрипт в основной скрипт темы следующим образом:

if ($('body').hasClass('node-type-blog')) {
  // а вот тут ваш скрипт.
}

По аналогии можно дополнить или изменить логику применения скрипта.

Аватар пользователя univerico univerico 17 июля 2019 в 15:49

Спасибо. Да, если не получится при импорте скрипт вставлять, то тогда намного удобнее, как Вы рекомендуете.

Аватар пользователя univerico univerico 17 июля 2019 в 16:07

А если, чтобы не создавать отдельный тип материала, я создам тип поля с тегами из терминов таксономии и буду страницы, на которых нужно добавить скрипт этим тегом отмечать, то как тогда условие сделать "Если есть такой-то тэг, то..... "скрипт" ?

Аватар пользователя EvgenySorokin EvgenySorokin 17 июля 2019 в 20:29
1

В сообщении https://drupal.ru/node/139965#comment-729560 вам написали хороший вариант, если у вас один тип материала, то так и сделайте.
Если материалы разного типа, и/или этот js-скрипт может прикрепляться к разным типам материалов, а еще и/или выборочно к нодам, то можно решить создав отдельное поле типа чекбокс (если отмечен, то скрипт вставляется и исполняется). Возможно, что под "тегами" вы примерно тоже самое имели ввиду.

Это поле через feeds должно быть можно отметить. После чего, в template.php или модуле делаете проверку на наличие поля и наличие проставленной галочки, и функцией drupal_add_js добавляете на страницу скрипт.
В случае с тегом все тоже самое, все равно проверять поле, значение.

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

Теоретически, можно все и на js сделать, вообще без php, но даже дольше может получиться. Нужно будет как-то отметить классом этот "тег", потом проверять его наличие на странице. Если совсем колхоз - сделать поле с чекбоксом, вывести его, скрыть через css, и на js проверять его.

Аватар пользователя gun_dose gun_dose 17 июля 2019 в 20:47
1

Наличие тэга, да и вообще любого селектора проверяется так:

if ($(селектор).length) {
// какой-то код
}

То есть, если на странице нет элемента, соответствующего указанному селектору, то jQuery возвратит объект нулевой длины.