Здравствуйте! Мне нужно добавить скрипт на страницу, точнее на множество страниц (сотни). При ручном создании добавляю в режиме "источник" с форматом ввода Full HTML.
А как его добавить при импорте ноды с feeds, чтобы он работал именно как скрипт?
Ближайшая тема вот эта , но в ней ничего про импорт в режим источника так и не решилось.
Так как скрипт одинаков для множества страниц, то как альтернативу вижу вариант с созданием отдельного типа материала и вставление скрипта в шаблон для этого типа, но все же хотелось бы иметь возможность непосредственно в ноду вставлять.
Можно ли настроить вставку скрипта в ноду или нужно редактировать шаблон?
Главные вкладки
Лучший ответ
1
Скрипт - это js файл?
Не забывайте указывать версию drupal
Комментарии
Скрипт - это js файл?
Не забывайте указывать версию drupal
Версия Друпал 7, 8
Это будет скрипт для улучшенного отображения формул с Latex, либо готовый какой-то, либо самопис, я еще пока думаю над этим и пока точно не знаю, какой, но, так как страниц с ними много и сами страницы хочу импортировать, то скрипт нужно либо в тему добавлять (для определенного типа, чтобы они зря не грузились на страницах там, где не будет формул), либо в каждую нужную ноду вставлять при импорте.
Не занимайтесь ерундой. Как правило, на всех страницах body имеет классы, по которым можно определить, что это за тип ноды. Например, на странице, которую вы сейчас смотрите, это класс "node-type-blog". Поэтому самое простое и очевидное решение добавить ваш скрипт в основной скрипт темы следующим образом:
// а вот тут ваш скрипт.
}
По аналогии можно дополнить или изменить логику применения скрипта.
Спасибо. Да, если не получится при импорте скрипт вставлять, то тогда намного удобнее, как Вы рекомендуете.
А если, чтобы не создавать отдельный тип материала, я создам тип поля с тегами из терминов таксономии и буду страницы, на которых нужно добавить скрипт этим тегом отмечать, то как тогда условие сделать "Если есть такой-то тэг, то..... "скрипт" ?
В сообщении https://drupal.ru/node/139965#comment-729560 вам написали хороший вариант, если у вас один тип материала, то так и сделайте.
Если материалы разного типа, и/или этот js-скрипт может прикрепляться к разным типам материалов, а еще и/или выборочно к нодам, то можно решить создав отдельное поле типа чекбокс (если отмечен, то скрипт вставляется и исполняется). Возможно, что под "тегами" вы примерно тоже самое имели ввиду.
Это поле через feeds должно быть можно отметить. После чего, в template.php или модуле делаете проверку на наличие поля и наличие проставленной галочки, и функцией drupal_add_js добавляете на страницу скрипт.
В случае с тегом все тоже самое, все равно проверять поле, значение.
Если знаний совсем нет, то проще отдать пару копеек за сделанное решение, на пальцах, не видя сайта, готовое решение для копи-паста сложновато написать.
Теоретически, можно все и на js сделать, вообще без php, но даже дольше может получиться. Нужно будет как-то отметить классом этот "тег", потом проверять его наличие на странице. Если совсем колхоз - сделать поле с чекбоксом, вывести его, скрыть через css, и на js проверять его.
Наличие тэга, да и вообще любого селектора проверяется так:
// какой-то код
}
То есть, если на странице нет элемента, соответствующего указанному селектору, то jQuery возвратит объект нулевой длины.
Скрипты подключать для места потребления по хуку _preprocess или к полям через #attached