我在Module.php中设置了几个默认的元参数:
$hm = $serviceManager->get('ViewHelperManager')->get('headMeta');
$hm
->appendProperty('og:image', '/images/opengraph/1.jpg')
->appendProperty('og:image', '/images/opengraph/2.png');
后来在某个动作中,我需要覆盖这些元参数并设置其他一些图像。我不知道如何清除这些现有的'og:image'参数......我试过了:
$hm->appendProperty('og:image', null);
//and
$hm->unsetProperty('og:image');
但都没有效果。有什么帮助吗?
答案 0 :(得分:2)
那是因为append方法不会在已定义的图像上添加og:image。 append方法会将下一个og:image附加到已定义的og:image,最后会得到一个数组。同样,如果你选择prepend,这会在你定义的那个之前添加新的og:image标签。
我认为你真正想要的是最初设置属性,而不是将其添加到其中。
$hm = $serviceManager->get('ViewHelperManager')->get('headMeta');
$hm->setProperty('og:image', '/images/opengraph/1.jpg');
然后:
$hm->setProperty('og:image', '/images/opengraph/2.jpg');
甚至更晚:
$hm->setProperty('og:image', '/images/opengraph/2.jpg');
如果您绝对想要删除列表,作为最后的手段,您可以看到此链接:Zend Framework: Clearing/Resetting HeadLink, HeadMeta, HeadScript, HeadStyle and HeadTitle基于ZF1,但查看ZF2代码似乎是相同的。
对于整体挑战而言,或许更好的解决方案并不是急切地设置模块中的og:image,而是始终尽可能晚地设置它们,这样你就不会遇到这种情况。