2016-06-12 2 views
4

모델을 코딩하는 것만으로 Sitecore 템플릿을 자동으로 생성 할 수 있습니까? Sitecore 8.0을 사용하고 있는데 Glass Mapper Code First 접근법을 보았습니다.하지만 더 자세한 정보는 찾을 수 없습니다.Sitecore : Glass Mapper Code First

+0

TDS는 모델의 코드를 생성 할 수 있습니다. http://hedgehogdevelopment.github.io/tds/chapter6.html –

+1

@JanBluemink를 참조하십시오. OP가 다른 방식으로 원한다고 확신합니다. 그는 먼저 모델을 코딩 한 다음 모델 클래스에서 Sitecore 템플릿을 생성하려고합니다. –

+0

꼭 먼저 모델을 코딩하고 Sitecore 템플릿을 생성해야합니다. – Makler

답변

2

하실 수 있습니다. 하지만 Glass와 관련된 것은 아닙니다.

코드는 먼저 Sitecore.PathFinder가 달성하고자하는 코드입니다. 그러나 아직 공개적으로 이용 가능한 많은 정보가 없습니다.

여기서 시작 : https://github.com/JakobChristensen/Sitecore.Pathfinder

+0

감사합니다. – Makler

4

그것에 대해 많은 정보가없는 이유, 확실하지하지만 먼저 당신이 할 수 확실히 모델/코드! 그래서 같은 속성 구성 방법을 사용 작정 그것을 할이 작동 이제 어떻게

[SitecoreType(true, "{generated guid}")] 
public class ExampleModel 
{ 
    [SitecoreField("{generated guid}", SitecoreFieldType.SingleLineText)] 
    public virtual string Title { get; set; } 
} 

합니다. 첫 번째 매개 변수에 대한 SitecoreType 'true'값은 codefirst에 사용될 수 있음을 나타냅니다. Sitecore의 Initialize 파이프 라인에서 실행되는 Initialize 메서드가있는 GlassCodeFirstDataprovider가 있습니다. 이 방법은 codefirst로 표시된 모든 구성을 수집하고 sql dataprovider에서 생성합니다. 섹션과 필드는 메모리에 저장됩니다. 상속도 고려합니다 (기본 템플릿).

먼저 Nuget을 통해 프로젝트를 설치할 때 GlassMapperScCustom 클래스의 일부 코드의 주석 처리를 제거해야한다고 생각합니다. PostLoad 메서드는 각 CodeFirstDataprovider의 Initialize 메서드를 실행하는 몇 줄을 포함합니다.

var dbs = global::Sitecore.Configuration.Factory.GetDatabases(); 
foreach (var db in dbs) 
{ 
    var provider = db.GetDataProviders().FirstOrDefault(x => x is GlassDataProvider) as GlassDataProvider; 
    if (provider != null) 
    { 
     using (new SecurityDisabler()) 
     { 
      provider.Initialise(db); 
     } 
    } 
} 

또한 개발 초기에만 코드를 사용하는 것이 좋습니다. 패키지를 만들거나 평소와 같이 템플릿을 직렬화하고 다른 환경에 배포하여 데이터 제공자 (및 잠재적 인 위험)가 필요하지 않도록 할 수 있습니다.