Listview Condition nur bei spezifischen Werten anzeigen

Hier können Sie Fragen bezüglich des Datenbank-/Objektmoduls stellen.
freese
Member
Beiträge: 56
Registriert: Mi 3. Jun 2009, 19:32
Wohnort: Essen

Listview Condition nur bei spezifischen Werten anzeigen

Beitragvon freese » Mo 15. Nov 2010, 17:49

Hallo verherte wE´ler,

ich habe nun lange im forum gewühlt und doch keine Antwort für meine Frage gefunden. Es geht um diese Pressemitteilungesliste:

http://web45.vditz.netbuild.net/zt-cons ... presse.php

Ziel ist das Folgende:

Ist der Nutzer auf der Startseite soll er die letzten zwei Meldungen von 2010 unter "Aktuelle Meldungen" sehen, sowie die von 2009. Das funktioniert wie man sieht, nur leider sind die aktuellen Meldungen auch zu sehen, wenn der Nutzer ein ällteres Jahr auswählt. Wählt der Nutzer ältere Jahre, sollen nur die Meldungen des entsprechenden Jahres angezeigt werden und nicht die aktuellen. D.h.: ist das Jahr 2010 zeige das listview mit den zwei aktuellesten Meldungen, ansonsten zeige keine aktuelle Meldungen.

Der relevante Teil des Quellcodes ist der folgende:

Code: Alles auswählen


     <?php
          $condition = 'jahr '.(isset($_REQUEST['Jahre'])? '=' . intval($_REQUEST['Jahre']):' BETWEEN 2009 AND 2010');
           // $condition2 = 'jahr = 2010';
           
         ?>   
            <we:form name="suchformular" type="object" id="self" method="post">
                <fieldset>
                    <label for="Jahre">Sie sehen alle Pressemeldungen vom Jahr:</label>
                       <select name="Jahre" class="jahre">
                        <we:listview type="object" classid="47" order="jahr" desc="true">
                           <we:ifFound>
                               <we:repeat>
                               <?php
                                    if($GLOBALS['my']['lastvalue'] != $GLOBALS['lv']->f('jahr')){
                                      $GLOBALS['my']['lastvalue'] = $GLOBALS['lv']->f('jahr');
                                ?>
                                     <option value="<we:field name="jahr">" <?php if(isset($_REQUEST['Jahre'])) {if($GLOBALS['my']['lastvalue'] == $_REQUEST['Jahre']) echo "selected";} ?>><we:field name="jahr"></option>
                                <?php
                                  }
                               ?>
                             </we:repeat>
                          </we:ifFound>
                       </we:listview>
                   </select>
                     <input class="submit" type="submit" name="Submit" value="Anzeigen" />
                </fieldset>
            </we:form><!--end we:form-->
        </div> <!--end archiv-->
        <div class="archiv">
          <p class="top">
            Aktuelle Meldungen:
          </p>
        </div>          
        <div id="inhalt">
      
         <we:condition name="condition2">
             <we:conditionAdd field="jahr" value="2010" compare="="  type="global"  />
           </we:condition>

          <? echo $condition2 ?>
          
            <we:listview type="object" classid="47" order="releasedate" triggerid="1373" desc="true" rows="2" condition="\$condition2">
 
                 <we:repeat>
                   
                   <div class="priv spotlight">

                    <p class="datum"><we:field name="tag" type="int"/>.<we:field name="monat" type="text"/>.<we:field name="jahr" type="text"/> </p>
                    <h2><we:field name="title" type="text" hyperlink="true" classid="47" triggerid="1373" target="_self" /></h2>
                    <p><we:field name="shorttext" type="text" /></p>
                    <br />
                    <p class="mehr">    
                      <span>Mehr: <we:field name="title" hyperlink="true" classid="47" triggerid="1373" target="_self" max="25"/></span>
                    </p>
                    <br />
                  </div><!-- end priv spotlight -->


                               
                </we:repeat>

            </we:listview>          
            <!--end output first spotlight detailed-->
            <div class="archiv_inhalt">
            <p class="top">
              Weitere Meldungen:
            </p>
          </div>      
            <we:listview type="object" classid="47" order="releasedate" triggerid="1976" desc="true"  condition="\$condition">
             <we:ifFound>
                <we:repeat>
               <div class="priv">
                <p class="datum"><we:field name="tag" type="int"/>.<we:field name="monat" type="text"/>.<we:field name="jahr" type="text"/> </p>

                    <we:ifFieldNotEmpty match="teaser" type="text">
                        <img alt="Cover"  width="80" height="80" class="thumbnail"  src="<?echo HTTP_ROOT;?>/<we:field name="teaser" type="text"  />"/>
                        <we:else />
                       <img alt="Platzhalter"  width="80" height="80" class="thumbnail"  src="<?echo HTTP_ROOT;?>/images/platzhalter_80_80.jpg"/>
                     </we:ifFieldNotEmpty>
            
                    <we:field name="title" hyperlink="true" classid="47"  target="_self"/>

                  
               </div><!---ende priv-->
              
                  </we:repeat>
                </we:ifFound>
            </we:listview>
            <!--end output selected short-->    
