bappenzeller
I'm new here

Regel funktioniert nicht

Jump to solution

Hallo,

ich habe Inputbox:

<CMS_INPUT_COMBOBOX name="st_Category" allowEmpty="no" editable="no" hFill="yes" useLanguages="no">

    <ENTRIES>

      <ENTRY value="News">

        <LANGINFOS>

          <LANGINFO lang="*" label="1"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Trade Article">

        <LANGINFOS>

          <LANGINFO lang="*" label="2"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Video">

        <LANGINFOS>

          <LANGINFO lang="*" label="3/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Blog">

        <LANGINFOS>

          <LANGINFO lang="*" label="4"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Uncategorizied">

        <LANGINFOS>

          <LANGINFO lang="*" label="5"/>

        </LANGINFOS>

      </ENTRY>

    </ENTRIES>

    <LANGINFOS>

      <LANGINFO lang="*" label="Category"/>

      <LANGINFO lang="DE" label="Kategorie"/>

    </LANGINFOS>

  </CMS_INPUT_COMBOBOX>

und bei Regeln:

<RULE>

<WITH>

<EQUAL>

<PROPERTY name="ENTRY" source="st_Category"/>

<TEXT>News</TEXT>

</EQUAL>

</WITH>

<DO>

<PROPERTY name="VISIBLE" source="st_Language"/>

<PROPERTY name="VISIBLE" source="st_Country"/>

<PROPERTY name="VISIBLE" source="st_ContentType"/>

</DO>

</RULE>

Es wird aber nur der ContentType dargestellt, die beiden vorher nicht.
Alle 3 Elemente haben keine hidden="yes" Eigenschaft.

Weiß jemand Rat?

Danke und Gruß

0 Kudos
1 Solution

Accepted Solutions

Hallo Bernd,

Du hast "widersprüchliche" Regeln. Zum Beispiel arbeiten die ersten beiden "gegeneinander". Wichtig ist:

  1. Regeln (bzw. das WITH/DO) bilden keine "Wenn/Dann"-Logik ab sondern sind tatsächlich Wertezuweisungen. D.h. das was im WITH ermittelt wird (ob es jetzt true oder false ergibt) wird den Eigenschaften im DO (hier: VISIBLE) zugewiesen.
  2. Die Auswertungsreihenfolge der Regeln entspricht nicht zwingend der Reihenfolge, in der sie definiert sind.

Darum wäre hier die Lösung, dafür zu sorgen dass der VISIBLE-Wert "eindeutig" ist und nicht von verschiedenen Regeln für dieselbe Eingabekomponente auf unterschiedliche Werte gesetzt wird.

Viele Grüße

Michael

View solution in original post

0 Kudos
9 Replies
mbergmann
Crownpeak employee

Hallo Bernd,

das sollte so eigentlich funktionieren.

Schau bitte mal im Logging (Hilfe=> Log anzeige) ob da irgendwelche Fehler bzw. Warnungen drin sind.

Ansonsten:

1. Gibt es evtl. noch weitere Regeln die Einfluss auf die Sichtbarkeit der EKs nehmen?

2. Vielleicht ist es auch ein ganz banaler Typo (z.B. Groß/Kleinschreibung) bei den EK-Namen?

Viele Grüße

Michael

0 Kudos

Hallo Michael,

vielen Dank für deine Antwort.

Was ich herausgefunden habe, dass es mit dem Typ in der Eingabemaske zusammenhängt.

CMS_INPUT_LIST funktioniert anscheinend nicht, oder ich mache was falsch.

Wenn ich stattdessen eine CMS_INPUT_CHECKBOX nehme, funktioniert alles wie erwartet, ich kann also diese ein- und ausblenden.

Danke und viele Grüße,

Bernd

0 Kudos

Hallo Bernd,

ich habe das mal lokal getestet mit einer alten (2018-07) und einer neuen (2019-05) Version. Bei mir geht es...

Welche Version nutzt ihr? Ich habe auf die Schnelle allerdings auch kein Bug.Ticket bei uns gefunden das zu dem von Dir beschriebenen Verhalten passt.

Kannst Du mal das komplette Formular (alle EKs, alle Regeln) posten?

Viele Grüße

Michael

0 Kudos

Hallo Michael,

vielen Dank!

Wir benutzen Version 5.2.

Das Forumlar sieht so aus:

