2016-04-05 47 views
2

Yapmam gereken bir şey var, Yapısı ve Şablon ile JournalArticle oluşturmamız gerekiyor. JournalArticle oluştururken StructureId ve TemplateId'yi bekleyen yöntem ancak bunlar Liferay.So tarafından üretilir. ad nasıl id ikisini de alabilirim.Yapı/Şablon adına göre Yapı/Şablon adı nasıl elde edilir

+0

Tek bir yol, tüm yapıları ve şablonları almak, bunların üzerinden yineleme yapmak ve ad kontrolüne dayalı gerekli yapı/şablonu doldurmaktır. Diğer yol ise, "DynamicQuery" yi "xxxLocalServiceUtil" yöntemine "dynamicQuery" yöntemine iletmektir; bu da sonuçların listesini döndürür. –

+0

1. [*** Tümünü Al ***] (http://stackoverflow.com/questions/25603742/get-content-of-structure-liferay) 2. [*** Dinamik Sorgu ***] (https : //www.liferay.com/community/wiki/-/wiki/Main/Queries+2%3A+DynamicQuery+API) –

+1

Farklı değil .. @ Romeo –

cevap

0

Sen

long classNameIdJournalArticle = ClassNameLocalServiceUtil.getClassNameId(JournalArticle.class); 
DDMStructure ddmStructure = DDMStructureLocalServiceUtil.getStructure(groupId, classNameIdJournalArticle, "myDDMStructureName"); 

Ve bu kodla TemplateId (DDMTemplate denir)

DDMTemplate ddmTemplate = DDMTemplateLocalServiceUtil.getTemplate(groupId, classNameIdDDMStructure, "ddmTemplateName"); 
+2

Bu isme göre değil, templateKey ile. –

+0

Aslında, yapıKey/templateKey _could_ bir isim olarak kabul edilebilir. "Ddmstructure" tablosuna baktığınızda, bazı _predefined_ yapıları (oluşturulan sayılar yerine) için normal isimleri bile bulabilirsiniz. Ne yazık ki, Liferay API sadece bu konuda net değil, muhtemelen bu konuda herhangi bir belge bulamayacaksınız. Tüm bunlar kesin olarak bildiklerinden, GUI ... –

2

oluşturma ve böylece gibi bir DynamicQuery yürütmek bu kodla StructureId (DDMStructure denir) olsun (sadece Template yerini alabilir Yapıları almak için Structure ile):

DynamicQuery q = DynamicQueryFactoryUtil.forClass(DDMTemplate.class) 
      .add(PropertyFactoryUtil.forName("name").like("%YOUR NAME%")); 
List<DDMTemplate> templates = DDMTemplateLocalServiceUtil.dynamicQuery(q); 

Sen yapıların isimlerinin beri like kullanmak zorunda/şablonlar şöyle kaydedilir:

<?xml version='1.0' encoding='UTF-8'?> 
<root available-locales="de_DE" default-locale="de_DE"> 
    <Name language-id="de_DE">YOUR NAME</Name> 
</root> 

farklı yerel ayarlar için farklı isimler olabilir.

+0

üzerinden bu "* Key" değerlerini değiştiremezsiniz. Sadece küçük bir iyileştirme önerisi: "_Starts_" adı ile adlandırılan yapıları seçmekten kaçınmak için, '.like ("% SİZİN ADIM%") '' den '.' ye ("%> ADINIZI <% ")' ye. –