Am imagini SVG care sunt adăugate la noduri prin svg_image_field modul. Au legături interne în ele /load-parts-ajax/{nid}
. Calea duce la o vizualizare de pagină pop-up a conținutului cu această cale /load-parts-ajax/%
. Încerc să deschid vizualizarea într-o casetă de culori. Am acest lucru în implementarea mea în Drupal 7, care funcționează bine. Am instalat modulul colorbox_node și am folosit colorbox-node
clasa și asta a fost foarte ușor.
Cu toate acestea, pentru Drupal 9, am instalat Colorbox și este o bibliotecă și am încercat colorbox_load, cu ng_lightbox, și am adăugat calea la căile permise în configurația fără zaruri. Încerc și eu colorbox_simple_load a apela la colorbox-load
clasa fara noroc.
(Pot pirata redarea întregului site de vizualizare a paginii și totul prin umplutură cboxElement
după curs, dar sunt sigur că este greșit.)
Iată .js:
(funcție ($, Drupal) {
Drupal.behaviors.MY_MODULE = {
atașați: funcție (context, setări) {
$(document).ajaxStop(funcție() {
setTimeout(funcția () { //necesar pentru a adăuga o scurtă pauză pentru ca colorbox să se reactiveze
$(".view-MY-POP-UP-VIEW", context).once().flexslider({
animație: „diapozitive”,
prezentare: fals,
atingere: fals,
AnimationLoop: fals,
});
}, 500);
});
$(".field--name-field-MY-IMAGE .svg_a", context).each(function(index, item) {
$(item).attr("href", $(item).attr("xlink:href"));
$(item).attr("data-inner-width", "304");
$(item).attr("data-inner-height", "532");
$(item).attr("clasa", "colorbox-load");
});
}
};
})(jQuery, Drupal);
Și iată cum îmi numesc bibliotecile .js, una în care SVG-ul este redat într-o vizualizare, una pentru afișarea nodului.
/**
* Implementează hook_views_pre_render().
*/
funcția MY_views_pre_render(\Drupal\views\ViewExecutable $view) {
if (isset($view) && $view->storage->id() == 'MY_VIEW') {
$view->element['#attached']['library'][] = 'MY_MODULE/MY-LIBRARY';
}
}
/**
* Implementează hook_preprocess_node().
*/
funcția MY_preprocess_node(&$variabile) {
$nod = $variabile['nod'];
if ($nod->bundle() == 'MY_NODE') {
$variables['#attached']['library'][] = 'MODUL_MEU/BIBLIOTECA MEA';
}
}
Atributele din fișierul .js sunt adăugate la linkurile de imagine în ambele cazuri, dar colorbox-load
clasa nu pare să fie recunoscută, deoarece linkurile deschid doar vizualizarea într-o fereastră nouă.
Iată marcajul, care arată identic cu marcajul drupal 7 de lucru (în afară de utilizarea clasei colorbox-load în loc de 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">
Deci, înainte de a deschide greșit un raport de eroare, există ceva simplu care îmi lipsește pentru implementarea colorbox-load
clasa corect sau ar trebui să funcționeze așa cum este?
EDITAȚI | ×:
The colorbox_simple_load are asta în pagina sa de proiect:
$url = Url::fromUri('intern:/example.html');
$link = Link::fromTextAndUrl(t('Vizualizare'), $url);
$ieșire = $link->toRenderable();
$output['#attributes']['class'] = [
„încărcare cutie de culori”,
];
colorbox_simple_load_page_attachments($ieșire);
Deci eu ar putea pune asta în modulul meu personalizat, dar nu sunt sigur ce fel de cârlig ar trebui să folosesc pentru a-l implementa pe imaginile SVG.