Skip to main content

content.xml für Liferay Connector erstellen über ContentProjectionSitemap

Comments

10 comments

  • Zendesk API User
    Author: AndreasOesterle - 7/19/2013 9:49

    Hallo Jan Tilo,

    wenn ich dich richtig verstanden habe, dann meinst du das man auf dem Strukturordner unter dem sich die Seiten befinden die Haken deselektieren muss bei "Im Navigationsmenü" und "Navigationsmenü in Übersicht (Sitemap) anzeigen?". Mache ich das, wird für die Inhaltsseite gar kein XML Eintrag mehr in der navigation_<entrypointid>.xml angelegt. Das war's daher leider nicht.

    In der FirstSpirit_Modules_Liferay Dokumentation steht in Kapitel 3.1.3 Content Projectionen und andere lose Seiten nur, dass alle losen Seiten in der content.xml mit einer Item Struktur angelegt werden müssen.

    Das Script von Gerrit Bösebeck funktioniert bis auf ein paar kleine Einschränkungen:

    - Der Title wird in der content.xml auf den Referenznamen der Inhaltsseite gesetzt

    - Der Roles Eintrag ist hart verdrahtet drin und muss noch dynamisch aus dem CMS_INPUT_PERMISSION ausgelesen werden

    0
  • Zendesk API User
    Author: essmann - 7/24/2013 11:34

    Hallo Andreas,

    die content.xml wird Projektspezifisch generiert. Daher handelt es isch auch bei der hier besprochenen Implementierung um ein erweitertes Beispiel aus dem Liferay Showcase. Sie ist nicht Teil des Moduls und wird auch auch nicht gewartet. Ihr könnt diesen Code aber für Eurer Projekt als Basis nehmen und an Eure Bedürfnisse anpassen.

    Gruß,

    --Bernd

    0
  • Zendesk API User
    Author: AndreasOesterle - 7/18/2013 9:11

    Hallo Jan,

    danke für deine Antwort.

    Vom Konzept her habe ich das denke ich schon verstanden.

    Ich habe in der Strukturverwaltung in einen Ordner mehrere Seiten angelegt. Nach einem Deployment hätte ich erwartet, dass die Content.xml danach die XML Beschreibung für die Seiten enthält, welche nicht als Startseite definiert sind. Leider ist meine content.xml aber leer.

    Was genau mit dem Wort Contentprojektionen gemeint ist, verstehe ich auch noch nicht genau. Für mein Verständnis sollten all die Seiten in die content.xml rein geschrieben werden, welche nicht direkt über die navigation erreichbar sind.

    Viele Grüsse
    Andreas

    0
  • Zendesk API User
    Author: jan-tilo - 7/18/2013 8:23

    Hallo Andreas,

    folgendes kannst Du prüfen...

    Es sollten nämlich nicht alle Seiten aus einem Strukturordner enthalten sein sondern folgende:

    1. Es werden nur die Seiten in die content.xml geschrieben, welche NICHT eine Startseite sind
    2. Es werden Contentprojektionen generiert

    Kurz gesagt sollen in der content.xml die Seiten enthalten sein, die keinen eigenen Menüpunkt haben, bzw. nicht über einen Menüpunkt erreichbar sind.

    Viele Grüße

    Jan Tilo

    0
  • Zendesk API User
    Author: boesebeck - 7/18/2013 10:33

    Hallo Andreas,

    Andreas Österle wrote:

    Vom Konzept her habe ich das denke ich schon verstanden.

    Ich habe in der Strukturverwaltung in einen Ordner mehrere Seiten angelegt. Nach einem Deployment hätte ich erwartet, dass die Content.xml danach die XML Beschreibung für die Seiten enthält, welche nicht als Startseite definiert sind. Leider ist meine content.xml aber leer.

    Gibt es Fehler bei der Generierung? Bitte überprüf mal die Fehler der Vorschau.

    Andreas Österle wrote:

    Was genau mit dem Wort Contentprojektionen gemeint ist, verstehe ich auch noch nicht genau. Für mein Verständnis sollten all die Seiten in die content.xml rein geschrieben werden, welche nicht direkt über die navigation erreichbar sind.

    Eine Contentprojektion ist eine Abbildung von Datensätzen (Contentstore) auf Seiten die über eine Seitenreferenz ausgesteuert werden.

    0
  • Zendesk API User
    Author: jan-tilo - 7/18/2013 11:31

    Hallo Andreas,

    also wenn ich auf die schnelle das Template anschaue, scheint es ja ausschließlich Contentprojektionen zu generieren.

    Das wäre die Erklärung warum bei Dir nichts rauskommt.

    Ob das so nun korrekt ist kann ich jetzt nicht beurteilen.

    Viele Grüße

    Jan Tilo

    0
  • Zendesk API User
    Author: AndreasOesterle - 7/18/2013 11:13

    Hallo Gerrit,

    bei der Generierung wird kein Fehler ausgegeben. Im Log steht nur:

    INFO  18.07.2013 12:04:47.183 (de.espirit.firstspirit.generate.SiteProduction): creating output stream for /de/system/content.xml

    INFO  18.07.2013 12:04:47.183 (de.espirit.firstspirit.store.access.sitestore.PageRefImpl): generating page reference 'content' (id=14546, html, DE)

    INFO  18.07.2013 12:04:47.188 (de.espirit.firstspirit.generate.SiteProduction): creating output stream for /de/system/footer/startseite.html

    Eine Contentprojektion verwenden wir in dem Fall nicht. Ich habe zusätzliche Seiten in einen Strukturordner gelegt welche ich in der content.xml erwarte.

    Hier noch das Script für die contentprojection:

    <CMS_HEADER>

    <CMS_FUNCTION name="Navigation" resultname="fr_completeSitemap">

      <CMS_PARAM name="expansionVisibility" value="all"/>

      <CMS_PARAM name="wholePathSelected" value="0"/>

      <CMS_PARAM name="siteMap" value="1" />

      <CMS_PARAM name="multiPages" value="1"/>

      <CMS_ARRAY_PARAM name="pageRefRendering">

       <CMS_ARRAY_ELEMENT index="0..10"><![CDATA[

           $CMS_SET(node, #nav.node)$

           $CMS_SET(c2p, node.getContent2Params())$

           $CMS_IF(!c2p.isEmpty && #nav.ref.index >= 0)$

               $CMS_SET(set_entityList, c2p.getData(#global.language, #nav.ref.index))$

               $CMS_SET(set_IdList, [])$

            $CMS_SET(set_itemNamePostfix, "")$

            $CMS_SET(set_index, #nav.ref.index)$

            $CMS_SET(set_pageversion, #nav.node.page.revision.id)$

            $CMS_SET(set_version, #nav.node.revision.id)$

           

            $CMS_IF(set_entityList.size > 0)$

                $-- Index --$

                $CMS_IF(isSet(set_entityList))$

                       $CMS_IF(set_entityList.size > 1)$

                           $CMS_IF(set_index == null || #nav.ref.index == 0)$

                            $CMS_SET(set_itemNamePostfix, "")$

                           $CMS_ELSE$

                            $CMS_SET(set_itemNamePostfix, "_" + #nav.ref.index)$

                           $CMS_END_IF$

                       $CMS_ELSE$

                               $CMS_IF(set_entityList.get(0) != null)$               

                                   $CMS_SET(set_itemNamePostfix, "_" + set_entityList.get(0).id)$

                               $CMS_END_IF$

                     $CMS_END_IF$

                $CMS_END_IF$      

               

                $-- parent --$

                $CMS_SET(set_parent, #nav.node.parent.id)$

                $CMS_SET(old_prefix, #global.generationContext.urlCreator.getUrlPrefix())$

                $CMS_SET(void, #global.generationContext.urlCreator.setUrlPrefix(""))$

               

                $CMS_SET(prj, #global.project)$

               

                $CMS_SET(set_page_type, "")$

                $CMS_IF(#nav.ref.node.page.formData.fs_portal_pageType.value == "mixedportalpage")$

                    $CMS_SET(set_page_type, "mixedportalpage")$

                $CMS_END_IF$

                $CMS_IF(!#nav.node.isStartNode())$

                <Item name="$CMS_VALUE(#nav.node.id)$$CMS_VALUE(set_itemNamePostfix)$" version="$CMS_VALUE(set_version)$" pageversion="$CMS_VALUE(set_pageversion)$" parent="$CMS_VALUE(set_parent)$" roles="'Guest','Kunden','Marketing','Mitglieder'" type="$CMS_VALUE(set_page_type)$">

                       $CMS_FOR(lang, #global.project.languages)$

                           <Title locale="$CMS_VALUE(lang.abbreviation.toLowerCase())$">$CMS_VALUE(#nav.label)$</Title>

                         $--<Url locale="$CMS_VALUE(lang.abbreviation.toLowerCase())$">$CMS_REF(#nav.ref,abs:1, lang:lang)$</Url>--$

                    $CMS_END_FOR$

                        <LayoutTemplate>$CMS_VALUE(#nav.ref.node.page.formData.fs_portal_layoutTemplate.value)$</LayoutTemplate>

                   

                    $CMS_FOR(section, #nav.ref.node.body("linke_spalte").getChildren(class("de.espirit.firstspirit.access.store.pagestore.Section")))$

                        <Item name="$CMS_VALUE(section.getId())$" version="$CMS_VALUE(set_version)$" pageversion="$CMS_VALUE(set_pageversion)$" roles="'Guest','Kunden','Mitglieder','Marketing'">

                               $CMS_FOR(lang, #global.project.languages)$

                                 <Url locale="$CMS_VALUE(lang.abbreviation.toLowerCase())$">$CMS_REF(#nav.ref,abs:1, lang:lang)$?sectionId=$CMS_VALUE(section.id)$</Url>

                            $CMS_END_FOR$

                                <LayoutContainer>column-1</LayoutContainer>

                        </Item>

                    $CMS_END_FOR$

                    $CMS_FOR(section, #nav.ref.node.body("rechte_spalte").getChildren(class("de.espirit.firstspirit.access.store.pagestore.Section")))$

                        <Item name="$CMS_VALUE(section.getId())$" version="$CMS_VALUE(set_version)$" pageversion="$CMS_VALUE(set_pageversion)$" roles="'Guest','Kunden','Mitglieder','Marketing'">

                               $CMS_FOR(lang, #global.project.languages)$

                                 <Url locale="$CMS_VALUE(lang.abbreviation.toLowerCase())$">$CMS_REF(#nav.ref,abs:1, lang:lang)$?sectionId=$CMS_VALUE(section.id)$</Url>

                            $CMS_END_FOR$

                                <LayoutContainer>column-2</LayoutContainer>

                        </Item>

                    $CMS_END_FOR$

                </Item>

                $CMS_END_IF$

                $CMS_SET(void, #global.generationContext.urlCreator.setUrlPrefix(old_prefix))$

            $CMS_END_IF$

        $CMS_END_IF$

        ]]></CMS_ARRAY_ELEMENT>

      </CMS_ARRAY_PARAM>

    </CMS_FUNCTION>

    </CMS_HEADER><?xml version="1.0" encoding="UTF-8"?>

    <Root projectname="$CMS_VALUE(#global.project.name)$" projectid="$CMS_VALUE(#global.project.id)$">

    $CMS_VALUE(fr_completeSitemap)$

    </Root>

    0
  • Zendesk API User
    Author: jan-tilo - 7/19/2013 8:50

    Hallo Andreas,

    ein Menüknoten/Seite wird auf Invisible=true gesetzt wenn in der Struktur die Haken bei "Im Navigationsmenü" und "Navigationsmenü in Übersicht" für alle Sprachen nicht gesetzt sind.

    Siehe hierzu auch die Dokumentation SAP Business Package for FirstSpirit Kapitel 3.2.2.1.

    Viele Grüße

    Jan Tilo

    0
  • Zendesk API User
    Author: AndreasOesterle - 7/19/2013 8:06

    Besten Dank für das Script. Ich werde es gleich ausprobieren.

    Nachdem die Content.xml ja nun hauptsächlich für Content Projektionen gedacht ist, wäre die Frage wie man ansonsten hidden Pages im Portal erzeugt.

    In der navigation.xml gibt es die Möglichkeit Seiten als invisible zu setzen. Wie man diese Einstellung aber über FirstSpirit steuert ist mir noch nicht ganz klar.

    <Item name="4254" version="10399" modifiedby="Admin" pageversion="10652" type="mixedportalpage">

    <Title locale="en">SeitentitelEnglisch</Title>

    <Title locale="de">SeitentitelDeutsch</Title>

    <GenericAttribute name="releasedate" value="2013-07-17-13-16-46" />

    <Priority>0</Priority>

    <FolderEntry>true</FolderEntry>

    <Invisible>true</Invisible>

    - <!--
     PortalPageWriter 

    --> 


    <LayoutTemplate>2_columns_iii</LayoutTemplate>



    - <!--
     PortalSectionWriter 

    --> 

    Ein Entwickler vom Liferay Portal Connector hat mir erzählt, dass wenn dieses Attribut auf true gesetzt ist, die Seiten im Liferay auf hidden gesetzt werden. Er wusste jedoch selber nicht wie man in FirstSpirit das Flag steuert.

    0
  • Zendesk API User
    Author: boesebeck - 7/18/2013 12:02

    Hallo,

    die Content.xml ist für Contentprojektionen geplant worden, kann aber im Projekt auch auf nicht "nicht Startseiten" angepasst werden.

    Ich habe das jetzt nicht nachgetestet, sondern nur "trocken" angepasst.

    <CMS_HEADER>

    <CMS_FUNCTION name="Navigation" resultname="fr_completeSitemap">

      <CMS_PARAM name="expansionVisibility" value="all"/>

      <CMS_PARAM name="wholePathSelected" value="0"/>

      <CMS_PARAM name="siteMap" value="1" />

      <CMS_PARAM name="multiPages" value="1"/>

      <CMS_ARRAY_PARAM name="pageRefRendering">

       <CMS_ARRAY_ELEMENT index="0..10"><![CDATA[

           $CMS_SET(node, #nav.node)$

           $CMS_SET(c2p, node.getContent2Params())$

           $CMS_SET(set_itemNamePostfix, "")$

           $CMS_SET(set_pageversion, #nav.node.page.revision.id)$

           $CMS_SET(set_version, #nav.node.revision.id)$

           $CMS_SET(set_IdList, [])$

      

            $CMS_IF(!c2p.isEmpty && #nav.ref.index >= 0)$

              $CMS_SET(set_entityList, c2p.getData(#global.language, #nav.ref.index))$

              $CMS_SET(set_index, #nav.ref.index)$

             

              $CMS_IF(set_entityList.size > 0)$

                $-- Index --$

                $CMS_IF(isSet(set_entityList))$

                  $CMS_IF(set_entityList.size > 1)$

                    $CMS_IF(set_index == null || #nav.ref.index == 0)$

                      $CMS_SET(set_itemNamePostfix, "")$

                    $CMS_ELSE$

                      §CMS_SET(set_itemNamePostfix, "_" + #nav.ref.index)$

                    $CMS_END_IF$

                  $CMS_ELSE$

                    $CMS_IF(set_entityList.get(0) != null)$               

                      $CMS_SET(set_itemNamePostfix, "_" + set_entityList.get(0).id)$

                    $CMS_END_IF$

                  $CMS_END_IF$

                $CMS_END_IF$      

              $CMS_END_IF$

            $CMS_END_IF$

        $-- parent --$

        $CMS_SET(set_parent, #nav.node.parent.id)$

        $CMS_SET(old_prefix, #global.generationContext.urlCreator.getUrlPrefix())$

        $CMS_SET(void, #global.generationContext.urlCreator.setUrlPrefix(""))$

       

        $CMS_SET(prj, #global.project)$

        $CMS_SET(set_page_type, "")$

        $CMS_IF(#nav.ref.node.page.formData.fs_portal_pageType.value == "mixedportalpage")$

            $CMS_SET(set_page_type, "mixedportalpage")$

        $CMS_END_IF$

        $CMS_IF(!#nav.node.isStartNode())$

          <Item name="$CMS_VALUE(#nav.node.id)$$CMS_VALUE(set_itemNamePostfix)$" version="$CMS_VALUE(set_version)$" pageversion="$CMS_VALUE(set_pageversion)$" parent="$CMS_VALUE(set_parent)$" roles="'Guest','Kunden','Marketing','Mitglieder'" type="$CMS_VALUE(set_page_type)$">

                 $CMS_FOR(lang, #global.project.languages)$

                     <Title locale="$CMS_VALUE(lang.abbreviation.toLowerCase())$">$CMS_VALUE(#nav.label)$</Title>

                   $--<Url locale="$CMS_VALUE(lang.abbreviation.toLowerCase())$">$CMS_REF(#nav.ref,abs:1, lang:lang)$</Url>--$

              $CMS_END_FOR$

                  <LayoutTemplate>$CMS_VALUE(#nav.ref.node.page.formData.fs_portal_layoutTemplate.value)$</LayoutTemplate>

             

              $CMS_FOR(section, #nav.ref.node.body("linke_spalte").getChildren(class("de.espirit.firstspirit.access.store.pagestore.Section")))$

                  <Item name="$CMS_VALUE(section.getId())$" version="$CMS_VALUE(set_version)$" pageversion="$CMS_VALUE(set_pageversion)$" roles="'Guest','Kunden','Mitglieder','Marketing'">

                         $CMS_FOR(lang, #global.project.languages)$

                           <Url locale="$CMS_VALUE(lang.abbreviation.toLowerCase())$">$CMS_REF(#nav.ref,abs:1, lang:lang)$?sectionId=$CMS_VALUE(section.id)$</Url>

                      $CMS_END_FOR$

                          <LayoutContainer>column-1</LayoutContainer>

                  </Item>

              $CMS_END_FOR$

              $CMS_FOR(section, #nav.ref.node.body("rechte_spalte").getChildren(class("de.espirit.firstspirit.access.store.pagestore.Section")))$

                  <Item name="$CMS_VALUE(section.getId())$" version="$CMS_VALUE(set_version)$" pageversion="$CMS_VALUE(set_pageversion)$" roles="'Guest','Kunden','Mitglieder','Marketing'">

                         $CMS_FOR(lang, #global.project.languages)$

                           <Url locale="$CMS_VALUE(lang.abbreviation.toLowerCase())$">$CMS_REF(#nav.ref,abs:1, lang:lang)$?sectionId=$CMS_VALUE(section.id)$</Url>

                      $CMS_END_FOR$

                          <LayoutContainer>column-2</LayoutContainer>

                  </Item>

              $CMS_END_FOR$

            </Item>

          $CMS_END_IF$

        $CMS_SET(void, #global.generationContext.urlCreator.setUrlPrefix(old_prefix))$

        ]]></CMS_ARRAY_ELEMENT>

      </CMS_ARRAY_PARAM>

    </CMS_FUNCTION>

    </CMS_HEADER><?xml version="1.0" encoding="UTF-8"?>

    <Root projectname="$CMS_VALUE(#global.project.name)$" projectid="$CMS_VALUE(#global.project.id)$">

    $CMS_VALUE(fr_completeSitemap)$

    </Root>

    0

Please sign in to leave a comment.