2013-07-10 1 views
0

Sitecore.NET 6.4.1로 구축 된 은행의 기존 웹 사이트에서 작업 중이며 별칭 문제가 있습니다. 그들은 별칭을 사용하여 은행가의 개인 페이지에보다 친숙한 URL을 설정합니다. 예 : www.domain.com/bankername은 www.domain.com/About/People/Banker-ID로 연결됩니다. 내가 겪고있는 문제는 실제 페이지에 링크 된 앨리어싱 된 페이지가 섹션의 모든 메타 데이터를 상속받지 않는다는 것입니다. 따라서 개별 은행가의 맞춤 메타 태그 (즉, 제목의 은행 이름)보다는 ​​모든 사이트 기반 기본 메타 태그를 사용하고 있습니다. 메타 데이터는 실제 은행 페이지에 설정되며 www.domain.com/About/People/Banker-ID에 액세스 할 때 올바르게 작동합니다.별칭 메타 태그

링크 된 페이지의 페이지 콘텐츠 외에도 별칭이 메타 데이터를 상속받는 방법이 있습니까?

public List<string> getmetaDetails() 
     { 
      List<string> metaDetails = new List<string>(); 
      string metaTitle = String.Empty; 
      string metaDesc = String.Empty; 
      string metaKeyword = String.Empty; 
      try 
      { 
       // get root home item 
       Sitecore.Data.Items.Item homeItem = Sitecore.Context.Database.GetItem("/sitecore/content/Home"); 
       Sitecore.Data.Items.Item Item = homeItem; 
       // get Page array by url 
       string pageUrl = Sitecore.Web.WebUtil.GetRawUrl().TrimStart('/'); 
       string[] pageArr = pageUrl.Split('/'); 
       //Removes '?...' after the actual path. 
       for(int i=0; i<pageArr.Length; i++) 
        if (pageArr[i].Contains("?")) pageArr[i] = pageArr[i].Substring(0, pageArr[i].LastIndexOf('?')); 


       if (pageArr[0] == "Advice") 
       { 
        Sitecore.Data.Items.Item AdviceItem = Sitecore.Context.Database.GetItem("/sitecore/content/Home/Advice"); 
        if (AdviceItem != null) 
        { 
         metaTitle = FieldRenderer.Render(AdviceItem, "Meta Title"); 
         metaDesc = FieldRenderer.Render(AdviceItem, "Meta Description"); 
         metaKeyword = FieldRenderer.Render(AdviceItem, "Meta Keywords"); 
        } 
        if (pageArr.Length > 1) 
        { 
         if(!String.IsNullOrEmpty(pageArr[1])) 
         { 
          Feeds feed = new Feeds(); 
          List<FeedItem> adviceFeed = new List<FeedItem>(); 
          string sql = "SELECT * FROM `web_feeds` WHERE url='" + pageArr[1] + "'"; 
          adviceFeed = feed.getFeedFromDB(sql); 
          if(adviceFeed.Count >0) 
          { 
           metaTitle = adviceFeed[0].title; 
           metaDesc = adviceFeed[0].description; 
           metaKeyword +=","+ adviceFeed[0].tag; 
          } 
         } 
        } 
       } 
       else 
       { 
        // loop threw page array to find the item 
        foreach (string page in pageArr) 
        { 
         Item = getCurrentHomeItem(page, Item); 
         if (Item != null) 
         { 
          metaTitle = FieldRenderer.Render(Item, "Meta Title"); 
          metaDesc = FieldRenderer.Render(Item, "Meta Description"); 
          metaKeyword = FieldRenderer.Render(Item, "Meta Keywords"); 

         } 
        } 
       } 
       if (String.IsNullOrEmpty(metaTitle)) metaTitle = FieldRenderer.Render(homeItem, "Meta Title"); 
       if (String.IsNullOrEmpty(metaDesc)) metaDesc = FieldRenderer.Render(homeItem, "Meta Description"); 
       if (String.IsNullOrEmpty(metaKeyword)) metaKeyword = FieldRenderer.Render(homeItem, "Meta Keywords"); 
      } 
      catch (Exception ex) 
      { 
       metaTitle = DEFAULT_TITLE; 
       metaDesc = DEFAULT_DESC; 
       metaKeyword = DEFAULT_KEYWORDS; 

      } 
      metaDetails.Add(metaTitle); 
      metaDetails.Add(metaDesc); 
      metaDetails.Add(metaKeyword); 

      return metaDetails; 

     } 
+3

메타 태그 생성에 사용되는 코드를 게시하는 것이 유용 할 수 있습니다. –

+0

위 코드 제안 게시물에 동의합니다 :). – Younes

답변

0

다음은 내가 관심있는 사람들을위한 해결책입니다.

 if (Sitecore.Configuration.Settings.AliasesActive && 
      Sitecore.Context.Database.Aliases.Exists(HttpContext.Current.Request.RawUrl)) 
     { 
      //Is an alias 
      Item targetItem = Sitecore.Context.Database.GetItem(Sitecore.Context.Database.Aliases.GetTargetID(HttpContext.Current.Request.RawUrl)); 
      metaTitle = FieldRenderer.Render(targetItem, "Meta Title"); 
      metaDesc = FieldRenderer.Render(targetItem, "Meta Description"); 
      metaKeyword = FieldRenderer.Render(targetItem, "Meta Keywords"); 
     }