2

私の会社がサイトコアを使用して開発しているサイトの URL を短縮しようとしています。Alex Shyba のブログ記事はこちらと Sitecore のドキュメントはこちらを調べていますが、うまくいかないようです。短くしたいのはlocalhost:8081/sitecore/Content/Sites/HeinzABCID/Dapur.aspx~からlocalhost:8081/Dapur.aspx

その URL はLinkManager.GetItemUrl()メソッドによって生成されます。オプションとリンクを取得するための私のコードは以下のようなものです。

UrlOptions opt = (UrlOptions)UrlOptions.DefaultOptions.Clone();
opt.SiteResolving = Sitecore.Configuration.Settings.Rendering.SiteResolving;
linkToResep.NavigateUrl = LinkManager.GetItemUrl(citem, opt);

私の中には、web.config以下のような構成を入れました。

<linkManager defaultProvider="sitecore">
  <providers>
    <clear/>
    <add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel"
         addAspxExtension="true"
         alwaysIncludeServerUrl="false"
         encodeNames="true"
         languageEmbedding="asNeeded"
         languageLocation="filePath"
         shortenUrls="true"
         useDisplayName="true"/>
  </providers>
</linkManager>

私の web.configのconfiguration/sitecore/sites/sitewithname="website"部分は以下のとおりです。

<site name="website" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/Content/Sites/HeinzABCID" startItem="/Home" database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" language="en" disableClientData="false"/>

他のサイトはありません。デフォルト (シェル、ログイン、管理者、サービス、modules_shell、modules_website) だけです。

そして、これが私のサイトのサイト構造です。

/sitecore/content/sites
    +Sites
    +---+HeinzABCID
        +---+Dapur
            +Search
            +Other Items

私を助けてください :)

4

4 に答える 4

3

URL に /sitecore/content/site が表示されるという同様の問題がありました。

私の場合、間違っていたのはサイト コンテキストでした。Web サイト コンテキストではなく、サイトコア シェル コンテキストを実行していました。切り替えに使用するコードは次のとおりです。

// Store the current site context name
string oldSiteName = Sitecore.Context.GetSiteName();

// Change the website context
Sitecore.Context.SetActiveSite("website");

// Generate the link
string url = LinkManager.GetItemUrl(item);

// Change back to the old site context
Sitecore.Context.SetActiveSite(oldSiteName);
于 2015-04-22T07:22:30.530 に答える
0

正規表現の置換を使用して、URL を短縮することに成功しました。複数のサイトで使用することもできます。

public static string ShortenURL(string URLToShorten)
{
    return Regex.Replace(URLToShorten,@"sitecore/content/sites/[\w]{1,}/","");
}

SEO を含むソリューションの完全な説明については、こちらを参照してください。

于 2013-03-31T18:08:22.963 に答える
0

サイトの構成が正しくないようです。Sitecore ツリーに基づくと、次のようになるはずです。

<site name="website" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/Content/Sites" startItem="/HeinzABCID" database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" language="en" disableClientData="false"/>

単一の Sitecore インスタンスで複数のサイトを構成するための Sitecore SDN に関する記事も参照してください: Sitecore SDN: 複数のサイトの構成

このドキュメントによると、URL は「website」サイト タグで定義されている「startItem」を基準にして作成されます。

于 2013-03-06T20:11:00.523 に答える
0

サイト定義に targethostname が定義されている場合にも役立ちます。

于 2015-12-02T06:19:30.027 に答える