Questions & Answers

SOLVED
MichaelN
I'm new here

PageTemplate per Api anlegen?

Jump to solution

Hallo,

ist es mรถglich per Api ein neues Template (per XML oder so) anzulegen?

0 Kudos
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo,

ja, das geht, hier z.B. mit einem Menรผscript.

import de.espirit.firstspirit.access.BaseContext;

import de.espirit.firstspirit.access.store.ElementDeletedException;

import de.espirit.firstspirit.access.store.LockException;

import de.espirit.firstspirit.access.store.Store;

import de.espirit.firstspirit.access.store.templatestore.PageTemplate;

import de.espirit.firstspirit.access.store.templatestore.PageTemplates;

import de.espirit.firstspirit.access.store.templatestore.TemplateStoreRoot;

import de.espirit.firstspirit.agency.StoreAgent;

final StoreAgent storeAgent=context.requireSpecialist(StoreAgent.TYPE);

final TemplateStoreRoot templateStoreRoot= (TemplateStoreRoot) storeAgent.getStore(Store.Type.TEMPLATESTORE);

final String source="<html><head></head><body>$CMS_VALUE(#global.page.body(\"content\"))$</body></html>";

final PageTemplates pageTemplates=templateStoreRoot.getPageTemplates();

PageTemplate pageTemplate=null;

try {

          pageTemplate=pageTemplates.createTemplate("my_template_uid", true);

          pageTemplate.setLock(true);

          //alle nรถtigen Modifikationen, z.B.

          pageTemplate.createTemplateBody("content");

          pageTemplate.setChannelSource(pageTemplate.getProject().getTemplateSets().get(0),source);

          //...

          pageTemplate.save();

} catch (LockException e) {

          //... error handling

} catch (ElementDeletedException e) {

          //... error handling

} finally {

          if(pageTemplate!=null && pageTemplate.isLocked()){

                    try {

                              pageTemplate.setLock(false);

                    } catch (LockException e) {

                              //... error handling

                    } catch (ElementDeletedException e) {

                              //... error handling

                    }

          }

}

Man muss hier aber natรผrlich auch noch das Formular definieren (.setGomSource) usw.

Weitere Informationen zur Manipulation des Seitentemplates (wenn es erstmal mit createTemplate(...) angelegt ist) liefert die API. Fรผr andere Templates geht es natรผrlich analog. Den Code fรผr den Ausgabekanal kann man sich natรผrlich anders besorgen (z.B. aus einer Datei).

Viele GrรผรŸe

Michael

View solution in original post

0 Kudos
1 Reply
mbergmann
Crownpeak employee

Hallo,

ja, das geht, hier z.B. mit einem Menรผscript.

import de.espirit.firstspirit.access.BaseContext;

import de.espirit.firstspirit.access.store.ElementDeletedException;

import de.espirit.firstspirit.access.store.LockException;

import de.espirit.firstspirit.access.store.Store;

import de.espirit.firstspirit.access.store.templatestore.PageTemplate;

import de.espirit.firstspirit.access.store.templatestore.PageTemplates;

import de.espirit.firstspirit.access.store.templatestore.TemplateStoreRoot;

import de.espirit.firstspirit.agency.StoreAgent;

final StoreAgent storeAgent=context.requireSpecialist(StoreAgent.TYPE);

final TemplateStoreRoot templateStoreRoot= (TemplateStoreRoot) storeAgent.getStore(Store.Type.TEMPLATESTORE);

final String source="<html><head></head><body>$CMS_VALUE(#global.page.body(\"content\"))$</body></html>";

final PageTemplates pageTemplates=templateStoreRoot.getPageTemplates();

PageTemplate pageTemplate=null;

try {

          pageTemplate=pageTemplates.createTemplate("my_template_uid", true);

          pageTemplate.setLock(true);

          //alle nรถtigen Modifikationen, z.B.

          pageTemplate.createTemplateBody("content");

          pageTemplate.setChannelSource(pageTemplate.getProject().getTemplateSets().get(0),source);

          //...

          pageTemplate.save();

} catch (LockException e) {

          //... error handling

} catch (ElementDeletedException e) {

          //... error handling

} finally {

          if(pageTemplate!=null && pageTemplate.isLocked()){

                    try {

                              pageTemplate.setLock(false);

                    } catch (LockException e) {

                              //... error handling

                    } catch (ElementDeletedException e) {

                              //... error handling

                    }

          }

}

Man muss hier aber natรผrlich auch noch das Formular definieren (.setGomSource) usw.

Weitere Informationen zur Manipulation des Seitentemplates (wenn es erstmal mit createTemplate(...) angelegt ist) liefert die API. Fรผr andere Templates geht es natรผrlich analog. Den Code fรผr den Ausgabekanal kann man sich natรผrlich anders besorgen (z.B. aus einer Datei).

Viele GrรผรŸe

Michael

0 Kudos

Type a product name