Seite 2 von 2

Verfasst: So 3. Apr 2005, 19:50
von HerrB
Im Output im SQL-Statement für die Übersicht:
Vorher:

Code: Alles auswählen

$newsletters->select("idclient='$client' AND idlang='$lang'","","name");
Nachher:

Code: Alles auswählen

$newsletters->select("idclient='$client' AND idlang='$lang' AND name != 'Willkommen'","","name");
Und warum die Ergänzung des "AND name != 'Willkommen" nicht sinnvoll ist verstehe ich nicht ganz.
Du verstehst mich miss; die angegebene Ergänzung ist sinnvoll (warum auch nicht...). Ich würde den Namen nehmen, da man dann besser sieht, was erscheint (bei idnews != 3 vergisst man irgendwann, warum man das mal gemacht hat).

Aber das Ergänzen der Spalte welcome in der DB ist nicht sinnvoll (diese wird mit V4.5.x + Überarbeitung eingeführt), da sie nicht entsprechend gesetzt werden kann (keine Verwaltungsmäglichkeit unter Extras -> Newsletter).

Gruß
HerrB

Verfasst: So 3. Apr 2005, 19:58
von acquire
HerrB hat geschrieben:

Code: Alles auswählen

$newsletters->select("idclient='$client' AND idlang='$lang' AND name != 'Willkommen'","","name");
Ach, jetzt weiß ich was mein Fehler war: Ich ahbe es nach "name" eingefügt.

Danke!

weitere Version

Verfasst: Fr 21. Okt 2005, 14:33
von kypta
Habe den von acquire unter http://contenido.org/forum/viewtopic.php?p=45059#45059 abgeänderten code noch etwas verändert:

Der folgende Code produziert gültiges xhtml (die URLs werden nicht mehr mit & sondern als & geschrieben).
Als weiteres "Feature" wird jeweils eine Titelzeile ausgegeben. Bei der Übersichts-Ansicht muss der Titel selber noch angepasst werden. Bei der Einzelansicht eines Newsletters wird der Newsletter-Betreff als Titel markiert. Es wird dabei die css-Klasse Titel benutzt.
Bei der Übersichts-Ansicht werden nur Newsletter aufgelistet, die im Newsletternamen das Zeichen # haben. Somit kann man selber wählen, welche Newsletter aufgelistet werden: Es reicht, den entsprechenden Newsletter mit einem # im Namen abzuspeichern. Das # wird in der Übersichts-Anzeige natürlich rausgefiltert.

Code: Alles auswählen

<?php 
   cInclude("classes", "class.newsletter.php"); 

   $newsletters = New NewsletterCollection; 

   if (is_numeric($idnews) && $idnews > 0) 
   { 
      $newsletters->select("idclient='$client' AND idlang='$lang' AND idnews=" . $idnews); 

      if ($newsletter = $newsletters->next()) 
      { 
         // Getting all date for your convenience, currently only $news_id, $news_subject and $news_message are used 
         $news_id = $newsletter->get("idnews"); 
         $news_subject = $newsletter->get("subject"); 
         $news_message = $newsletter->get("message"); 
         $news_name = $newsletter->get("name"); 
         $news_newsfrom = $newsletter->get("newsfrom"); 
         $news_newsdate = $newsletter->get("newsdate"); 
         $news_author = $newsletter->get("author"); 
         $news_created = $newsletter->get("created"); 
         $news_lastmodified = $newsletter->get("lastmodified"); 

         // Cleaning $message 
         $news_message = str_replace("MAIL_NAME", "", $news_message); 
         $news_message = str_replace("MAIL_NUMBER", "", $news_message); 
         $news_message = str_replace("MAIL_DATE", "", $news_message); 
         $news_message = str_replace("MAIL_TIME", "", $news_message); 
         $news_message = str_replace("MAIL_UNSUBSCRIBE", "", $news_message); 
         $news_message = str_replace("MAIL_CHANGE", "", $news_message); 
         $news_message = str_replace("MAIL_STOP", "", $news_message); 
         $news_message = str_replace("MAIL_GOON", "", $news_message); 

         // Newsletter Message 
		 echo '<p class="Titel">' . $news_subject . '</p>';
         echo nl2br($news_message) . chr(10); 
          
      } 

      $link = "front_content.php?client=$client&lang=$lang&idcatart=$idcatart"; 
      echo "<br /><br /><a href=\"" . $link . "\" class=\"navi\">Zur&uuml;ck</a><br />" . chr(10);
 
   } else { 
 
      $newsletters->select("idclient='$client' AND idlang='$lang'","","name"); 

      $zaehler = 0;

      while ($newsletter = $newsletters->next()) 
      { 
         // Getting all date for your convenience, currently only $news_id, $news_subject and $news_message are used 
         $news_name = $newsletter->get("name");
		 
		 // wenn der newsletter-name das zeichen # beinhaltet
		 if (preg_match("/#/",$news_name)) {
		 
		    // zähler, damit titel nur ein mal ausgegeben wird
            if ($zaehler == 0) {echo '<p class="Titel">Newsletter Archiv Titel</p>';}
		 
            // Newsletter-Name as Headline, incl. Link 
            $link = "front_content.php?client=$client&lang=$lang&idcatart=$idcatart&idnews=" . $newsletter->get("idnews"); 
 
            // Cleaning $message von trailing #
            $news_name = str_replace("#", "", $news_name);
		 
		    // Link ausgeben
            echo "<a href=\"" . $link . "\">" . $news_name . ":</a><br />" . chr(10); 
		 
            // Zähler hochzählen
		    $zaehler = $zaehler+1;
		} // preg_match ende
      }

   } 
?>

Verfasst: So 1. Jul 2007, 23:11
von anjaka
Hallo,
wo muss ich denn eingreifen um eine Sortierung nach dem Datum oder der ID hinzubekommen?

Wie bekomme ich das Datum "created" oder "lastmodified", das spielt keine Rolle über dem Titel angezeigt?

Gruß anjaka

Verfasst: Mo 2. Jul 2007, 01:05
von HerrB
Statt "name" andere Kriterien bei dieser Zeile festlegen:

Code: Alles auswählen

      $newsletters->select("idclient='$client' AND idlang='$lang'","","name"); 
z.B.

Code: Alles auswählen

      $newsletters->select("idclient='$client' AND idlang='$lang'","","created"); 
oder

Code: Alles auswählen

      $newsletters->select("idclient='$client' AND idlang='$lang'","","idnews"); 
Gruß
HerrB

Verfasst: Mo 2. Jul 2007, 01:17
von anjaka
Hallo HerrB,
klasse und danke!

Jetzt fehlt mir noch die Sortierung in umgekehrter Reihenfolge.
Ich kenne das mit order by DESC, aber das funzt hier nicht.

Wie bekomme ich das Datum "created" oder "lastmodified", das spielt keine Rolle über dem Titel angezeigt?

Verfasst: Mo 2. Jul 2007, 12:53
von HerrB

Code: Alles auswählen

$newsletters->select("idclient='$client' AND idlang='$lang'","","created DESC");
Das andere ist von Deinen Wünschen abhängig, grundsätzlich wäre eso etwas denkbar:
Oberhalb von

Code: Alles auswählen

echo '<p class="Titel">' . $news_subject . '</p>';
diese Zeile einfügen:

Code: Alles auswählen

echo '<p class="Date">' . strftime("%D", strtotime($newsletter->get("created"))) . '</p>';
Anderes Datumsformat? Siehe http://de3.php.net/manual/en/function.strftime.php

Gruß
HerrB