请注意,本站并不支持低于IE8的浏览器,为了获得最佳效果,请下载最新的浏览器,推荐下载 Chrome浏览器
欢迎光临。交流群:166852192

Orchard SEO 之利用Url候补为任何页面添加Meta及覆盖Title


相信很多人在做Orchard  SEO的时候会遇到一些问题:
1.为什么我的网页标题只能用当前文章标题?  
2.安装启用了Vandelay.Industries模块,总需要在内容类型里面添加 SEO元件,繁琐!
3.如果当前页面仅用了Layer输出,无法设置SEO
这一切的一切都让站长们迷茫与无奈....
今天花了点时间想出一个方案可以基于Url候补来实现任何页面的SEO
1.在主题里面新建Metas-url-a-b-c.cshtml  (根据你自己的规则去命名文件)
2.内容里面直接写上:
<title>新标题,hello title!</title>
<meta name=keywords content=不解释,形状候补就是这么强大 />
<meta name=description content=Orchard很好很强大 />
以上两个步骤会使你的该Url页面采用此Meta候补
接下来是最重要最有技术含量的一项设置!!!!各位请看好:
--------------------------------------------------------------------------------------------------------------------------------------
@using Orchard.Mvc.Html;
@using Orchard.UI.Resources;
@{
    var titleReg = new System.Text.RegularExpressions.Regex((<title>(?<title>[^<>]*)</title>)
        , System.Text.RegularExpressions.RegexOptions.Compiled | System.Text.RegularExpressions.RegexOptions.IgnoreCase);
    RegisterLink(new LinkEntry { Type = image/x-icon, Rel = shortcut icon, Href = Url.Content(~/modules/orchard.themes/Content/orchard.ico) });
    Script.Include(html5.js).UseCondition(lt IE 9).AtHead();
    string siteName = Convert.ToString(WorkContext.CurrentSite.SiteName);
}
<!DOCTYPE html>
<html lang=@WorkContext.CurrentCulture class=static @Html.ClassForPage()>
<head>
    <meta charset=utf-8 />
    @{
        string title = string.Empty;
        string headHtml = Display(Model.Head).ToString();
        var title2 = titleReg.Match(headHtml).Groups[title].Value;
        if (!string.IsNullOrWhiteSpace(title2))
        {
            title = title2;
            headHtml = titleReg.Replace(headHtml, );
        }
        else
        {
            title = Convert.ToString(Model.Title);
        }
    }
    <title>@Html.Title(siteName, title)</title>
    @Html.Raw(headHtml)
    <script>(function (d) { d.className = dyn + d.className.substring(6, d.className.length); })(document.documentElement);</script>
</head>
--------------------------------------------------------------------------------------------------------------------------------------
 将orchard 系统自带的Document.cshtml 拷贝到你的主题View文件夹,把头部代码替换成上述代码,再次浏览页面,标题就淡定换成你自己在Meta候补里面设置的标题了.


原理分析:
Orchard 在自带的Document.cshtml 的渲染顺序是先渲染Title, 而我们希望在Meta候补里面覆盖Title ,那么我们必须让Meta优先于Title渲染,
所以我在页面最开始的代码中用变量将渲染后的结果保存下来,之后再用正则去匹配标题..

作者原创内容不容易,如果觉得内容不错,请点击右侧“打赏”,赏俩给作者花花,也算是对作者付出的肯定,也可以鼓励作者原创更多更好内容。
更多详情欢迎到QQ群 166852192 交流。