2015년 3월 19일 목요일

Sitecore 관리자 페이지

#FYI #관리자 #Admin

 사이트코어는 관리자를 위하여 특정한 시스템 정보를 제공한다.
  • Cache: ~/admin/cache.aspx
    이 페이지는 캐시정보 및 캐시설정에 관한 정보를 제공하며, 또한 데이타베이스 prefetch, 데이타 캐시, 아이템 캐시, HTML 캐시등의 정보도 포함하고 있다.
  • Database Browser: ~/admin/dbbrowser.aspx
    이 페이지는 사이트코어의 데이타베이스 정보는 보여준다. Content Tree와 비슷한 정보를 가지고 있지만, 선택된 특정한 Parent아아이템의 상속되어진 정보만 보여주므로, 조금 더 가벼운(?) 인터페이스를 가지고 있다.
  • Serialization: ~/admin/serialization.aspx
    이 페이지는 Serialize 된 데이타베이스 컨턴츠를 XML기반으로 보여준다. 이것은 데이타베이스 컨텐츠를 백업할때, 버전 컨트롤 및 다른 버전과 비교하때 유용하다.
  • Show Config: ~/admin/showconfig.aspx
    이 페이지는 web.config의 Sitecore 섹션의 마지막 렌더링된 버전을 보여준다. 사이트코어는 ~/App_Config/Include/ 폴더를 제공하여 개발자들이 custom .config 파일을 저장할수 있으며, 이 정보들은 Sitecore 섹션에 final 렌더링 버전으로 불러진다.
  • Size Status: ~/admin/sizestatus.aspx
    이 페이지는 데이타베이스 사이즈에 대한 다양한 정보를 제공한다.
  • Stats: ~/admin/stats.aspx
    이 페이지는 Cache정보 페이지와 비슷하나, 얼마나 많이 컴포넌트가 캐시에서 로드되었는지에 대한 정보도 함께 제공한다. (내가 자주 사용하는 페이지이다.)
  • Unlock Admin: ~/admin/unlock_admin.aspx
    이 페이지는 Admin관지라로 잠겨진 아이템을 풀수있는 되이지다.
  • Update Installation Wizard: ~/admin/UpdateInstallationWizard.aspx
    이 페이지는 기존의 설치된 패키지를 업데이트할때 사용된다. 새로운 버전 세팅없이 자동으로 새 버전이 등록된다.

2015년 3월 17일 화요일

Sublayout을 Item에 적용시키기 (Coding)

이 소스코드는 새로운 sublayout을 현재 페이지 아이뎀의 레이아웃에 적용시키는 코드이다.



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public void AddSublayoutToItem(string sublayoutId, string datasourcePath)
{
    using (new Sitecore.SecurityModel.SecurityDisabler())
    {
        if (Sitecore.Data.ID.IsID(itemId) && Sitecore.Data.ID.IsID(sublayoutId))
        {
            // 마스터 데이타베이스를 선택한다음, 현재 아이템 아이디를 불러온다
            Database masterDatabase = Database.GetDatabase("master");
            Item item = masterDatabase.GetItem(Sitecore.Data.ID.Parse(itemId));
                
            // 이미 마스터 데이타베이스가 불러졌다면, 간단하게 현재 아이템을 불러올수가 있다.
            //Item item = Sitecore.Context.Database.GetItem(Sitecore.Data.ID.Parse(itemId));

            if (item != null)
            {
                // 레이아웃과 디바이스 정보를 가져온다.
                LayoutField layoutField = new LayoutField(item.Fields[Sitecore.FieldIDs.LayoutField]);
                LayoutDefinition layoutDefinition = LayoutDefinition.Parse(layoutField.Value);
                DeviceDefinition deviceDefinition = layoutDefinition.GetDevice(Sitecore.Context.Device.ID.ToString());

                //새로운 렌더링 Definition을 만들고, Sublayout 또는 렌더링의 레퍼런스를 추가한다.
                RenderingDefinition renderingDefinition = new RenderingDefinition();
                renderingDefinition.ItemID = sublayoutId;

                // 새로 추가될 Sublayout의 Placeholder값을 정한다.
                renderingDefinition.Placeholder = "content";

                // 새로 추가된 Sublayout의 Datasource 값을 정한다. 값은 DataSource의 경로로 대체할수도 있다.
                renderingDefinition.Datasource = "{24240FF2-B4AA-4EB2-B0A4-63E027934C38}";
                // renderingDefinition.Datasource = "/sitecore/content/Home/Books";

                // 렌더링 레퍼런스를 선택되어진 디바이스에 추가한다.
                deviceDefinition.AddRendering(renderingDefinition);

                // 변경된 레이아웃을 저장한다.
                item.Editing.BeginEdit();
                layoutField.Value = layoutDefinition.ToXml(); ;
                item.Editing.EndEdit();
            }
        }
    }
}

