Добавить атрибут для привязки в текстовом редакторе AEM Rich Text Link

Я работаю над тем, чтобы сделать один из веб-сайтов AEM моего клиента доступным. Для того же я хочу, чтобы атрибут «aria-label» был добавлен (значение может быть указано в диалоге создания) к тегу привязки, когда выбрана цель «Новая вкладка». Не удалось найти много вокруг него, по следующей ссылке описано, что мы можем настроить rtePlugin/linkPicker. Но не смог разобраться в своей проблеме. Любая помощь / руководство

http://experience-aem.blogspot.com/2017/06/aem-63-touch-ui-rte-rich-text-editor-color-picker-plugin-inplace-dialog-edit.html


person Pradeep    schedule 26.12.2019    source источник
comment
что ты уже испробовал? Действительно, скорее всего, вам придется создать/переписать плагин ссылок по умолчанию.   -  person ronnyfm    schedule 27.12.2019
comment
@ronnyfm - это первый проект, который я делаю для AEM, и я не смог найти много вариантов в Интернете для своего требования. Так что я ничего не пробовал на данный момент и ищу руководство здесь   -  person Pradeep    schedule 02.01.2020


Ответы (2)


Вариант 1) Повторное использование Alt Text/title из анкорной ссылки otb. Нет необходимости настраивать диалог. Когда Alt Text создано, otb будет заполнять заголовок следующим образом <a title="Google" href="htttps://www.google.com">Google Link</a>

введите здесь описание изображения,

Затем вам нужно будет написать преобразователь ссылок, чтобы скопировать заголовок в арию. -метка. Рерайтер будет искать теги привязки; если заголовок присутствует, скопируйте в новый атрибут aria-label и перепишите якорь. Если переписать ссылку сложно, вы также можете переписать текст RTE из модели слинга, сохранив текст RTE. Используйте парсер Jsoup для анализа HTML, перепишите копирование заголовка в aria-label и запись обратно в JCR.

Вариант 2) Добавление нового текстового поля для aria-label в диалог. Вы можете обратиться к этому запись в блоге. Но эта опция нужна только тогда, когда Alt text отличается от aria-label, что интересно, почему. Обычно aria-label и title совпадают, и варианта 1 выше будет достаточно.

person Saravana Prakash    schedule 30.12.2019
comment
Спасибо за ваше руководство, я смог добавить арию-метку после experience-aem.blogspot.com/2017/06/ Еще я хочу, чтобы это добавляться только тогда, когда target=New Tab Любое предложение? - person Pradeep; 13.01.2020
comment
@Pradeep, experience-aem.blogspot.com/2017/09/ — этот блог больше соответствует вашим требованиям, чем пример с палитрой цветов. Если вы можете повторно реализовать аналогичный вышеприведенному примеру, вы можете добавить условия в функцию dlgToModel(). Он вызывается перед записью диалога в JCR, поэтому сохраняйте aria-label в JCR только при выполнении условия. Другой способ — использовать LinkTransformer для удаления атрибута, когда он не нужен. - person Saravana Prakash; 13.01.2020

Итак, наконец, удалось добавить атрибут aria-label с устранением неполадок. Более того, шаги в ссылках, упомянутых выше, одинаковы. Хотите добавить дополнительные детали, с которыми я столкнулся

  1. Добавление нового поля
    Выполните действия, описанные в блог
  2. После добавления поля, как указано в блоге, новый добавленный атрибут будет отфильтрован AEM. Вы увидите следующую ошибку в файле error.log

    Ошибка : "26.09.2017 12:40:42.804 INFO [0:0:0:0:0:0:0:1 [1506447642680] GET /content/we -retail/language-masters/en.html HTTP/1.1] org.apache.sling.xss.impl.HtmlToHtmlContentContext Предупреждение AntiSamy: тег a содержит атрибут, который мы не можем обработать. Атрибут rel имеет значение «bookmark». . Это значение не может быть принято по соображениям безопасности. Мы решили удалить этот атрибут из тега и оставить все остальное на месте, чтобы мы могли обработать ввод».

    Решение. Объявите атрибут в файле конфигурации AntiSamy в CRXDE Light. Примечание: внесите следующие изменения в /apps/cq/xssprotection/config.xml (наложение /libs/cq/xssprotection/config.xml), для Sightly/HTL это /libs/ слинг/xss/config.xml

  3. Скопируйте /libs/cq/xssprotection/config.xml в /apps/cq/xssprotection/config.xml.

  4. Откройте /apps/cq/xssprotection/config.xml. В разделе common-attributes добавьте следующее объявление целевого атрибута.

    <attribute name="aria-label> <regexp-list> <regexp value="[a-zA-Z0-9-_\$]+" /> </regexp-list> </attribute>

  5. Найдите объявление тега, выполнив поиск по термину <tag name="a".

  6. Добавьте строку ниже в список атрибутов:

    <attribute name="aria-label" />

Сохраните файл. Теперь ссылка будет открываться в новом окне, если опция выбрана.

person Pradeep    schedule 15.01.2020