大纲
我有一个名为“Gallery Profile”的自定义类型(Dexterity),对于这种类型,我进入了 ZMI(portal_skins/custom),创建了一个新的“页面模板”并为我的画廊编写了一个自定义模板。画廊包含一堆较低的图像和画廊所有者的一个主要图像,如新闻项目视图,但在底部添加了一个画廊。
客户希望当有人点击“分享”时将此主图像发布到 Facebook,并在发布时在标题中添加一些更具体的信息。
开展的工作
配置了 Rapido 脚本以编写使其工作所需的“og:image”元数据等 HTML(默认的 Plone 内容仅发布站点徽标,除非您正在查看一种图像类型)。
如果我通过直接网址测试从 Rapido 出来的 HTML,它可以正常工作。(site.com/@@rapido/og_share/block/og_share) - 我使用的是稍旧版本的 Rapido,因此是非复数版本的 block。
问题
如果你去我的画廊页面,我们已经应用了模板,然后检查 HTML,所有的 OG 元数据都指向模板而不是当前页面。
这也会影响查询(例如,如果您使用脚本来查找文件夹中的图像) - 它搜索 /my_template 而不是 site.com/a_folder/my_template_is_on
在 Rapido Python 文件中,我尝试过以下操作:
context.content.absolute_url()
context.content.absolute_url_path()
context.request['URL']
context.request['VIRTUAL_URL']
context.request['ACTUAL_URL']
......可能更多,因为我已经有一段时间了。
如果您不在自定义模板上,它可以工作。
重现
- 创建自定义模板
- 将其指定为文件夹或任何类型的默认视图。
- 在您的模板中放置
<div tal:replace="structure python:context.REQUEST"></div>
(只是为了看看区别) - 在您的 Rapido 中尝试使用
context.app.log()
上述任何一种 - 在检查日志和 context.REQUEST 内容的输出时刷新您的模板文件夹。
- 您将看到差异以及 Rapido 如何难以获取您所在页面的 URL,即使它在那里。
我一直对 Rapido 有这个问题,我只是倾向于解决它,但在这种特殊情况下,我很难过。
所以总而言之
- 我是一个白痴并且错过了一些明显的东西吗?
- 这可能吗?
感谢您的时间。