Plone通过uid嵌入对象的最佳实践

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

我有一个Plone 4网站,目前我使用以下方法在用户可编辑的HTML内容中嵌入对象(如图像、视频、表格等):

  • 我有一个自定义的
    transform
    浏览器,它接受HTML文本并转换所有通过UID引用元素的
    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
      取自
      TYPE2TEMPLATE
      dict
    • “嵌入”方法由
      method=o.unrestrictedTraverse(t\u id)
    • 调用该方法(在某些情况下带有一些关键字参数),结果(包含在一个顶级HTML元素中)替换“raw”
      a
      img
      元素

现在,我正在开发一个额外的定制包(其中包含新的对象类型,现在使用的是灵巧性),我想知道是否还有更多的“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扩展。。。