<CMS_MODULE>

  <CMS_INPUT_COMBOBOX name="st_Category" allowEmpty="no" editable="no" hFill="yes" useLanguages="no">

    <ENTRIES>

      <ENTRY value="News">

        <LANGINFOS>

          <LANGINFO lang="*" label="News"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Trade Article">

        <LANGINFOS>

          <LANGINFO lang="*" label="Trade Article"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Video">

        <LANGINFOS>

          <LANGINFO lang="*" label="YouTube"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Blog">

        <LANGINFOS>

          <LANGINFO lang="*" label="Blog"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Uncategorizied">

        <LANGINFOS>

          <LANGINFO lang="*" label="Uncategorizied"/>

        </LANGINFOS>

      </ENTRY>

    </ENTRIES>

    <LANGINFOS>

      <LANGINFO lang="*" label="Category"/>

      <LANGINFO lang="DE" label="Kategorie"/>

    </LANGINFOS>

  </CMS_INPUT_COMBOBOX>

  <CMS_INPUT_TEXT name="st_NewCategory" hFill="yes" singleLine="no">

    <LANGINFOS>

      <LANGINFO lang="*" label="Category"/>

      <LANGINFO lang="DE" label="Kategorie"/>

    </LANGINFOS>

  </CMS_INPUT_TEXT>

  <CMS_INPUT_TEXT name="st_Caption" hFill="yes" singleLine="no">

    <LANGINFOS>

      <LANGINFO lang="*" label="Caption"/>

      <LANGINFO lang="DE" label="Überschrift"/>

    </LANGINFOS>

  </CMS_INPUT_TEXT>

  <CMS_INPUT_LIST name="st_Language" allowEmpty="no" hFill="yes">

    <ENTRIES>

      <ENTRY value="english">

        <LANGINFOS>

          <LANGINFO lang="*" label="english"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="german">

        <LANGINFOS>

          <LANGINFO lang="*" label="german" description="german"/>

        </LANGINFOS>

      </ENTRY>

    </ENTRIES>

    <LANGINFOS>

      <LANGINFO lang="*" label="Language" description="Language"/>

    </LANGINFOS>

  </CMS_INPUT_LIST>

  <CMS_INPUT_LIST name="st_Country" allowEmpty="no" hFill="yes">

    <ENTRIES>

      <ENTRY value="england">

        <LANGINFOS>

          <LANGINFO lang="*" label="England"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="germany">

        <LANGINFOS>

          <LANGINFO lang="*" label="germany" description="germany"/>

        </LANGINFOS>

      </ENTRY>

    </ENTRIES>

    <LANGINFOS>

      <LANGINFO lang="*" label="country"/>

      <LANGINFO lang="DE" label="Land"/>

    </LANGINFOS>

  </CMS_INPUT_LIST>

  <CMS_INPUT_CHECKBOX name="st_ContentType" allowEmpty="no" gridWidth="3" hFill="yes">

    <ENTRIES>

      <ENTRY value="Products">

        <LANGINFOS>

          <LANGINFO lang="*" label="Products"/>

          <LANGINFO lang="DE" label="Produkte"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Company">

        <LANGINFOS>

          <LANGINFO lang="*" label="Company"/>

          <LANGINFO lang="DE" label="Firma"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Website">

        <LANGINFOS>

          <LANGINFO lang="*" label="Website"/>

        </LANGINFOS>

      </ENTRY>

    </ENTRIES>

    <LANGINFOS>

      <LANGINFO lang="*" label="Content type"/>

      <LANGINFO lang="DE" label="Inhaltstyp"/>

    </LANGINFOS>

  </CMS_INPUT_CHECKBOX>

  <FS_REFERENCE name="st_image_src" hFill="yes" upload="yes">

    <FILTER>

      <ALLOW type="picture"/>

    </FILTER>

    <LANGINFOS>

      <LANGINFO lang="*" label="image source"/>

      <LANGINFO lang="DE" label="Bild Quelle"/>

    </LANGINFOS>

    <PROJECTS>

      <LOCAL name=".">

        <SOURCES>

          <FOLDER name="root" store="mediastore"/>

        </SOURCES>

      </LOCAL>

    </PROJECTS>

  </FS_REFERENCE>

  <CMS_INPUT_COMBOBOX name="st_link_type" hFill="yes" preset="copy" singleLine="no">

    <ENTRIES>

      <ENTRY value="internal">

        <LANGINFOS>

          <LANGINFO lang="*" label="internal link"/>

          <LANGINFO lang="DE" label="interne Verlinkung"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="external">

        <LANGINFOS>

          <LANGINFO lang="*" label="external link"/>

          <LANGINFO lang="DE" label="externe Verlinkung"/>

        </LANGINFOS>

      </ENTRY>

    </ENTRIES>

    <LANGINFOS>

      <LANGINFO lang="*" label="link type"/>

      <LANGINFO lang="DE" label="Art des Verweises"/>

    </LANGINFOS>

  </CMS_INPUT_COMBOBOX>

  <CMS_INPUT_TEXT name="st_URL" hFill="yes">

    <LANGINFOS>

      <LANGINFO lang="*" label="Blog feed URL"/>

    </LANGINFOS>

  </CMS_INPUT_TEXT>

  <FS_REFERENCE name="st_link_ref" allowEmpty="yes" hFill="yes" sections="yes">

    <FILTER>

      <ALLOW type="pageref"/>

      <ALLOW type="pagereffolder"/>

      <ALLOW type="media"/>

    </FILTER>

    <LANGINFOS>

      <LANGINFO lang="*" label="page reference"/>

      <LANGINFO lang="DE" label="Seiten Referenz"/>

    </LANGINFOS>

    <PROJECTS>

      <LOCAL name=".">

        <SOURCES>

          <FOLDER name="root" store="sitestore"/>

        </SOURCES>

      </LOCAL>

    </PROJECTS>

  </FS_REFERENCE>

  <CMS_INPUT_TEXT name="st_ExternalLink" hFill="yes">

    <LANGINFOS>

      <LANGINFO lang="*" label="External link"/>

      <LANGINFO lang="DE" label="Externer link"/>

    </LANGINFOS>

  </CMS_INPUT_TEXT>

  <CMS_INPUT_CHECKBOX name="randomizer" hFill="yes">

    <ENTRIES>

      <ENTRY value="on">

        <LANGINFOS>

          <LANGINFO lang="*" label="Randomizer"/>

        </LANGINFOS>

      </ENTRY>

    </ENTRIES>

    <LANGINFOS>

      <LANGINFO lang="*" label="Randomizer"/>

    </LANGINFOS>

  </CMS_INPUT_CHECKBOX>

