在面包屑呈现中包含特定属性或子元素文本
Include specific attribute or child-element text in breadcrumb rendering
在作者内部,它显示面包屑,I know you can modify its display to either some other static text or localisation,但我想知道是否可以动态显示属性,或动态执行其他一些特定于上下文的 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>
"Year" 实际上是一个 num
元素。
然而,尝试任何其他变量,甚至 'more static' 像 ${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}"/>
(段落确实有一个 eId
属性)
如您所见,我尝试使用 annotation
;但这些工具提示也只是按字面显示变量。
我也摆弄并尝试了一堆 xpath 的东西,比如 @eId
/.@eId
//@eId
,但我认为在编辑器变量方面使用内容完成配置文件有一些限制。
那么想法是对的但我做错了什么,还是方法不对但还有其他方法可以影响面包屑?也许与模式有关?
cc_config.xml
文件中的元素显示名称不支持大多数编辑器变量。其中大多数,如 ${cf}
(当前文件)和 ${tp}
(总页数)在呈现元素名称时没有意义。
xpath_eval
是有意义的——元素的显示名称可能取决于它的属性(例如 @id
属性),它在文档中的索引(例如 'Section 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;
};
});
在作者内部,它显示面包屑,I know you can modify its display to either some other static text or localisation,但我想知道是否可以动态显示属性,或动态执行其他一些特定于上下文的 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>
"Year" 实际上是一个 num
元素。
然而,尝试任何其他变量,甚至 'more static' 像 ${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}"/>
(段落确实有一个 eId
属性)
如您所见,我尝试使用 annotation
;但这些工具提示也只是按字面显示变量。
我也摆弄并尝试了一堆 xpath 的东西,比如 @eId
/.@eId
//@eId
,但我认为在编辑器变量方面使用内容完成配置文件有一些限制。
那么想法是对的但我做错了什么,还是方法不对但还有其他方法可以影响面包屑?也许与模式有关?
cc_config.xml
文件中的元素显示名称不支持大多数编辑器变量。其中大多数,如 ${cf}
(当前文件)和 ${tp}
(总页数)在呈现元素名称时没有意义。
xpath_eval
是有意义的——元素的显示名称可能取决于它的属性(例如 @id
属性),它在文档中的索引(例如 'Section 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;
};
});