Plone 指定备用Transmogrier\u路径的最简单方法?

Plone 指定备用Transmogrier\u路径的最简单方法?,plone,transmogrifier,Plone,Transmogrifier,我正在使用collective.transmogrifier进行内容迁移,并使用transmogrify.filesystem从文件系统读取文件。我不想“按原样”导入文件,而是想将它们导入Plone中的子目录。修改_路径的最简单方法是什么 例如,如果存在以下情况: /var/www/html/bar/index.html 我想导入到: /Plone/foo/bar/index.html 换句话说,将“baz”的内容导入子目录“foo”。我看到两种选择: 在collective.tran

我正在使用collective.transmogrifier进行内容迁移,并使用transmogrify.filesystem从文件系统读取文件。我不想“按原样”导入文件,而是想将它们导入Plone中的子目录。修改_路径的最简单方法是什么

例如,如果存在以下情况:

  • /var/www/html/bar/index.html
我想导入到:

  • /Plone/foo/bar/index.html
换句话说,将“baz”的内容导入子目录“foo”。我看到两种选择:

  • 在collective.transmogrifier中使用一些蓝图来破坏路径
  • 写一些蓝图来破坏路径

我是否遗漏了更简单的内容?

使用标准的
插入器
蓝图生成路径;它接受python表达式,并可以就地替换键:

[manglepath]
blueprint = collective.transmogrifier.sections.inserter
key = string:_path
value = python:item['_path'].replace('/var/www/html', '/Plone/foo')

因此,这将获取
python表达式的输出(该表达式使用项
\u path
,并将其存储回同一个键下。

使用标准的
插入器
蓝图生成路径;它接受python表达式,并可以在适当的位置替换键:

[manglepath]
blueprint = collective.transmogrifier.sections.inserter
key = string:_path
value = python:item['_path'].replace('/var/www/html', '/Plone/foo')

因此,这将获取
python表达式的输出(它使用item
\u路径
并将其存储在同一个键下。

Hmmm,这非常有助于破坏路径,但随后我得到:2011-07-31 19:05:53 WARNING collective.transmogrifier.constructor容器foo/vel对于item/foo/vel/index.html不存在。奇怪,因为它似乎不介意为实际存在的内容创建文件夹存在(即,如果不损坏路径,则可以很好地创建预损坏路径中的文件夹。)creator blueprint非常喜欢按路径顺序排序,即文件夹优先。transmogrify.pathsorter的编写就是为了解决这个问题。它还为给定类型的文件夹创建新项目。我知道发生了什么,我需要确保至少单独插入一次新路径,即“排序输入”(正如pathsorter希望为我所做的那样)。@djay或根据需要使用blueprint动态创建文件夹。有人注意到文件夹blueprint有任何“奇怪的行为”吗?AFAICT,构造函数blueprint创建文件夹(使用已排序的输入),但文件夹部分不会创建包含任何输入的文件夹。嗯,这会很好地破坏路径,但我得到:2011-07-31 19:05:53警告collective.transmogrifier.constructor Container foo/vel不存在于item/foo/vel/index.html中。奇怪的是,它似乎不介意为实际存在的内容创建文件夹(即,如果不损坏路径,则可以很好地创建预损坏路径中的文件夹。)creator blueprint非常喜欢按路径顺序排序,即文件夹优先。transmogrify.pathsorter的编写就是为了解决这个问题。它还为给定类型的文件夹创建新项目。我知道发生了什么,我需要确保至少单独插入一次新路径,即“排序输入”(正如pathsorter希望为我所做的那样)。@djay或只是根据需要使用blueprint动态创建文件夹。是否有人注意到文件夹blueprint有任何“奇怪的行为”?AFAICT,构造函数blueprint创建文件夹(使用排序输入),但文件夹部分不使用任何输入创建文件夹。