</CMS_MODULE>

Die Regeln:

<RULES>

<RULE>

<WITH>

<EQUAL>

<PROPERTY name="ENTRY" source="st_Category"/>

<TEXT>News</TEXT>

</EQUAL>

</WITH>

<DO>

<PROPERTY name="VISIBLE" source="st_Country"/>

<PROPERTY name="VISIBLE" source="st_Language"/>

</DO>

</RULE>

<RULE>

<WITH>

<OR>

<EQUAL>

<PROPERTY name="ENTRY" source="st_Category"/>

<TEXT>Trade Article</TEXT>

</EQUAL>

</OR>

</WITH>

<DO>

<PROPERTY name="VISIBLE" source="st_Language"/>

<PROPERTY name="VISIBLE" source="st_Country"/>

</DO>

</RULE>

<RULE>

<WITH>

<EQUAL>

<PROPERTY name="ENTRY" source="st_Category"/>

<TEXT>Uncategorizied</TEXT>

</EQUAL>

</WITH>

<DO>

<PROPERTY name="VISIBLE" source="st_NewCategory"/>

<PROPERTY name="VISIBLE" source="st_Caption"/>

<PROPERTY name="VISIBLE" source="st_image_src"/>

<PROPERTY name="VISIBLE" source="st_link_type"/>

<PROPERTY name="VISIBLE" source="st_link_ref"/>

<PROPERTY name="VISIBLE" source="st_ExternalLink"/>

</DO>

</RULE>

<RULE>

<WITH>

<OR>

<EQUAL>

<PROPERTY name="ENTRY" source="st_Category"/>

<TEXT>Blog</TEXT>

</EQUAL>

</OR>

</WITH>

<DO>

<PROPERTY name="VISIBLE" source="st_URL"/>

</DO>

</RULE>

<RULE>

<WITH>

<OR>

<EQUAL>

<PROPERTY name="ENTRY" source="st_Category"/>

<TEXT>YouTube</TEXT>

</EQUAL>

</OR>

</WITH>

<DO>

<PROPERTY name="VISIBLE" source="st_Language"/>

</DO>

</RULE>

</RULES>

Vielen Dank!

Bin schon gespannt ...

