У меня есть изображения SVG, которые добавляются к узлам через svg_image_field модуль. В них есть внутренние ссылки /load-parts-ajax/{nid}
. Путь ведет к просмотру всплывающей страницы контента с этим путем /загрузить-части-ajax/%
. Я пытаюсь открыть представление в цветовом поле. У меня есть это в моей реализации в Drupal 7, которая отлично работает. Мы установили модуль colorbox_node и использовали colorbox-узел
класс, и это было очень легко.
Однако для Drupal 9 у меня установлен colorbox и его библиотека, и я пробовал colorbox_load, с ng_lightbox, и я добавил путь к разрешенным путям в конфигурации без кубиков. я тоже пытаюсь colorbox_simple_load позвонить цветная загрузка
класс без везения.
(Я могу взломать рендеринг всей страницы просмотра сайта и все путем набивки cboxэлемент
после урока, но я уверен, что это неправильно.)
Вот .js:
(функция ($, Друпал) {
Drupal.behaviors.MY_MODULE = {
прикрепить: функция (контекст, настройки) {
$(документ).ajaxStop(функция() {
setTimeout(function () { //необходимо добавить короткую паузу для повторного запуска colorbox
$(".view-MY-POP-UP-VIEW", контекст).once().flexslider({
анимация: «горки»,
слайд-шоу: ложь,
касание: ложное,
анимацияЦикл: ложь,
});
}, 500);
});
$(".field--name-field-MY-IMAGE .svg_a", context).each(function(index, item) {
$(item).attr("href", $(item).attr("xlink:href"));
$(item).attr("внутренняя ширина данных", "304");
$(item).attr("внутренняя высота данных", "532");
$(item).attr("class", "colorbox-load");
});
}
};
})(jQuery, Drupal);
И вот как я называю свои библиотеки .js: одна для отображения SVG в представлении, другая для отображения узла.
/**
* Реализует hook_views_pre_render().
*/
функция MY_views_pre_render(\Drupal\views\ViewExecutable $view) {
if (isset($view) && $view->storage->id() == 'MY_VIEW') {
$view->element['#attached']['library'][] = 'MY_MODULE/MY-LIBRARY';
}
}
/**
* Реализует hook_preprocess_node().
*/
функция MY_preprocess_node(&$variables) {
$узел = $переменные['узел'];
если ($node->bundle() == 'МОЙ_УЗЕЛ') {
$variables['#attached']['library'][] = 'MY_MODULE/MY-LIBRARY';
}
}
Атрибуты из файла .js добавляются к ссылкам на изображения в обоих случаях, но цветная загрузка
class, похоже, не распознается, поскольку ссылки просто открывают вид в новом окне.
Вот разметка, которая выглядит идентично рабочей разметке drupal 7 (кроме использования класса colorbox-load вместо colorbox-node)
<a id="e3_hyperlink" xlink:title="" xlink:href="/load-parts-ajax/251" target="_blank" class="colorbox-load" href="/load-parts-ajax/251" data-inner-width="304" data-inner-height="532">
Итак, прежде чем я по ошибке открою отчет об ошибке, есть ли что-то простое, что мне не хватает для реализации цветная загрузка
class правильно, или что-то подобное должно работать так же, как оно есть?
РЕДАКТИРОВАТЬ:
colorbox_simple_load имеет это на странице проекта:
$url = Url::fromUri('internal:/example.html');
$link = Link::fromTextAndUrl(t('View'), $url);
$output = $link->toRenderable();
$выход['#атрибуты']['класс'] = [
'загрузка цветового поля',
];
colorbox_simple_load_page_attachments ($ output);
Так что я мог поместите это в свой пользовательский модуль, но я не уверен, какой хук мне нужно использовать, чтобы реализовать его на изображениях SVG.