2012-06-13 15 views
9

Bileşik bir şablonda pakette bir dize öğesi kullanıp bir dreamweaver şablonuymış gibi yürütmenin mümkün olup olmadığını bilen var mı? Ve aynı yöntemi diğer arabuluculara (tıraş bıçağı gibi) uygulayıp uygulamıyorsunuz?Dreamweaver Şablonu olarak pakette bir öğe yürütme

Teşekkür Mark

+0

Paket sınıfı, araştırmaya değer olabilecek bir package.EvaluateExpression (string expression) yöntemine sahiptir. –

cevap

5

EngineTemplate s Tridion öğelerini esas beklediğini beri, o Package sadece herhangi bir öğeyi mümkün olmayacaktır korkuyorum.

Şablon Öğesi ürününüzün bir Tridion Öğesi temel alınarak olması durumunda, Engine.GetMediator yönteminden başlayarak büyük olasılıkla uzaklaşabilirsiniz. Değilse, geçerli bir Template nesnesine dönüştürmenin bir yolunu bulmanız gerekir.

Component component = new Component(item.GetAsXmlDocument().DocumentElement, 
            engine.GetSession); 

Ben denemedim ama bekliyoruz: Ben Paketi bir Tridion tabanlı Item bir Component nesne oluşturmak zorunda olduklarında

Template template = ... 
IMediator mediator = engine.GetMediator(template); 
mediator.Transform(engine, template, package); 

, normalde böyle bir şey yapmak Template için de aynısını yapabilirsiniz - Başlangıç ​​için bir Şablonu temsil eden Paket'den geçerli bir Öğeyle başladığınız sürece. Muhtemelen XML'yi varolan bir Öğeden kopyalayabilir veya sahte bir şekilde başka bir yol bulabilirsin.

Bunu işe alırsanız, tüm kayıtlı şablon türleri üzerinde çalışır. Engine, Tridion ile gelen türler için özel bir işlem yapılmaz.

+1

İşaretçi için Frank'e teşekkürler. Buna bakacağım. Yours –

+0

Bugün şunu öğrendim: 'engine.GetMediator' herkese açık değildir, bu yüzden ona ulaşamazsınız. Ben sadece 'DreamweaverMediator' 'u TBB'mden başlatıyorum ve önceden oluşturulmuş' TemplateBuildingBlock 'nesnesini geçtim. Daha fazla kişi yararlı buluyorsa yukarıdaki kodu güncelleyeceğim. –

5

Bunun mümkün olduğundan şüpheleniyorum.

Package.EvaluateExpression

faydalı olabilir, adından da anlaşılacağı gibi bu sadece gömülü ifadeler (yani TEL)

Engine.GetMediator bir Template bekler ve bunun için uygun bir Mediator döner ile kod olmayan büyük parçacıkları, ifadeler üzerinde çalışmak gerekir. Sorununuz o zaman IMediator arabiriminin, Engine, Template ve Package gereksinimlerini gerektiren Transform yöntemini tanımlamasıdır.

Bunların etrafında hiçbir zarif yol düşünemiyorum. Belki kendi arabulucunuzu yazınız, ancak bu hala bir paket bekleyecektir, bir dizi değil, bu yüzden dize temelli öğeyi başka bir TBB'den saklamanız gerekir.

Tavsiyem: Çizim tahtasına geri dönüp probleminize alternatif bir çözüm bulmanız gerektiği gibi görünüyor.

+1

Mark'ın, varolan bir ITemplate veya Mediator içinden "DWT olarak dizesini" çağırmak istediğini varsaymıştım, çünkü bu paketin içinde bir öğe olduğunu belirtiyor. Bu durumda mevcut Motor ve Paket nesnelerini Mediator.Transform yöntemine iletebilir. Görebildiğim başlıca sorun, bu dize Öğesini bir Şablon örneğine dönüştürmektir.Ama bu iyi bir nokta, ben de ayrıntılı olarak yanıtımı güncelleyeceğim. –

+1

Yeni bir ComponentTemplate veya PageTemplate nesnesi oluşturmanın ve bir şablonun geçerli bir XML gösterimini iletmenin mümkün olduğunu düşünüyorum. Yine de hiçbir şekilde size ulaşamayacaksınız - Dize öğenizden yeni bir TBB oluşturmanız ve eklemelisiniz. yeni şablonunuzun XML'ine. TBB'nin kurtarılmasının gerekeceğini düşünüyorum. –

İlgili konular