Kona Laxman Deepak
Kona Laxman Deepak

Reputation: 280

How to get the Structure/Template id by Structure/Template name

I have a requirement that, Need to create JournalArticle with Structure and Template.While creating JournalArticle the method expecting the StructureId and TemplateId but these are generated by Liferay.So by name how can i get Id's of both.

Upvotes: 2

Views: 3931

Answers (2)

Timo Türschmann
Timo Türschmann

Reputation: 4696

Create and execute a DynamicQuery, like so (just replace Template with Structure to get structures):

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

You have to use like since the names of the structures/templates are saved like so:

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

There can be different names for different locales.

Upvotes: 4

fabballe
fabballe

Reputation: 771

You can get StructureId (called DDMStructure) with this code

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

And TemplateId (called DDMTemplate) with this code

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

Upvotes: 1

Related Questions