Newsteaser soll ersten (neuesten) Artikel nicht ausgeben

Wie verwendet man Module oder Aktion und passt diese an.

Newsteaser soll ersten (neuesten) Artikel nicht ausgeben

Beitragvon Rex_Fan » 7. Sep 2010, 16:24

Hallo,
ich verwende das Modul "Newssystem auf Artikelebene" und möchte gerne, dass der neueste Artikel der gewünschten Kategorie nicht ausgegeben wird.

Ich denke es wird was mit $ml_first = true; und $ml_position = 0; zu tun haben, konnte es aber nicht rausfinden.

Hier mein Ausgabecode:

Code: Alles auswählen
<?php
   // EXPLODE PATH
   $ml_PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");

   $ml_categoryId = 'REX_VALUE[3]';
   $ml_category = OOCategory::getCategoryById($ml_categoryId);
   $ml_startArt = $ml_category->getStartArticle();

   $ml_first = true;
   $ml_position = 0;
   $ml_maxLong = 'REX_VALUE[1]';
   $ml_max = 'REX_VALUE[2]';

   $ml_qry = "SELECT id, name, catname, updatedate, path FROM " . $REX['TABLE_PREFIX'] . "article WHERE " . $REX['TABLE_PREFIX'] . "article.path LIKE '%|$ml_categoryId|%' AND clang='" . $this->clang . "' AND status='1' AND startpage='0' ORDER BY createdate DESC";

   $ml_sql = new sql();
   $ml_sql->setQuery( $ml_qry);
   $ml_arts = $ml_sql->get_array();

   foreach ($ml_arts as $ml_row) {
      $ml_artId = $ml_row['id'];
      $ml_artName = $ml_row['name'];
      
      $ml_artCategory = $ml_row['catname'];
      $ml_temp = substr($ml_row['path'], 0, strlen($ml_row['path'])-1);
      $ml_artCategoryId = substr($ml_temp, strrpos($ml_temp, '|')+1);
      $ml_artCategoryLink = rex_getUrl($ml_artCategoryId, $this->clang, $params);

      $ml_artDate = $ml_row['updatedate'];
      $ml_artLink = rex_getUrl($ml_artId, $this->clang, $params);
      if ($ml_artId != $ml_startArt->getId()) {      
         $ml_slice = new article;
         $ml_slice->setArticleID($ml_artId);

         if (!$ml_first && $ml_position < ($ml_maxLong + 1)) {
            echo '<div class="separator clear"><!-- SPACER --></div>';
         } else if (!$ml_first) {
            echo '<div class="clear"><!-- SPACER --></div>';
         } else {
            $ml_first = false;
         }

         if ($ml_position < $ml_maxLong) {
            echo '<h3 class="newsTitle"><a href="' . $ml_artLink . '">' . $ml_artName . '</a></h3>';
         } else {
            echo '<h3 class="newsTitle_old"><a href="' . $ml_artLink . '">' . $ml_artName . '</a></h3>';
         }
         
         
         if ($ml_position < $ml_maxLong) {
            echo $ml_slice->getArticle();
         } else if ($ml_position > $ml_max) {
            break;
         }
         $ml_position++;
      }
   }
?>


Danke,
Gruß Rexfan
Rex_Fan
 
Beiträge: 92
Registriert: 6. Apr 2010, 13:40

Beitragvon Rex_Fan » 9. Sep 2010, 15:17

Hallo,
habe verschiedene Sachen mit meinen bescheidenen PHP Kenntnissen versucht, jedoch ohne Erfolg.

Wer findet hier die Lösung?

Lg
Rex_Fan
 
Beiträge: 92
Registriert: 6. Apr 2010, 13:40

Beitragvon Xong » 9. Sep 2010, 15:39

Rex_Fan hat geschrieben:habe verschiedene Sachen mit meinen bescheidenen PHP Kenntnissen versucht, jedoch ohne Erfolg.

Wer findet hier die Lösung?
Du brauchst hier kein PHP, sondern MySQL: SELECT id, name, catname, updatedate, path FROM rex_article WHERE rex_article.path LIKE '%|CAT_ID|%' AND clang=CLANG_ID AND status=1 AND startpage=0 ORDER BY createdate DESC LIMIT 1, 100000
LG,
Xong

Bild Määääääääääääääääääääääääh!
Benutzeravatar
Xong
 
Beiträge: 1555
Registriert: 5. Jun 2008, 07:30
Wohnort: Hohndorf in Sachsen

Beitragvon Rex_Fan » 9. Sep 2010, 15:58

wenn ich deinen Code statt der SQL - Abfrage einfüge, dann wird einfach nichts mehr ausgegeben, wenn ich beim "alten" Code jedoch LIMIT 1, 10000 hinzufüge - klappts.
Hat es einen Grund, dass bei dir ein paar Sachen anders sind?

Danke auf jeden Fall schonmal!
Rex_Fan
 
Beiträge: 92
Registriert: 6. Apr 2010, 13:40

Beitragvon Xong » 9. Sep 2010, 16:01

Rex_Fan hat geschrieben:wenn ich deinen Code statt der SQL - Abfrage einfüge, dann wird einfach nichts mehr ausgegeben, wenn ich beim "alten" Code jedoch LIMIT 1, 10000 hinzufüge - klappts.
Hat es einen Grund, dass bei dir ein paar Sachen anders sind?
Japp: Pseudocode.

Generell bin ich ja dafür, dass der Fragende nach einer Antwort im Forum auch etwas gelernt hat und den Code nicht einfach übernimmt. :wink:
LG,
Xong

Bild Määääääääääääääääääääääääh!
Benutzeravatar
Xong
 
Beiträge: 1555
Registriert: 5. Jun 2008, 07:30
Wohnort: Hohndorf in Sachsen

Beitragvon Rex_Fan » 9. Sep 2010, 19:05

Hallo,
ja ich verstehe :)
Ich hab aus deinem Code verstanden, dass am Ende der SQL Select-Abfrage die Artikel limitiert werden, also von 1-10000 hergenommen werden, heißt wohl, in SQL beginnen Abfragen bei 0.
Habe schon gedacht, die unterschiedlichen Code-Elemente in deinem Pseudocode wären neuere Variablen (??) von Redaxo definiert.

Aber super, danke dir für die Hilfe!

lg Marc
Rex_Fan
 
Beiträge: 92
Registriert: 6. Apr 2010, 13:40


Zurück zu Module/Aktionen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast