سؤال

وأنا أعلم أنني قد فعلت هذا من قبل ولكن لا أستطيع أن يبدو أن تتذكر أين أو كيف.

وأريد إنشاء ارتباط إلى عنصر في Sitecore. هذا الرمز:

Sitecore.Data.Items.Item itm = Sitecore.Context.Database.GetItem(someID);
return itm.Paths.Path.ToString();

وتنتج السلسلة التالية:

http://localhost/sitecore/content/Home/Item1/Item11/thisItem

وأود أن هذه السلسلة بدلا من ذلك:

http://localhost/Item1/Item11/thisItem.aspx

ما هي الطريقة الصحيحة للحصول على المسار إلى البند؟ في هذه الحالة لا يمكنني استخدام وصلة Sitecore العادي:

Sitecore.Web.UI.WebControls.Link
هل كانت مفيدة؟

المحلول

وأنت تحتاج إلى هذا واحد، على افتراض انك تقوم بتشغيل Sitecore V6 أو أي شيء أكثر حداثة (اختبار مع 8،2-6، يجب أن تعمل مع 9 أيضا):

Sitecore.Links.LinkManager.GetItemUrl(item);

نصائح أخرى

إذا كنت لا تزال تستخدم Sitecore 5.3، يمكنك استخدام هذا. تم إهمال حذر من أن يكون هذا الأسلوب في Sitecore 6.0.

string url = item.Paths.GetFriendlyUrl();

ومراقبة الويب الخاص بك:

<asp:HyperLink ID="HyperLinkItem" runat="server">
    Item
</asp:HyperLink>

والرمز الخاص بك:

var homeItem = Sitecore.Context.Database.GetItem("/sitecore/content/Home");
HyperLinkItem.NavigateUrl = Sitecore.Links.LinkManager.GetItemUrl(homeItem);

ويمكنك جعل ارتباط العنصر على النحو التالي:

Sitecore.Data.Items.Item itm = Sitecore.Context.Database.GetItem(someID);
return Sitecore.Links.LinkManager.GetItemUrl(itm);

وهذه محاولة

  <asp:HyperLink ID="hlItem" runat="server">

    </asp:HyperLink>

وaspx.cs

   Sitecore.Data.Items.Item itm = Sitecore.Context.Database.GetItem("/sitecore/content/Home");

    hlItem.Navigateurl =sitecore.links.linkmanager.getitemurl(itm);

ويمكنك القيام بهذا أيضا:

Item.Paths.FullPath

ومن نفس:

Sitecore.Links.LinkManager.GetItemUrl(item);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top