在作者内部显示面包屑和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>
但是,尝试使用任何其他变量,甚至是像${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
,但我认为在使用内容完成配置文件方面对编辑器变量存在一些限制。 / p>
想法是正确的,但是我做错了,还是不是正确的方法,但是还有其他方法可以影响面包屑?也许有架构?
答案 0 :(得分:0)
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;
};
});