从 PageChooserBlock 中的特定位置浏览页面的方式,例如从使用该块的当前编辑页面浏览“子页面或同级页面”。我观察到,当在 PageChooserBlock 中选择任何页面时,浏览将从当前选择的同一页面开始。如果尚未选择任何页面,我想从当前编辑页面(使用此 PageChooserBlock 块)开始默认浏览。有什么办法吗?我用谷歌搜索了一些方法或方向,但没有成功。我还检查了选择器挂钩,但无法在此挂钩中获取当前编辑页面。所以不能用。还尝试在 PageChooserBlock 的源代码中搜索这种可能性,但对我来说没有成功,或者我可能错过了可能的方式。感谢您的帮助。
问问题
179 次
2 回答
0
我可以使用@rgs258 的建议并在 JavaScript 中进行一些修改来实现预期的结果。我将 AdminPageChooser子类化并实现了媒体方法,并添加了一些技巧,用于在 JavaScript 中获取编辑页面的pageid,如下所示。我认为(知道)这不是完美的方法,但至少我能够达到我的预期结果。请建议是否有更好的方法来做到这一点。
我用下面的代码创建了新的 JavaScript 文件,并在新实现的媒体方法中添加了它page-chooser.js
if(typeof createPageChooser === 'function'){
let originalCreatePageChooser = createPageChooser;
createPageChooser = function(id, pageTypes, openAtParentId, canChooseRoot, userPerms){
if (!openAtParentId){
let path = window.location.pathname;
openAtParentId = path.replace('/admin/pages/', '').replace('/edit/', ''); //Know it is not the best way but ...
}
originalCreatePageChooser(id, pageTypes, openAtParentId, canChooseRoot, userPerms);
}
}
于 2020-12-24T17:55:50.073 回答
0
我还没有完全按照您的要求做,但我认为您可能希望继承 AdminPageChooser并实现render_js_init以定义parent
您选择的默认值。
然后,您可以子类化PageChooserBlock
并实现widget
以返回您的子类的实例AdminPageChooser
。
我快速尝试了一下,它似乎奏效了。
于 2020-11-11T15:47:12.907 回答