【问题标题】:sitecore query items by client urlsitecore 按客户端 url 查询项目
【发布时间】:2012-02-22 19:27:32
【问题描述】:

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

基本上我想说的是以下内容。伪代码:

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

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

【问题讨论】:

  • 您希望在mainpage 中获得什么? URL 后面的内容项?布局定义项?
  • 可能是.aspx文件的路径?

标签: sitecore sitecore6


【解决方案1】:

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

  1. 根据其在地址栏中呈现的 URL(即友好 URL)确定项目
  2. 确定项目后,确定项目使用的布局。

如果这些是正确的,希望这可以帮助你:

注意:我在运行时编写的未经测试的代码

// 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】:

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

Sitecore.Context.Item.Visualization.Layout.FilePath

【讨论】:

    【解决方案3】:

    我可能误解了你,但如果你想控制友好 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,它会告诉您如何获取。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      相关资源
      最近更新 更多