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

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

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

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

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

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

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

Комментарии

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

12 октября 2019 в 9:10

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

12 октября 2019 в 16:43

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

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

12 октября 2019 в 18:05

marassa wrote:

DD 85 wrote:

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

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

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

14 октября 2019 в 22:09

код добавляющий атрибут 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>

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

14 октября 2019 в 19:17

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

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

14 октября 2019 в 22:06

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

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

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

14 октября 2019 в 22:13