Tôi có hình ảnh SVG được thêm vào các nút thông qua svg_image_field mô-đun. Họ có các liên kết nội bộ trong đó /load-parts-ajax/{nid}
. Đường dẫn dẫn đến trang bật lên xem nội dung với đường dẫn này /load-parts-ajax/%
. Tôi đang cố mở chế độ xem trong hộp màu. Tôi có điều này khi triển khai trong Drupal 7, hoạt động tốt. Chúng tôi đã cài đặt mô-đun colorbox_node và sử dụng nút hộp màu
lớp và điều này rất dễ dàng.
Tuy nhiên, đối với Drupal 9, tôi đã cài đặt hộp màu và thư viện của nó và đã thử colorbox_load, với ng_lightboxvà tôi đã thêm đường dẫn vào các đường dẫn được phép trong cấu hình mà không có xúc xắc. tôi cũng đang cố gắng hộp màu_simple_load để gọi tải hộp màu
lớp học không có may mắn.
(Tôi có thể hack kết xuất toàn bộ trang xem trang và tất cả bằng cách nhồi cboxElement
sau buổi học nhưng tôi chắc chắn rằng điều đó là sai.)
Đây là .js:
(hàm ($, Drupal) {
Drupal.behaviors.MY_MODULE = {
đính kèm: chức năng (bối cảnh, cài đặt) {
$(tài liệu).ajaxStop(function() {
setTimeout(function () { // cần thêm một khoảng tạm dừng ngắn để hộp màu bắt đầu lại
$(".view-MY-POP-UP-VIEW", context).once().flexslider({
hoạt ảnh: "trang trình bày",
trình chiếu: sai,
chạm: sai,
hoạt hìnhLoop: sai,
});
}, 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("class", "colorbox-load");
});
}
};
})(jQuery, Drupal);
Và đây là cách tôi gọi các thư viện .js của mình, một nơi SVG được hiển thị trong chế độ xem, một nơi để hiển thị nút.
/**
* Triển khai hook_views_pre_render().
*/
function MY_views_pre_render(\Drupal\views\ViewExecutable $view) {
if (isset($view) && $view->storage->id() == 'MY_VIEW') {
$view->element['#attached']['library'][] = 'MY_MODULE/MY-THƯ VIỆN';
}
}
/**
* Triển khai hook_pre process_node().
*/
function MY_pre process_node(&$variables) {
$node = $variables['node'];
if ($node->bundle() == 'MY_NODE') {
$variables['#attached']['library'][] = 'MY_MODULE/MY-THƯ VIỆN';
}
}
Các thuộc tính từ tệp .js sẽ được thêm vào liên kết hình ảnh trong cả hai trường hợp, nhưng tải hộp màu
lớp dường như không được công nhận vì các liên kết chỉ mở chế độ xem trong một cửa sổ mới.
Đây là phần đánh dấu, trông giống hệt với phần đánh dấu drupal 7 đang hoạt động (ngoài việc sử dụng lớp colorbox-load thay vì 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">
Vì vậy, trước khi tôi mở nhầm một báo cáo lỗi, có điều gì đó đơn giản mà tôi đang thiếu để triển khai tải hộp màu
class đúng cách hay thứ gì đó như thế này có nên hoạt động như vậy không?
CHỈNH SỬA:
Các hộp màu_simple_load có cái này trong trang dự án của nó:
$url = Url::fromUri('internal:/example.html');
$link = Liên kết::fromTextAndUrl(t('View'), $url);
$output = $link->toRenderable();
$output['#attributes']['class'] = [
'tải hộp màu',
];
colorbox_simple_load_page_attachments($output);
Vì vậy, tôi có thể đặt cái này vào mô-đun tùy chỉnh của tôi, nhưng tôi không chắc mình sẽ cần sử dụng loại hook nào để triển khai nó trên hình ảnh SVG.