Включить определенный атрибут или текст дочернего элемента в рендеринг
Внутри автора он отображает хлебную крошку, и я знаю, что вы можете изменить его отображение на какой-то другой статический текст или локализацию, но мне интересно, возможно ли динамическое отображение атрибута или динамическое выполнение некоторого другого зависящего от контекста xpath.
В качестве теста я могу изменить крошку с помощью переменной редактора локализации ${i18n()}
,
cc_config.xml
<elementRenderings platform="webapp">
<render element="num" as="${i18n(test)}" annotation="${i18n(test)}"/>
translation-cc.xml
<key value="test">
<comment></comment>
<val lang="en_US">Year</val>
"Год" на самом деле num
элемент.
Однако, пробуя любую другую переменную, даже более статичную, такую как ${cf}
или же ${tp}
просто визуализируйте переменный текст буквально вместо его оценки.
cc_config.xml
<elementRenderings platform="webapp">
<render element="paragraph" as="${xpath_eval(./@eId)}" annotation="${xpath_eval(./@eId)}"/>
<render element="p" as="${tp}" annotation="${tp}"/>
Как видите, я пытался использовать annotation
; но эти подсказки также просто отображают переменную буквально.
Я также поиграл и попробовал кучу вещей xpath, вроде @eId
/ .@eId
/ /@eId
, но я думаю, что есть некоторые ограничения в использовании файла конфигурации дополнения контента относительно переменных редактора.
Итак, правильное ли мышление, но я делаю что-то не так или это не правильный путь, но есть какой-то другой способ повлиять на крошку? Может со схемой?
1 ответ
Элемент отображает имена в cc_config.xml
Файл не поддерживает большинство переменных редактора. Большинство из них, как ${cf}
(текущий файл) и ${tp}
(общее количество страниц) не имеет смысла использовать при отображении имени элемента.
xpath_eval
будет иметь смысл - отображаемое имя элемента может зависеть от его атрибутов (например, @id
атрибут), это индекс в документе (например, "Раздел 3") и т. д. У нас зарегистрирован запрос на добавление функции для этого случая, и я добавил к нему ваш голос.
В качестве частичного обходного пути вы можете использовать JS API для вычисления отображаемого имени элемента на основе исходного имени элемента и его атрибутов:
goog.events.listen(workspace, sync.api.Workspace.EventType.BEFORE_EDITOR_LOADED, function(e) {
e.options.elementNameEnhancer = function(elemName, attrs) {
var displayString = elemName;
var attr = attrs['id'];
if (attr) {
displayString += ' (#' + attr.attributeValue + ')';
}
return displayString;
};
});