2016-04-05 10 views
2

私は、構造とテンプレートでJournalArticleを作成する必要があります.NaseArticleを作成する際にStructureIdとTemplateIdが必要ですが、これらはLiferay.Soによって生成されますどのように私は両方のIDの取得することができます名前。構造/テンプレート名で構造/テンプレートIDを取得する方法

+0

すべての構造とテンプレートをフェッチし、それらを繰り返して、名前チェックに基づいて必要な構造/テンプレートを設定します。他の方法は 'DynamicQuery'を' xxxLocalServiceUtil'のメソッド 'dynamicQuery'に渡すことです。これは結果リストを返します。 –

+0

1. [*** Fetch All ***](http://stackoverflow.com/questions/25603742/get-content-of-structure-liferay)2. [*** Dynamic Query ***](https ://www.liferay.com/community/wiki/-/wiki/Main/Queries+2%3A+DynamicQuery+API) –

+1

違いはありません.. @ Romeo –

答えて

0

あなたはとても(ちょうどTemplateを置き換えるように、DynamicQueryを作成し、実行し、このコードこのコード

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

これは名前ではなく、templateKeyによって取得されます。 –

+0

実際、structureKey/templateKey _は名前として考えることができます。 "ddmstructure"テーブルを見ると、(生成された数字の代わりに)いくつかの_predefined_構造の正規の名前が見つかります。残念ながら、Liferay APIはこれについてはっきりしていませんが、これについてのドキュメントはほとんど見つかりません。確かに知っていることは、GUIを介してこれらの "* Key"の値を変更することはできません... –

2

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

そしてれるtemplateId(DDMTemplateと呼ばれる)と(DDMStructureと呼ばれる)StructureIdを得ることができます構造を得るためにStructure):

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

構造/テンプレートの名前がそうのように保存されているので、あなたはlikeを使用する必要があります。

<?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> 

異なるロケールごとに異なる名前が存在する場合があります。

+0

こんにちは、ちょっとした改善提案:名前が「あなたの名前」の_starts_という名前の構造を選択しないようにするには、 '.like("%YOUR NAME% ")'。 '("%>あなたの名前<% ")'に変更する方がよいでしょう。 –

関連する問題