2016년 9월 28일 수요일

Sitecore Query.MaxItems - 제한된 Query 늘이기

이전에 Dynamic Placeholder를 사용하는법에 대하여 포스트를 한적이 있다.
Placeholder는 컨텐츠를 제한되어진 범위내에 사용할수있도록 해주어, 사용자가 컨텐츠를 손쉽게 업데이트할수 있도록 유용하게 쓰인다.

하지만, 큰 프로젝트를 작업하는데 있어서 많은 Placeholder Setting Item이 필요하고, 이것을 일일히 템플릿 Layout에 적용할때는 상당한 시간이 걸린다. Sitecore는 Query Performance를 최소화하기 위하여 한번에 Sitecore Query API를 리딩할수있는 아이템을 수 (Query.MaxItems)를 "100"으로 제한해두며, 해당 정보는 Placeholder Cache에 저장한다. 이로 인하여, Placeholder Setting Item의 수가 100 이상이면, 해당 Request는 Placeholder Cache에 저장하지 않는다.

sitecore.config 파일에서 `<setting name="Query.MaxItems" value="100"/>`의 value 값을 변경하면 쉽게 문제를 해결할수가 있다.

해당 Placeholder에 렌더링 아이템을 추가해 놓았지만, 등록된 아이템을 볼수가 없다.


Value 값을 "1000"으로 업데이트 한 후, 등록되어진 아이템을 Placeholder에서 볼수가 있다.


1
<setting name="Query.MaxItems" value="1000"/>


Rendering Item 정보 가져오기

새로운 Rendering 아이템을 만들다 보면, 페이지 아이템에 적용되어져있는 Control을 찾아야 하는경우가 있다. 이럴경우 Fast Query 또는 LINQ를 통하여 레이아웃에 적용되어진 모든 Rendering 아이템 정보를 가져올수가 있다.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// 현재 페이지에 적용되어진 모든 렌더링 아이템 가져오기
IEnumerable<RenderingReference> renderings = Context.Item.Visualization.GetRenderings(Context.Device, false);
               
// 해당 렌더링 아이템 아이디를 사용하고 있는 모든 렌더링 아이템 정보 가져오기
renderings = renderings.Where(x => x.RenderingID == RenderingContext.Current.Rendering.RenderingItem.ID);
               
// 해당 Placeholder에 사용되고 있는 모든 렌더링 아이템정보 가져오기
renderings = renderings.Where(x => x.Placeholder.TrimStart('/') == RenderingContext.Current.Rendering.Placeholder.TrimStart('/'));

// 현재 렌더링아이템의 인덱스 값 가져오기
var index = renderings.ToList().FindIndex(x => new Guid(x.UniqueId) == RenderingContext.Current.Rendering.UniqueId);


2016년 9월 5일 월요일

사이트코어 - Chrome Extension - URL Replacement for Sitecore

사이트코어를 사용하다보면, 현재 Publish 되어진 사이트(페이지) 사이트코어 페이지 아이템을 비교해야할 경우가 생긴다. 그럴경우, Content Editor Quick Info 섹션을 통하여 아이템 경로를 확인한 후, 새로운 또는 윈도우를 오픈하여 해야 해당 페이지 아이템을 라이브 URL 경로르 입력해야한다

물론
, 사이트코어의 .config 파일 설정을 통하여 "Preview"  클릭하였을시 "Web" DB 포인팅하도록 할수는 있지만, Front-End Developer 입장에서는 시스템 또는 사이트코어 관리자에게 설정을 요청하여야 한다. 물론, 설정하는 것에는 어려움이 없으나, .config 파일의 설정은 사이트코어 시스템 전체에 적용이 되므로, 결정을 내리는데 있어서는 약간 까다로운(?) 부분이 있다.

이런
불편함을 덜어내기 위하여 최근에 "URL Replacement"라는 Chrome Extension 만들었다. 사용법 설명은YouTube 또는 Option 설정페이지에 있으므로, 참고할 있다.


Chrome Extension - URL Replacement