Viele Grüße,

Bernd

0 Kudos

Hallo,

hier ist ein übersichtliches Beispiel:
Das komische ist, es werden bei Trade Article die Sprache und das Land angezeigt und bei News nur der Inhaltstyp

<CMS_MODULE>

  <CMS_INPUT_COMBOBOX name="st_Category" allowEmpty="no" editable="no" hFill="yes" useLanguages="no">

    <ENTRIES>

      <ENTRY value="News">

        <LANGINFOS>

          <LANGINFO lang="*" label="News"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="TradeArticle">

        <LANGINFOS>

          <LANGINFO lang="*" label="Trade Article"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Video">

        <LANGINFOS>

          <LANGINFO lang="*" label="YouTube"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Blog">

        <LANGINFOS>

          <LANGINFO lang="*" label="Blog"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Uncategorizied">

        <LANGINFOS>

          <LANGINFO lang="*" label="Uncategorizied"/>

        </LANGINFOS>

      </ENTRY>

    </ENTRIES>

    <LANGINFOS>

      <LANGINFO lang="*" label="Category"/>

      <LANGINFO lang="DE" label="Kategorie"/>

    </LANGINFOS>

  </CMS_INPUT_COMBOBOX>

  <CMS_INPUT_LIST name="st_Language" allowEmpty="no" hFill="yes">

    <ENTRIES>

      <ENTRY value="english">

        <LANGINFOS>

          <LANGINFO lang="*" label="english"/>

          <LANGINFO lang="DE" label="englisch"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="german">

        <LANGINFOS>

          <LANGINFO lang="*" label="german" description="german"/>

          <LANGINFO lang="DE" label="deutsch" description="deutsch"/>

        </LANGINFOS>

      </ENTRY>

    </ENTRIES>

    <LANGINFOS>

      <LANGINFO lang="*" label="Language" description="Language"/>

      <LANGINFO lang="DE" label="Sprache" description="Sprache"/>

    </LANGINFOS>

  </CMS_INPUT_LIST>

  <CMS_INPUT_LIST name="st_Country" allowEmpty="no" hFill="yes">

    <ENTRIES>

      <ENTRY value="greatbritain">

        <LANGINFOS>

          <LANGINFO lang="*" label="Great Britain"/>

          <LANGINFO lang="DE" label="Großbritannien"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="germany">

        <LANGINFOS>

          <LANGINFO lang="*" label="Germany"/>

          <LANGINFO lang="DE" label="Deutschland"/>

        </LANGINFOS>

      </ENTRY>

    </ENTRIES>

    <LANGINFOS>

      <LANGINFO lang="*" label="country"/>

      <LANGINFO lang="DE" label="Land"/>

    </LANGINFOS>

  </CMS_INPUT_LIST>

  <CMS_INPUT_CHECKBOX name="st_ContentType" allowEmpty="no" gridWidth="3" hFill="yes">

    <ENTRIES>

      <ENTRY value="Products">

        <LANGINFOS>

          <LANGINFO lang="*" label="Products"/>

          <LANGINFO lang="DE" label="Produkte"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Company">

        <LANGINFOS>

          <LANGINFO lang="*" label="Company"/>

          <LANGINFO lang="DE" label="Firma"/>

        </LANGINFOS>

      </ENTRY>

      <ENTRY value="Website">

        <LANGINFOS>

          <LANGINFO lang="*" label="Website"/>

        </LANGINFOS>

      </ENTRY>

    </ENTRIES>

    <LANGINFOS>

      <LANGINFO lang="*" label="Content type"/>

      <LANGINFO lang="DE" label="Inhaltstyp"/>

    </LANGINFOS>

  </CMS_INPUT_CHECKBOX>

</CMS_MODULE>

<RULES>

<RULE>

<WITH>

<EQUAL>

<PROPERTY name="ENTRY" source="st_Category"/>

<TEXT>News</TEXT>

</EQUAL>

</WITH>

<DO>

<PROPERTY name="VISIBLE" source="st_Country"/>

<PROPERTY name="VISIBLE" source="st_Language"/>

<PROPERTY name="VISIBLE" source="st_ContentType"/>

</DO>

</RULE>

<RULE>

<WITH>

<EQUAL>

<PROPERTY name="ENTRY" source="st_Category"/>

<TEXT>TradeArticle</TEXT>

</EQUAL>

</WITH>

<DO>

<PROPERTY name="VISIBLE" source="st_Country"/>

