0

大纲

我有一个名为“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 有这个问题,我只是倾向于解决它,但在这种特殊情况下,我很难过。

所以总而言之

  • 我是一个白痴并且错过了一些明显的东西吗?
  • 这可能吗?

感谢您的时间。

4

0 回答 0