Plone通过uid嵌入对象的最佳实践
我有一个Plone 4网站,目前我使用以下方法在用户可编辑的HTML内容中嵌入对象(如图像、视频、表格等):Plone通过uid嵌入对象的最佳实践,plone,dexterity,plone-4.x,archetypes,Plone,Dexterity,Plone 4.x,Archetypes,我有一个Plone 4网站,目前我使用以下方法在用户可编辑的HTML内容中嵌入对象(如图像、视频、表格等): 我有一个自定义的transform浏览器,它接受HTML文本并转换所有通过UID引用元素的a和img元素(即,具有href=“…/resolveuid/abc123…”或src=“…/resolveuid/abc123…”) 我的视图模板读取文本字段,并让浏览器转换它 浏览器有一个Python dictTYPE2TEMPLATE,它有portal\u type键和template\u
- 我有一个自定义的
浏览器,它接受HTML文本并转换所有通过UID引用元素的transform
和a
元素(即,具有img
或href=“…/resolveuid/abc123…”
)src=“…/resolveuid/abc123…”
- 我的视图模板读取
字段,并让浏览器文本
转换它李>
- 浏览器有一个Python dict
,它有TYPE2TEMPLATE
键和portal\u type
值李>template\u id
- 对于通过UID引用对象的每个
或a
,img
- 对象由
o=brain获取。\u unrestrictedGetObject()
- 模板id
取自t_id
dictTYPE2TEMPLATE
- “嵌入”方法由
method=o.unrestrictedTraverse(t\u id)
- 调用该方法(在某些情况下带有一些关键字参数),结果(包含在一个顶级HTML元素中)替换“raw”
或a
元素img
- 浏览器有一个Python dict
现在,我正在开发一个额外的定制包(其中包含新的对象类型,现在使用的是灵巧性),我想知道是否还有更多的“plonish”方法。例如,是否有一些
嵌入
操作?我不知道有哪个软件包可以执行相同的操作,您所做的对我来说听起来很正常;-)
我只是想用它来代替你的transform
BrowserView
如果可以明确标记不应自动嵌入的链接(例如通过span.noEmbed a.internal-link
选择器),这可能成为一个有用的插件
我想对于portal_type=='File',您也需要检查mimetype,以确定是否嵌入视频文件或其他内容
据我所知,其他产品在您的plone站点之外嵌入了内容(例如collective.embedly)
另一种方法是在编辑页面的html正文时使用tinymce插件生成适当的嵌入html(我个人不会这样做,因为有不同的tiny版本支持4.3和5.0,我们不确定tiny将来是否会被替换为默认编辑器)我实现了一个过滤器,它嵌入了我的对象;有一天我可能会把它当作一个独立的Plone扩展。。。