Ich habe es einmal mit einer Condition und einmal ohne versucht:

1- )

Code: Alles auswählen

 <we:condition name="condition2">
             <we:conditionAdd field="jahr" value="2010" compare="="  type="global"  />
          </we:condition>

          <? echo $condition2 ?> <!--zur Kontrolle-->
          
            <we:listview type="object" classid="47" order="releasedate" triggerid="1373" desc="true" rows="2" condition="\$condition2">
Das funktioniert nicht, das Ergebnis ist genau als ob ich die Condition so definieren würde:

Code: Alles auswählen

$condition2 = 'jahr = 2010';

Also keine Variable sondern ein statischer Wert. Ich möchte aber, dass der Wert vom Feld jahr mit der Condition verglichen wird. Ist der Wert 2010 soll die Listview angezeigt werden, ist der Wert ein anderer soll die Listiview nicht angezeigt werden.

2-) Ich habe mich an einem Beispiel in der Dokumentation vom Tag <we:ifEqual> orientiert und folgendes versucht:

Code: Alles auswählen

  <we:listview type="object" classid="47" order="releasedate" triggerid="1373" desc="true" rows="2" >
 
                 <we:repeat>

    <?php if($GLOBALS['we_doc']->getElement("jahr") == $GLOBALS['lv']->f("2010")): ?>
  
                   
                   <div class="priv spotlight">

                    <p class="datum"><we:field name="tag" type="int"/>.<we:field name="monat" type="text"/>.<we:field name="jahr" type="text"/> </p>
                    <h2><we:field name="title" type="text" hyperlink="true" classid="47" triggerid="1373" target="_self" /></h2>
                    <p><we:field name="shorttext" type="text" /></p>
                    <br />
                    <p class="mehr">    
                      <span>Mehr: <we:field name="title" hyperlink="true" classid="47" triggerid="1373" target="_self" max="25"/></span>
                    </p>
                    <br />
                  </div><!-- end priv spotlight -->

    <?php endif; ?>       
Das bringt auch nicht den gewünschten Erfolg. Vielen Dank für jegliche Unterstützung!!

freese
Member
Beiträge: 56
Registriert: Mi 3. Jun 2009, 19:32
Wohnort: Essen

Re: Listview Condition nur bei spezifischen Werten anzeigen

Beitragvon freese » Do 18. Nov 2010, 03:27

Ich habe mich den ganzen Tag hier im Forum umgeschaut und verschiedene Ansätze ausprobiert, alles ohne Erfolg...ich verzweifle langsam.

1. Erster Ansatz:

Code: Alles auswählen

