레이블이 Publish인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Publish인 게시물을 표시합니다. 모든 게시물 표시

2017년 4월 14일 금요일

코드를 이용한 아이템 Publish 옵션 살펴보기

이번에는 프로그램 코드로 아이템을 페블리쉬하는 방법에 대하여 소개하겠다.

사이트코어는 Sitecore Publishing API를 이용하여, 다양한 Publishing 모드를 제공한다. 이번에는 각각의 Publishing 모드가 어떤 상황에서 적절히 쓰여야할지 알아보도록 하겠다.
  1. 새로운 "Publisher" 오브젝트를 이용하여 아이템을 Publish하는 방법

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    Sitecore.Publishing.PublishOptions publishOptions =
      new Sitecore.Publishing.PublishOptions(item.Database,
                                             Database.GetDatabase("web"),
                                             Sitecore.Publishing.PublishMode.SingleItem,
                                             item.Language,
                                             System.DateTime.Now);
    Sitecore.Publishing.Publisher publisher = new Sitecore.Publishing.Publisher(publishOptions);
    publisher.Options.RootItem = item;
    publisher.Options.Deep = true;
    var publishResult = publisher.PublishWithResult();
    
    • 장점
      • 프로세스가 끝나자마, 아이템을 즉시 Publish한다.
      • "PublishWithResult()" 메써드를 사용하여 Publish가 성공적으로 끝났는지 혹시 실패되었는지 확인할수가 있다.
    • 단점
      • "Job Manager"를 사용하지 않으므로써, 퍼블리쉬 진행상황을 "Job Viewer"를 통하여 확인할 수가 없다.
    • 언제 적절하게 사용되어질수 있나?
      • 코드에서 마스터 데이타베이스에 새로운 아이템을 생성하거나 기존 아이템을 수정하고, 즉시 아이템을 Publish해야하는 상활일 경우.
  2. "PublishPipeline"을 사용하는 방법

    1
    2
    PublishContext publishContext = PublishManager.CreatePublishContext(publishOptions);
    var publishResult = PublishPipeline.Run(publishContext);
    
    • 장점
      • Pipeline에서 곧바로 publishing을 진행하기 때문에 이전 옵션보다 신속하다
    • 단점
      • 사용하는데 있어서 복잡하다
      • 메뉴얼 세팅없이는 진행상황을 보고하지 않는다.
      • 대부분의 Sitecore Configuration을 일일히 체크한다.
    • 언제 적절하게 사용되어질수 있나?
      • 개인적으로 이 방범은 추천하지 않는다. 왜냐하면 페블리쉬된 아이템을 Versioning 하는데에 문제가 생길수가 있다.
  3. "Publishing Queue"를 이용하는 방법

    1
    Sitecore.Publishing.PublishManager.AddToPublishQueue(item, ItemUpdateType.Created);
    
    • 장점
      • "PublishingQueue table"에 publishing 목록을 신속하게 추가할수가있다.
      • 중복되어진 목록은 "Incremental Publish" 모드를 통하여 자동으로 제외한다.
    • 단점
      • 만약 Content Editor에서 아이템을 퍼블리쉬할 경우, Incremental Publish 옵션을 선택해야지만 Queue에 목록되어진 아이템이 퍼블리쉬 될수가 있다.
    • 언제 적절하게 사용되어질수 있나?
      • 많은 아이템의 업데이트가 자주가 일어날 경우, 이 옵션이 사용되어질수있다.
      • 개인적으로 이 옵션을 메인 publishing 모드로 사용할 경우, 기존의 메뉴얼 퍼블리쉬 기능은 숨겨두고, Publishing Agent를 통하여 아이템을 퍼블리쉬할수 있도록 사용자에게 권하는것이 좋다.
      • *현재 진행되고 있는 프로젝트에서 Workflow와 데이타소스들을 일괄적으로 업데이트하고 퍼블리쉬하는데 있어서 이 옵션이 사용되었다.
  4. "PublishManager"를 사용하여 Publish 하는 방법

    1
    2
    3
    4
    Database master = Sitecore.Configuration.Factory.GetDatabase("master");
    Database[] targetDBs = new Database[] { Sitecore.Configuration.Factory.GetDatabase("web") };
    Language[] languages = new Language[] { Sitecore.Data.Managers.LanguageManager.GetLanguage("en") };
    Sitecore.Publishing.PublishManager.PublishSmart(master, targetDBs, languages);
    • 장점
      • Sitecore UI를 통하여 아이테을 퍼블리쉬할시, 사용되는 기본 기능이다.
      • Sitecore 로그에 퍼블리쉬 상황을 등록할수가 있으며, 그 등록 기능은 "JobManager"를 통하여 작동된다.
    • 단점
      • 비동기적으로 퍼블리쉬를 수행하여 신속하지만, 프로그램 코더에서는 현지 진행되고 있는 아이템이 잘 퍼블리쉬되고있는지 또는 아닌지를 모니터해야한다.




2015년 3월 17일 화요일

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>