sitecore通过客户端URL查询项目

时间:2012-02-22 19:27:32

标签: sitecore sitecore6

我正在寻找一种快速而又脏的方法来通过友好的URL查询特定页面的布局文件。这可能很容易,但我找不到解决方案。

基本上我想说下面的话。伪代码:

var mainpage = Sitecore.EasyQueryUtility.GetItemByFriendlyUrl(requestedUrl);

var mainpage = Sitecore.EasyQueryUtility.GetOppositeOfFriendlyUrl(friendlyurl);

3 个答案:

答案 0 :(得分:1)

如果要获取用于页面布局的aspx文件的路径,可以使用:

Sitecore.Context.Item.Visualization.Layout.FilePath

答案 1 :(得分:1)

听起来你想在这里做两件事:

  1. 根据地址栏中呈现的网址确定项目(即友好网址)
  2. 确定项目后,确定项目使用的布局。
  3. 如果这些是正确的,希望这可以帮助你:

    注意:我在运行中未经测试的代码

    // if you have the full URL with protocol and host
    public static Item GetItemFromUrl(string url)
    {
        string path = new Uri(url).PathAndQuery;    
        return GetItemFromPath(path);
    }
    
    // if you have just the path after the hostname
    public static Item GetItemFromPath(string path)
    {
        // remove query string
        if(path.Contains("?"))
            path = path.split('?')[0];
    
        path = path.Replace(".aspx", "");
    
        return Sitecore.Context.Database.GetItem(path);
    }
    

    获得项目后,您可以获得布局名称,如下所示:

    item.Visualization.GetLayout(Sitecore.Context.Device).Name;
    

    或ASPX的布局物理文件路径:

    item.Visualization.GetLayout(Sitecore.Context.Device).FilePath;
    

答案 2 :(得分:0)

我可能误解了您,但如果您想控制友好URL的格式,可以通过Sitecore.Links.UrlOptions类设置几个属性,并将此实例传递给链接管理器。有关详细信息,请参阅here。 (注意 - LinkManager类只能从SiteCore 6获得。)

您最终得到的代码如下所示:

Sitecore.Links.UrlOptions urlOptions = (Sitecore.Links.UrlOptions)Sitecore.Links.UrlOptions.DefaultOptions.Clone(); 
urlOptions.SiteResolving = Sitecore.Configuration.Settings.Rendering.SiteResolving; 
string url = Sitecore.Links.LinkManager.GetItemUrl(item, urlOptions);

然后,您可以在传入的urlOptions上设置AddAspxExtension等字段。

正如您所看到的,该过程依赖于您传入项目 - 无论是通过当前上下文获取还是从您开始使用的URL中检索。

如果您询问有关获取布局定义项的信息,请查看this,告诉您如何操作。