<we:condition name="condition2">
	      <we:conditionAdd field="jahr" value="2009" var="\$anno" compare=">=" />
         </we:condition>
		 <?php echo $condition2; ?>

		            <we:listview type="object" classid="47" order="releasedate" triggerid="1373" desc="true" rows="2" condition="\$condition2">
		                 <we:repeat>

		              <?php $anno = $GLOBALS['lv']->f('jahr'); ?>
		             <?php echo $anno ?>

		                  <div class="priv spotlight">

		                    <p class="datum"><we:field name="tag" type="int"/>.<we:field name="monat" type="text"/>.<we:field name="jahr" type="text"/> </p>
		                    <h2><we:field name="title" type="text" hyperlink="true" classid="47" triggerid="1373" target="_self" /></h2>
		                    <p><we:field name="shorttext" type="text" /></p>
		                    <br />
		                    <p class="mehr">    
		                      <span>Mehr: <we:field name="title" hyperlink="true" classid="47" triggerid="1373" target="_self" max="25"/></span>
		                    </p>
		                    <br />
		                  </div><!-- end priv spotlight -->

		                </we:repeat>
		            </we:listview>          
		            <!--end output first spotlight detailed-->        
Hier versuche ich via die Variable: $anno = $GLOBALS['lv']->f('jahr'); das Feld jahr innerhalb des Listviews abzufragen. Dieser Wert verwende ich in der Condition:

Code: Alles auswählen

 <we:condition name="condition2">
	      <we:conditionAdd field="jahr" value="2009" var="\$anno" compare=">=" />
         </we:condition>

so dass der abgefragte Wert, mit dem value 2009 verglichen wird. Ist der Wert größer oder gleich 2009 sollen die Listview angezeigt werden, ansonsten nicht.

Was mache ich falsch! Please! für einen kurzen Hinweise wäre ich enorm dankbar. :wink:

PD.: hab weitere Ansätze aber möchte den thread noch etwas übersichtlich halten.

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Listview Condition nur bei spezifischen Werten anzeigen

Beitragvon WBTMagnum » Do 18. Nov 2010, 16:49

hallo freese,

probier conditionAdd mal so:

Code: Alles auswählen

<we:conditionAdd field="jahr" value="2009" var="<varname>" type="<scope>" compare=">=" />
<varname> ist dein variablenname, <scope> gibt die art der variablen an (z.b. global, request, ...).


hth,
sascha

freese
Member
Beiträge: 56
Registriert: Mi 3. Jun 2009, 19:32
Wohnort: Essen

Re: Listview Condition nur bei spezifischen Werten anzeigen

Beitragvon freese » So 21. Nov 2010, 15:08

Danke Sasha,

das hat auch leider nicht funktioniert. Ich hab es etwas einfahcer endlich gelöst, indem ich ifNotVarSet so benutzt habe:

Code: Alles auswählen

              <we:ifNotVarSet name="Jahre" match="2010" type="request" >
                        
                        <div class="aktuellenews">
                          <p class="top">
                            Aktuelle Meldungen:
                          </p>
                        </div>       
                        
                        <we:listview type="object" classid="47" order="releasedate" triggerid="1373" desc="true" rows="2" >
                         
                          <we:repeat>
                            <div class="priv spotlight">
                              
                              <p class="datum"><we:field name="tag" type="int"/>.<we:field name="monat" type="text"/>.<we:field name="jahr" type="text"/> </p>
                              <h2><we:field name="title" type="text" hyperlink="true" classid="47" triggerid="1373" target="_self" /></h2>
                              <p><we:field name="shorttext" type="text" /></p>
                              <br />
                              <p class="mehr">    
                                <span>Mehr: <we:field name="title" hyperlink="true" classid="47" triggerid="1373" target="_self" max="25"/></span>
                              </p>
                              <br />
                            </div><!-- end priv spotlight -->
                            
                          </we:repeat>
                          
                        </we:listview>   
                        <we:else>
                          
                        </we:ifNotVarSet>             
                          <!--end output first spotlight detailed-->
Vielen Dank trotzdem! dein Tipp hat mich auf die Idee gebracht. ;-)


Zurück zu „DB-/Objektmodul“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste