我正在尝试编写一个脚本来重写Plone ATDocument中的链接.当我getText()
通过调用portal_transforms.convertTo('text/x-html-safe')
URL 调用和取消引用所有UID链接都被重写为" http:// foo/Plone / ..."(字面意思是"foo",作为域名).当我保存文本setText()
并尝试在站点中查看时,"foo"域名仍然存在,并且不会重新写入正确的域.
如何通过HTML传递以setText()
了解当前站点的链接?
如果要修改文本字段的值,则需要使用raw
字段的getter 获取值.
>>> item.getRawText() >>> ...
这将返回值untouched
,然后您可以修改文本并保存.
注意:
默认情况下,plone使用UID来处理内部链接(检查链接完整性功能),因此您可能无法获得原始getter的相对路径,而是
../resolveuid/$(UID)
类似URL.
编辑:
这可以帮助您重写链接.
>>> import re >>> from lxml import html >>> resolveuid_re = re.compile('^[./]*resolve[Uu]id/([^/]*)/?(.*)$') # Regex resolving the uid from a path.
从文本中获取所有链接
>>> raw_text = obj.getRawText() >>> dom = html.fromstring(raw_text) >>> links = dom.xpath('//a/@href') >>> links ['resolveuid/fbb9304e48b24a30ac7ba31eb5be2cb6']
得到uid(s)
>>> uid = resolveuid_re.match(links[0]).group(1) >>> uid fbb9304e48b24a30ac7ba31eb5be2cb6
现在你可以找到并更换uid,存储它们,你就完成了.