从PageChooserBlock中的特定位置浏览页面的方法,如browse"子页面或相同级别的页面";来自使用此块的当前编辑页面。我观察到,当在PageChooserBlock中选择任何页面时,浏览都会从当前选择的相同页面开始。如果没有选择页面,我想从当前edting页面(其中使用了PageChooserBlock块(开始默认浏览。有什么办法吗?我在谷歌上搜索了一些方法或方向,但没有成功。我也检查了选择器挂钩,但无法在这个挂钩中获取当前编辑页面。所以不能使用它。还试图在PageChooserBlock的源代码中搜索这种可能性,但对我来说没有成功,或者可能是我错过了可能的方式。非常感谢你的帮助。
我还没有完全完成您想要做的事情,但我认为您可能需要将AdminPageChooser子类化并实现render_js_init,以便定义您选择的默认parent
。
然后,您可以将PageChooserBlock
子类化并实现widget
,以便返回AdminPageChooser
子类的实例。
我试了一下,结果似乎奏效了。
我能够使用@rgs258的建议并在JavaScript中进行一些修改来获得预期的结果。我子类化了AdminPageChooser,实现了媒体方法,并添加了一些破解方法,用于在JavaScript中获取编辑页面的pageid,如下所示。我认为(知道(这不是一个完美的方式,但至少我能够达到我预期的结果。请建议是否有更好的方法。
我用下面的coad创建了新的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);
}
}