<PROPERTY name="VISIBLE" source="st_Language"/>

</DO>

</RULE>

</RULES>

0 Kudos

Hallo Bernd,

Du hast "widersprüchliche" Regeln. Zum Beispiel arbeiten die ersten beiden "gegeneinander". Wichtig ist:

  1. Regeln (bzw. das WITH/DO) bilden keine "Wenn/Dann"-Logik ab sondern sind tatsächlich Wertezuweisungen. D.h. das was im WITH ermittelt wird (ob es jetzt true oder false ergibt) wird den Eigenschaften im DO (hier: VISIBLE) zugewiesen.
  2. Die Auswertungsreihenfolge der Regeln entspricht nicht zwingend der Reihenfolge, in der sie definiert sind.

Darum wäre hier die Lösung, dafür zu sorgen dass der VISIBLE-Wert "eindeutig" ist und nicht von verschiedenen Regeln für dieselbe Eingabekomponente auf unterschiedliche Werte gesetzt wird.

Viele Grüße

Michael

0 Kudos

Hallo Michael,

danke, das wusste ich nicht ...

Was wäre der richtige Ansatz?
Also zeige mir abgängig von der ausgewählten Kategorie die entsprechenden Felder an.

Vielen Dank und viele Grüße,

Bernd

0 Kudos

Hallo Bernd,

naja, letztlich muss es logisch "getrennt", d.h. "widerspruchsfrei" gemacht werden, da gibt es unterschiedliche Ansätze.

1. Fokus auf "Wann ist jeweils eine konkrete EK sichtbar"

Das läuft drauf hinaus, dass man im <DO> immer nur genau eine EK hat und es auch nur genau ein DO mit dieser EK gibt. Dann musst Du im With-Teil die exakte Bedingung (ggf. mit AND/OR) bauen wann genau diese EK sichtbar sein soll. Ausnahme: Wenn mehrere EKs immer unter genau denselben Bedingungen sicht- bzw. unsichtbar sein sollen, kannst Du die natürlich zusammen ins DO packen - solange weiterhin gilt, dass sie dann nur in diesem DO vorkommen. Nachteil: ggf. komplexere Logik im WITH.

2. Fokus auf die Kategorie

Hier kannst Du ein Konstrukt ähnlich dem folgenden nutzen (achtung: nicht vollständig bzgl. Deiner EKs!):

<RULE>

     <IF>

          <EQUAL>

               <PROPERTY name="ENTRY" source="st_Category"/>

               <TEXT>News</TEXT>

          </EQUAL>

     </IF>

     <WITH>

          <TRUE/>

     </WITH>

     <DO>

          <PROPERTY name="VISIBLE" source="st_Country"/>

          <PROPERTY name="VISIBLE" source="st_Language"/>

          <NOT>

               <PROPERTY name="VISIBLE" source="st_NewCategory"/>

               <PROPERTY name="VISIBLE" source="st_Caption"/>

               <PROPERTY name="VISIBLE" source="st_image_src"/>

          </NOT>

     </DO>

</RULE>

D.h. im NOT des DO jeweils alle EKs die nicht sichtbar sein sollen, außerhalb des NOT alle die sichtbar sein sollen wenn die jew. Kategorie gewählt ist.

Vorteil: Ggf. übersichtlicher, was bei einer konkreten Kategorie "passiert".

Nachteil: Du musst in jeder Regel immer alle EKs im DO haben - bzw. zumindest alle, deren Sichtbarkeit sich "irgendwann" ändert, d.h. im DO stehen immer dieselben EKs - die Regeln unterscheiden sich dann nur darin, welche direkt im DO stehen und welche im DO/NOT.

... oder eine beliebige "Mischform".

Achtung: Variante 2 stellt hier eine Ausnahme von den best practices dar. Normalerweise sollte man (vereinfacht gesagt) nichts ins IF packen, "was der Redakteur ändern kann", weil sonst die Gefahr von "Einbahnstraßenregeln" besteht (so nenne ich das jedenfalls immer - ist eine klassische "Falle", Erklärung siehe hier). Wenn allerdings sichergestellt ist, dass zu allen möglichen Fällen eine Regel greift, kann man das so machen.

Viele Grüße

Michael

0 Kudos

Hallo Michael,

danke für deine schnelle und ausführliche Antwort.
So komm ich weiter Smiley Happy

Viele Grüße,

Bernd

0 Kudos