如何在orchard中添加多个元条目?

问题描述 投票:0回答:1

我需要添加两个元标记。我有这个:

MetaEntry FBphoto = new MetaEntry();
FBfoto.AddAttribute("property", "og:image");
FBfoto.AddAttribute("content", "image.jpg");
SetMeta(FBphoto);

MetaEntry FBdescription = new MetaEntry();
FBdescription.AddAttribute("property", "og:description");
FBdescription.AddAttribute("content", "Some description");
SetMeta(FBdescription);

不幸的是 SetMeta 仅添加第二个元条目(FBdescription)。我怎样才能同时添加它们?

content-management-system orchardcms meta-tags
1个回答
0
投票

这不起作用的原因是因为如果你查看

ResourceManager.SetMeta
有以下代码

public void SetMeta(MetaEntry meta) {
if (meta == null) {
    return;
}

var index = meta.Name ?? meta.HttpEquiv ?? "charset";

_metas[index] = meta;

}

因此,您对该方法的第二次调用将覆盖第一个条目(带有“charset”键的条目)。

如果您查看 Orchard Gallery 上名为 Social Media Tags 的模块以及 GitHub 上的源代码,他们会在 driver 中添加标签,在 helper 类中构建元数据

在该代码中,他们只是使用键作为不带冒号的属性名称,因此您的代码将变成

MetaEntry FBphoto = new MetaEntry();
FBphoto.Name = "ogimage";
FBphoto.AddAttribute("property", "og:image");
FBphoto.AddAttribute("content", "image.jpg");
SetMeta(FBphoto);

MetaEntry FBdescription = new MetaEntry();
FBdescription.Name = "ogdescription";
FBdescription.AddAttribute("property", "og:description");
FBdescription.AddAttribute("content", "Some description");
SetMeta(FBdescription);

它确实获取了页面上的两个标签。我认为拥有名称属性没有任何坏处,它们只是不是必需的,但您需要确认这一点。

© www.soinside.com 2019 - 2024. All rights reserved.