riessh
Returning Observer

Vorschau Datum bei Deployment benutzen?

Hallo Community,

Ich arbeite bei mir in Globale Inhalte mit einem Vorschau-Datum. Die Variable wird über die Struktur weitergegeben und von den Datenquellen benutzt. So kann ich in der Vorschau, bei Daten aus Datenquellen, schon die Inhalt des nächsten Monats sehen.

Beim Deployment in Develloper-Umgebung wird der Freigabestand mit setUseRelease(false) ausser Kraft gesetzt. Nur die Inhalte aus den Datenquellen sind die aus dem aktueller Monat. Ich suche jetzt nach einer Möglichkeit, die das eingestellte Vorschau-Datum benutzt. Ist das ohne weiteres Möglich?

Wir sezten 5.1 ein.

VG

Holger Riess

0 Kudos
12 Replies

Hallo Jan,

okay.

Hintergrund: Bei uns ändern sich jeden Monat ein paar Inhalte und diese sind immer an einen bestimmten Monat gebunden. Deswegen wird in der entsprechenden Datenquelle jeweils ein Datum definiert und abgefragt. Zusätzlich kann ich so auch auf ältere Daten zurückgreifen. In der Vorschau sehe ich dann die Zukunft. Deployed wird aber trotzdem noch der Stand für den aktuellen Monat. Das klappt auch ganz gut. So, zum Monatsende, wir nun alles freigegeben. Der neue Monat beginnt aber erst nachts um 0 Uhr. Wenn ich jetzt in die Devoloper-Umgebung deploye, dann würde ich dort gerne den neuen und nicht den aktuellen Monat sehen.

'Datum' ist in der Datenquelle definiert.

Hier wird z.Bsp. das aktuelle Rezept angezeigt. In der Vorschau, das mit dem in der Variable gesetzten Monat.

<CMS_HEADER>
<CMS_FUNCTION name="contentSelect" resultname="frstRezepte">
<CMS_PARAM  name="schema" value="mea" />
<QUERY entityType="Rezepte"></QUERY>
</CMS_FUNCTION>

</CMS_HEADER>
$CMS_SET(mmmm,false)$
$CMS_FOR(data,frstRezepte)$
$CMS_SET(dataMonat,data.datum.format("M/yyyy"))$
$CMS_IF(dataMonat == jetzt.parse.toString)$
        <h1>$CMS_VALUE(data.titel_aktion,default:"")$</h1>
        $CMS_VALUE(data.text_aktion,default:"")$
$CMS_END_IF$
$CMS_END_FOR$

'jetzt' ist in der Struktur definiert.

$CMS_SET(mmmm,false)$$CMS_VALUE(#global.gca("vorschau_datum"))$

Zusätzlich wird in den Globalen Einstellung das 'vorschau_datum' 'gcaDatum' gesetzt.

>$CMS_TRIM(level:4)$

$CMS_IF(#global.preview)$

  $CMS_IF(mmmm)$
   $CMS_VALUE(gcaDatum.format("MMMM"))$
  $CMS_ELSE$
   $CMS_VALUE(gcaDatum.format("M/yyyy"))$
  $CMS_END_IF$

$CMS_ELSE$

  $CMS_IF(mmmm)$
   $CMS_VALUE(#global.now.format("MMMM"))$
  $CMS_ELSE$
   $CMS_VALUE(#global.now.format("M/yyyy"))$
  $CMS_END_IF$

$CMS_END_IF$

$CMS_END_TRIM$

Viele Grüße

Holger

0 Kudos

Hallo Holger,

wir haben intern noch mal über Dein Problem gesprochen und haben immer mehr Fragen an Dich als Antworten. Ich versuche jetzt einfach mal, Dir trotzdem zu helfen, auch wenn ich vielleicht daneben liegen sollte.

Apropos zeitgesteuerte Veröffentlichung, FirstSpirit hat dazu was. Les bitte mal im SiteArchitect-Handbuch (z.B. http://www.e-spirit.com/odfs52/dokumentation/fuer-redakteure/FSAR_DE_FirstSpirit_SiteArchitect.pdf) unter Kapitel 8.3.1.5 Zeitgesteuerte Verknüpfung. Hier geht es um normale Seiten, nicht um Datenquellen.

Zu Deinem Code oben, mir kommt es vor als ob die Variable mmmm immer nur false ist und dadurch nur die Else-Zweige ausgeführt werden. Aber ich kann mich auch irren. Ich persönlich glaube Du versuchst da zu viel per Templating zu lösen, was in eine Datenbankabfrage gehört.

Bei Datensätzen macht man das per Query (Ab Startdatum sollen sollen Datensätze veröffentlicht werden):

Beispiel 1 (frei erfunden) - Ab Startdatum veröffentlichen:

<QUERY entityType="meineEntity">

          <AND>

                        <NOTNULL attribute="startDatum"/>

                    <LTE attribute="startDatum" datatype="de.espirit.common.Today" value="1470088800000"/>

                    

          </AND>

</QUERY>

Beispiel 2 (aus e-Spirit.com) bis Enddatum oder ewig veröffentlichen:

<CMS_FUNCTION name="contentSelect" resultname="fr_events">

                    <CMS_PARAM name="schema" value="global" />

                    <CMS_VALUE_PARAM name="language" value="#global.language" />

                    <QUERY entityType="event">

                              <FILTERPARAM parameter="language" datatype="java.lang.String"/>

                              <ORDERCRITERIA attribute="date" descending="0" />

                              <AND>

                              <LIKE attribute="channel" parameter="language"/>

                              <OR>

                                        <GTE attribute="endDate" datatype="de.espirit.common.Today" value="1447023600000"/>

                                        <IS_NULL attribute="endDate"/>

                              </OR>

                              </AND>

                    </QUERY>

          </CMS_FUNCTION>

Typischerweise haben Veranstaltungen ein Enddatum, ab dem sie nicht mehr interessant sind und deshalb nicht mehr auftauchen. Alle Detailseiten von Datensätzen die nicht in der Abfrage vorkommen, werden auch nicht deployt.

Wenn man eine solche Abfrage hat, kann man jede Nacht getrost ein Full-Deployment des Projektes machen, da man immer nur die Daten rausschreibt die man haben möchte.

Wenn es um monatsweise Veröffentlichung geht, kann man als Datum ja immer den Monatsersten nehmen. Das Datum muss man ja nicht anziegen.

Ansonsten haben wir natürlich auch oft die Anforderung, Seiten nur zu bestimmten Zeitpunkten zu veröffentlichen. Andere vor Dir hatten auch schon die gleichen Probleme, guck Dir mal folgende Posts hier in der Community an:

https://community.e-spirit.com/message/24650

https://community.e-spirit.com/message/9790

https://community.e-spirit.com/message/9957

https://community.e-spirit.com/message/15764

Ansonsten suche nach "zeitgesteuert" in der Community, da findest Du viele Posts zu dem Thema.

Grüße Marian

0 Kudos
mikula
Crownpeak employee

Hallo Holger,

benötigst Du noch weitere Hilfe oder hat Dir die Antwort von Marian bereits geholfen?

In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

Viele Grüße

Martin

0 Kudos