Темизация поля ссылки для добавления target="_blank"

Аватар пользователя DD 85 DD 85 11 октября в 21:47

Для отображения на странице материала ссылки на файл я использую поле Файл (не Media). Есть код добавляющий атрибут target="_blank" к ссылке.

Код прикреплён в файле.

Но после применения этого кода ссылка выводится как html разметка.

Помогите сделать этот вывод ссылкой.

ВложениеРазмер
Иконка простого текстового файла kod.txt139 байт
0 Thanks

Комментарии

Аватар пользователя gun_dose gun_dose 12 октября в 9:10

Код ваш не смотрел, но совершенно очевидно, что там, где вы присваиваете значение переменной, само значение нужно обернуть в Markup::create($значение).
Пространство имён там Drupal\Core\Render\Markup

Аватар пользователя DD 85 DD 85 12 октября в 16:43

Я не силён в программировании. Мне это ни о чём не сказало. Пожалуйста, помогите готовым кодом. Спасибо.

Аватар пользователя marassa marassa 12 октября в 18:05
3
DD 85 wrote:

Я не силён в программировании.

Есть только два пути:
1. Научиться.
2. Заплатить тому, кто умеет.
Тут всегда рады помочь научиться. Но делать чужую работу никто не будет.

Аватар пользователя DD 85 DD 85 14 октября в 22:09
marassa wrote:

DD 85 wrote:
Я не силён в программировании.

Есть только два пути:
1. Научиться.
2. Заплатить тому, кто умеет.
Тут всегда рады помочь научиться. Но делать чужую работу никто не будет.

Вот и получается что даже люди, которые умеют кодить не могут решить эту задачу (по крайней мере, вот так с первого раза предложить правильно работающий код). А мне предлагают поучиться. При всём желании поучится, вряд ли я смогу написать решение правильней и быстрее.

Аватар пользователя bumble bumble 14 октября в 19:17

код добавляющий атрибут target="_blank" к ссылке .. прикреплён в файле

8 глянцев из 10 - за такое добавление атрибутов.

Таким подходом, должно быть что-то подобное:

<?php
function MY_SUBTHEME_NAME_preprocess_file_link(&$variables) {
    
$variables['attributes']['target'] = '_blank';
}
?>

(Надеюсь, Вы в курсе про все эти замены "MY_SUBTHEME_NAME" на машинное имя используемой темы оформления, и про то что это пишется в MY_SUBTHEME_NAME.theme)

Или, попробуйте заменить / добавить шаблон темы для ссылок файлов (file-link.html.twig), на что-то вроде:

{#
/**
 * @file
 * Default theme implementation for a link to a file.
 *
 * Available variables:
 * - attributes: The HTML attributes for the containing element.
 * - link: A link to the file.
 *
 * @see template_preprocess_file_link()
 *
 * @ingroup themeable
 */

#}
<span{{ attributes.setAttribute('target', '_blank') }}>{{ link }}</span>

[!] Учтите, что все это приведет к изменениям всех ссылок файлов в проекте.

Аватар пользователя DD 85 DD 85 14 октября в 22:06

Не знаю что за глянцы не в теме. Код в прикреплённом файле от https://drupal.ru/username/sas-drupalorg https://drupal.ru/comment/732577#comment-732577

Применить предложенные решения способен.
Увы, ни первое, ни второе не сработало. Вообще не дали никаких результатов. Кеш чистил.
В любом случае спасибо, что не прошли мимо.

Аватар пользователя bumble bumble 14 октября в 22:13

2й вариант, я там какую то чушь написал. Нужно не спану добавлять атрибут, а ссылке, конечно же.

Попробуйте выяснить как это провернуть, сейчас нет под рукой ничего, сорри.

Но, и первый способ должен сработать, возможно где-то ошибку допустили.