Publish 버튼 숨기기

사이트코어는 유저의 Role의 따라 특정 아이템 접근권한을 설정할수가 있다. 만약 유저가 Limited Content Role에 포함이 되어있다면 Publish 옵션이 자동으로 숨겨져있으나, 그보다 높은 Level에 있다면, Publish 버튼이 툴바에 보인다. 이런 경우, "Publish Site" 옵션도 포함이 되어있어, Sitecore에 능숙하지 않는 유저는 실수로 사이트 전체를 "Publish" 하는 경우가 생긴다.

이런 문제를 보안하며, 적용되어진 Role (유저 그룹)을 수정하여 Publish 버튼을 숨길수가 있으며, "Publish" 버튼은 컨텐트 모드와 페이지모드 두곳에 포함이 되어있다.



컨텐트 에디터의 "Publish" 버튼 숨기기

  1. 데스크탑 관리자로 로그인 후, 데이타 베이스를 Core DB로 바꿔준다. (데스크탑 모드 제일 오른쪽 아래에 보면 데이타베이스 아이콘이 있다.)
  2. 상단 둘 박스의 유저 관리자 (User Manager)에서 역할 (Role)을 선택한다
  3. 보안 수정 (Security Editor)를 선택한다
  4. 컨텐트 에디터 (Content Editor)에서 스크린샷처럼 해당 경로로 이동한다. (Application -> Content Editor -> Menu -> Publish) 






페이지 에디터의 "Publish" 버튼 숨기기
(Sitecore 7.5이상부터는 페이지 에디터가 "Experience Editor" 또는" xEditor"로 이름이 바뀌었다.)

  1. 데스크탑 관리자로 로그인 후, 데이타 베이스를 Core DB로 바꿔준다. (데스크탑 모드 제일 오른쪽 아래에 보면 데이타베이스 아이콘이 있다.)
  2. 상단 둘 박스의 유저 관리자 (User Manager)에서 역할 (Role)을 선택한다
  3. 보안 수정 (Security Editor)를 선택한다
  4. 컨텐트 에디터 (Content Editor)에서 스크린샷처럼 해당 경로로 이동한다. (Application -> WebEdit -> Ribbons -> WebEdit -> Page Editor -> Publish) 


2015년 3월 13일 금요일

Sitecore Publish하는 방법

Sitecore의 "Content Editor" 모드로 접속을 하면, 두가지의 Publish 옵션이 있다.
Public Site는 해당 사이트의 모든 아이템을 Publish 하는것이며,
Public Item은 선택되어진 아이템과 Sub-Items을 Publish 할수있다.


각각의 옵션에는 Incremental Publish, Smart Publish, Republish 옵션이 있는데,


  • Incremental Publish는 Publish Site를 선택하였을때만 나오는 옵션이며, 오직 수정된 아이템만 Publish 한다.
  • Smart Publish는 소스 데이타베이스와 타깃 데이타베이스를 비교하여, 변경된 아이템만 Publish 한다.
  • Republish는 선택된 모든 아이템을 Publish 한다.


하나 알아두어야 할것은, 하나의 아이템만 Publish되어있더라도, 해당 사이트의 Cache정보를 모두 소멸이 된다. 이 부분은 web.config파일을 수정하여 특정한 시간또는 사이트에만 Cache를 소멸시킬수가 있다.



1
2
3
4
5
6
7
<event name="publish:end">
    <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache">
      <sites hint="list">
        <site>website</site>
      </sites>
    </handler>
</event>