Modul: Standard-Artikelliste Advanced V1.4

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt »

@ HerrB:
Kannst du etwas zum Bug bei der Blätterfunktion sagen?
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Bei welchen Varianten tritt das auf? Kannst Du mal mit echo $lCount ausgeben?

Bei 10 Artikeln und drei Artikeln pro Seite sollte der letzte Link bei Back/Next als nextstep 9 aufweisen.

Bei den beiden anderen Varianten mal bei

Code: Alles auswählen

$iPages = intval($lCount / $aSettings["ArticlePerPage"]);
statt round ceil eintragen und testen.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt »

Ich habe die Blätterfunktion überarbeitet.

Example: 1 2 3 4 5 6 7 ...

Code: Alles auswählen

      # Example: 1 2 3 4 5 6 7 ...
      $mitKomma = $lCount / $aSettings["ArticlePerPage"];
      $mitKommaInt = round($lCount / $aSettings["ArticlePerPage"]);
      if( $mitKomma > $mitKommaInt ) {
       $iPages = $mitKommaInt+1;
      } elseif( $mitKomma == $mitKommaInt ) {
       $iPages = $mitKommaInt;
      } else {
       $iPages = $mitKommaInt;
      }
      $sPageLinks = '';

      echo '   <div id="Pages">';
      for ($i = 1; $i <= $iPages; $i++) {
         $lNextStep = ($i - 1) * $aSettings["ArticlePerPage"];
         if ($sPageLinks != '') {
            $sPageLinks .= '&nbsp;';
         }
         if ($_REQUEST["skip"] == $lNextStep) {
            $sPageLinks .= $i."\n"; # I'm on the current page, no link
         } else {
            $sPageLinks .= '<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&skip='.$lNextStep.'">'.$i.'</a>'."\n";
         }
      }
      echo '      '.$sPageLinks."\n";
      echo '   </div>'."\n";

Example: |< 1 ... 3 4 5 ... 8 >|

Code: Alles auswählen

      # Example: |< 1 ... 3 4 5 ... 8 >|

      #$iPages = intval($lCount / $aSettings["ArticlePerPage"]);
      $mitKomma = $lCount / $aSettings["ArticlePerPage"];
      $mitKommaInt = round($lCount / $aSettings["ArticlePerPage"]);
      if( $mitKomma > $mitKommaInt ) {
       $iPages = $mitKommaInt+1;
      } elseif( $mitKomma == $mitKommaInt ) {
       $iPages = $mitKommaInt;
      } else {
       $iPages = $mitKommaInt;
      }
      $sPageLinks = '';

      echo '   <div id="Pages">'."\n";
      echo '      <a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&skip=0">|<</a>'."\n";
      for ($i = 1; $i <= $iPages; $i++) {
         $lskip = ($i - 1) * $aSettings["ArticlePerPage"];
         if ($i == 1 || $i == $iPages) {
            if ($sPageLinks != '') {
               $sPageLinks .= '&nbsp;';
            }
            if ($_REQUEST["skip"] == $lskip) {
               $sPageLinks .= $i."\n"; # I'm on the current page, no link
            } else {
               $sPageLinks .= '<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&skip='.$lskip.'">'.$i.'</a>'."\n";
            }
         } else if ($_REQUEST["skip"] == $lskip) {
            $sPageLinks .= '&nbsp;'.$i."\n"; # I'm on the current page, no link
         } else if ($_REQUEST["skip"] == ($lskip + $aSettings["ArticlePerPage"])) {
            # Front
            $sPageLinks .= '&nbsp;<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&skip='.$lskip.'">'.$i.'</a>'."\n";
         } else if ($_REQUEST["skip"] == ($lskip - $aSettings["ArticlePerPage"])) {
            # Back
            $sPageLinks .= '&nbsp;<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&skip='.$lskip.'">'.$i.'</a>'."\n";
         } else if ($_REQUEST["skip"] == ($lskip - (2 * $aSettings["ArticlePerPage"])) ||
                    $_REQUEST["skip"] == ($lskip + (2 * $aSettings["ArticlePerPage"]))) {
            $sPageLinks .= '...';
         }
      }
      echo '      '.$sPageLinks."\n";
      echo '      &nbsp;<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&skip='.($iPages - 1) * $aSettings["ArticlePerPage"].'">>|</a>'."\n";
      echo '   </div>'."\n";
Zuletzt geändert von i-fekt am Sa 4. Mär 2006, 13:36, insgesamt 1-mal geändert.
MyAccount
Beiträge: 383
Registriert: Do 17. Jul 2003, 10:21

Beitrag von MyAccount »

Danke HerrB, <-Scherzbold :-)
HerrB hat geschrieben: Diese SQL-Statements werden direkt in die SQL-Abfrage integriert. Da nützt Dir aber kein SQL-Statement zu einer Artikel-Eigenschaft etwas, da diese nicht in der gleichen Art in der DB gespeichert sind (sondern wirklich als Spalten in einer Tabelle, con_art_lang, denke ich).

Um an diese Informationen zu kommen, musst Du das einleitende SQL-Statement im Output um die Angaben ergänzen und sie im Array speichern. Als Beispiel sei die Übergabe der Datumsangaben genannt (last_modified).

Gruß
HerrB
Na das stimmt ja nicht ganz, gelle?!

Code: Alles auswählen

   if (is_numeric($lIDCatArt) && $lIDCatArt > 0) {
      $sql = "SELECT
           a.typeid AS typeid,
           a.value AS value,
           a.idtype AS idtype,
           #b.title AS title,
           #b.pagetitle AS pagetitle,
           d.type AS type,
           d.description AS description
              FROM
           ".$cfg["tab"]["content"]." AS a,
           ".$cfg["tab"]["art_lang"]." AS b,
           ".$cfg["tab"]["cat_art"]." AS c,
           ".$cfg["tab"]["type"]." AS d
              WHERE
           a.idtype    = d.idtype AND
           a.idartlang = b.idartlang AND
           b.idart     = c.idart AND
           b.idlang    = '".$lang."' AND ";
      if ($sTypeRange != "") {
         $sql .= "a.idtype IN (".$sTypeRange.") AND ";
      }
      $sql .= "     c.idcatart = '".$lIDCatArt."'
              ORDER BY a.idtype, a.typeid";

      $db2->query($sql);
Zur Erinnerung. Es ist Dein Code! :-)

Du bindest hier doch eh die con_art_lang ein. Da könnte man doch einfach title und / oder pagetitle draus nehmen, oder?!

Aber ich gebe Dir Recht. Eine Klasse fncGetTypeOfBuildTypeSelect wäre hier angebrachter. Quasi als Weiche ob die Daten nun aus einem Contentelement gebaut werden sollen oder aus Atikeleigenschaften.

Gruß MyAccount <- auch Scherzbold :-)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Ähm i-fekt, zum einen hat Dein Code wenig mit meinem Modul zu tun (es gibt keine Variable $angezeigteAnzahl), zum anderen sollte gerade die ceil-Funktion genau diese Berechnung in der benötigten Art und Weise durchführen (in einer Zeile).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Na das stimmt ja nicht ganz, gelle?!
Zur Erinnerung. Es ist Dein Code!
Ach? :evil:
Du bindest hier doch eh die con_art_lang ein. Da könnte man doch einfach title und / oder pagetitle draus nehmen, oder?!
Ich habe genau das geschrieben:
Diese SQL-Statements werden direkt in die SQL-Abfrage integriert.
D.h. aus dem fncGetType usw. wird ein Form-select-Element, welches als Rückgabewert "WertA = 1 und WertB = 2" ergibt - dieses wird in die SQL-Abfrage integriert. WertA und WertB beziehen sich aber auf die Detail-Felder (CMS_TEXT usw.). Die Aussage war, dass an dieser Stelle des SQL-Statements kein SQL-Teil-Statement integriert werden kann, welches die Auswahl der gewünschten Felder ermöglicht (denn diese Felder werden - wie bereits von Dir korrekt wiedergegeben - am Anfang bei SELECT benötigt).

Daher:
Da nützt Dir aber kein SQL-Statement zu einer Artikel-Eigenschaft etwas, da diese nicht in der gleichen Art in der DB gespeichert sind (sondern wirklich als Spalten in einer Tabelle, con_art_lang, denke ich).

Um an diese Informationen zu kommen, musst Du das einleitende SQL-Statement im Output um die Angaben ergänzen und sie im Array speichern.
Aber ich gebe Dir Recht. Eine Klasse fncGetTypeOfBuildTypeSelect wäre hier angebrachter. Quasi als Weiche ob die Daten nun aus einem Contentelement gebaut werden sollen oder aus Atikeleigenschaften.
Ähm, man benötigt entweder Checkboxen oder eine Multi-Select-Box, um die Felder auswählen zu können, die im SELECT-Statement als Feld ermittelt werden sollen. TypeOfBuildTypeSelect sehe ich da nicht so.

Ich weiss gerade nicht, welchen Code Du zitierst, aber in meinem Modul beginnt die Abfrage, die die Daten ermittelt, so:

Code: Alles auswählen

$sql  = "SELECT tblData.value AS headline, ARTLANG.idart AS id, ARTLANG.lastmodified AS lastmodified, " ;
Daher das Beispiel "siehe Ausgabe lastmodified". Hier müssten auch die anderen gewünschten Felder integriert werden (und natürlich nach der Abfrage in die Variablen übertragen werden).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt »

HerrB hat geschrieben:Ähm i-fekt, zum einen hat Dein Code wenig mit meinem Modul zu tun (es gibt keine Variable $angezeigteAnzahl), zum anderen sollte gerade die ceil-Funktion genau diese Berechnung in der benötigten Art und Weise durchführen (in einer Zeile).
Hat bei mir nicht geklappt. Habe die Variablen des Codes geändert.
stony
Beiträge: 360
Registriert: Di 10. Jun 2003, 09:02
Wohnort: Berlin
Kontaktdaten:

Beitrag von stony »

skip muss nextstep sein!

Code: Alles auswählen

      # Example: 1 2 3 4 5 6 7 ...
      $mitKomma = $lCount / $aSettings["ArticlePerPage"];
      $mitKommaInt = round($lCount / $aSettings["ArticlePerPage"]);
      if( $mitKomma > $mitKommaInt ) {
       $iPages = $mitKommaInt+1;
      } elseif( $mitKomma == $mitKommaInt ) {
       $iPages = $mitKommaInt;
      } else {
       $iPages = $mitKommaInt;
      }
      $sPageLinks = '';

      echo '   <div id="Pages">';
      for ($i = 1; $i <= $iPages; $i++) {
         $lNextStep = ($i - 1) * $aSettings["ArticlePerPage"];
         if ($sPageLinks != '') {
            $sPageLinks .= '&nbsp;';
         }
         if ($_REQUEST["nextstep"] == $lNextStep) {
            $sPageLinks .= $i."\n"; # I'm on the current page, no link
         } else {
            $sPageLinks .= '<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep='.$lNextStep.'">'.$i.'</a>'."\n";
         }
      }
      echo '      '.$sPageLinks."\n";
      echo '   </div>'."\n";
gruß stony
mikk
Beiträge: 32
Registriert: Do 17. Nov 2005, 19:49
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von mikk »

i-fekt hat geschrieben:
HerrB hat geschrieben:Ähm i-fekt, zum einen hat Dein Code wenig mit meinem Modul zu tun (es gibt keine Variable $angezeigteAnzahl), zum anderen sollte gerade die ceil-Funktion genau diese Berechnung in der benötigten Art und Weise durchführen (in einer Zeile).
Hat bei mir nicht geklappt. Habe die Variablen des Codes geändert.
Ähm .. ja es ist ein Bug. Also hatte das gleiche Problem bei der 1,2,3,4er Variante. Mit

$iPages = intval( 6 / 4);

bekommt man durch das "casten" zu einem Integer eine 1 anstatt einer 2 zurück.

Aber Herr B. hat die Lösung schon vorgegeben >> nimm die Funktion round() dann passt es. Vielleicht sollte man das beim Modul ändern HerrB.

Viele Grüße, Mikk

P.S.: Noch schnell ein riesen Lob für die tolle Arbeit @HerrB!!
romaro
Beiträge: 38
Registriert: Mo 21. Nov 2005, 14:33
Wohnort: Erlangen
Kontaktdaten:

Anderer Teaser

Beitrag von romaro »

@ HerrB - super Modul.

Hab da ein kleines Problem. Ist bestimmt schon mal irgendwo behandelt worden. Find es aber leider nicht im Forum.

Ich würde gerne einen anderen Anzeigetext als Teaser haben.

Also: In der Liste der News soll was Anderes stehen als in der News selber. Soll eine Presseliste werden und dazu hätte ich gerne für jeden Pressebericht eine kurze Zusammenfassung für die Liste.

Da ich ja über die Konfiguration einstellen kann, was als Teaser verwendet werden soll, bräuchte ich nur einen Tipp, wie ich in der News selbst einen Textfeld erstelle, das nur im Backend beim Artikeleingeben angezeigt wird.

Kann mir da bitte jemand weiterhelfen.

Danke
hypekermit
Beiträge: 213
Registriert: Mi 9. Okt 2002, 21:24
Kontaktdaten:

kleine änderung

Beitrag von hypekermit »

wie kann ich zusätzlich
artikel eigenschaften abfragen

ich benötige anstelle des artikel inhaltes:

seitentitel (aus den artikeleigenschaften)
zusammenfassung (aus den artikeleigenschaften)

wo müsste man das wie im code ändern...

danke für einen tip
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Aber Herr B. hat die Lösung schon vorgegeben >> nimm die Funktion round() dann passt es. Vielleicht sollte man das beim Modul ändern HerrB.
Ähm, Mikk, müsste es nicht ceil sein?
Ich würde gerne einen anderen Anzeigetext als Teaser haben. Da ich ja über die Konfiguration einstellen kann, was als Teaser verwendet werden soll, bräuchte ich nur einen Tipp, wie ich in der News selbst einen Textfeld erstelle, das nur im Backend beim Artikeleingeben angezeigt wird.
Mmmh, ups, habe ich ganz vergessen, denke ich. Dazu einfach mal in die DB gucken, wo z.B. die Zusammenfassung gespeichert ist und das Feld in diese Abfrage:

Code: Alles auswählen

   $sql  = "SELECT tblData.value AS headline, ARTLANG.idart AS id, ARTLANG.lastmodified AS lastmodified, " ;
   $sql .= "ARTLANG.created AS created, ARTLANG.published AS published, CATLANG.name AS category, ";
   $sql .= "ARTLANG.idartlang AS idartlang, CATART.idcat AS idcat, CATART.idcatart AS idcatart FROM ";
integrieren.

Dann eine entsprechende Zeile hier drunter ergänzen:

Code: Alles auswählen

               $aData[$i]["Category"]            = urldecode($db2->f("category"));
Z.B.

Code: Alles auswählen

               $aData[$i]["summary"]            = urldecode($db2->f("<selbst ermitteln, wie das Feld heißt>"));
Dann kannst Du es bei Output Data ausgeben...

@romaro: Gleiche Antwort...

Werde ich mal bei Gelegenheit ergänzen.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
McSilver
Beiträge: 60
Registriert: Mo 25. Apr 2005, 12:14
Wohnort: Teltow
Kontaktdaten:

Beitrag von McSilver »

Hallo HerrB,

ich habe Deine Liste im Einsatz und finde sie mehr als gelungen! Dickes kompliment!

Da ich zugegebener Maßen nicht der Experte bin, habe ich eine Frage.

Ist es möglich, bei Bildern im Artikel, die mit einem Link hinterlegt , diesen Link auch in der Liste auszugeben?
Hätte den großen Vorteil, dass man mit Deiner Liste auch eine BildLinkliste erstellen kann.

Hoffe ich rüberbringen können, was ich meine
JSommer
Beiträge: 324
Registriert: Fr 5. Sep 2003, 12:32
Wohnort: 192.168.0.11
Kontaktdaten:

Beitrag von JSommer »

Also auch aus dem Frankenland ein fettes Lob, geile Liste, HerrB!!!

Jetzt wurschtel ich in den Zeilen 370 bis 400 rum und möchte einfach nur die Ausgabereihenfolge ändern, also Zuerst das Bild, dann die Headline und dann den Text - aber ich kriegs net gebacken, wo in Deinem Code wird diese Reihenfolge bestimmt? Im Moment isses ja erst Headline, dann Text und dann das Bild und dann "weiter" ... abers Bild sollte oben hin oder wenigstens mit einem align=left links neben der Headline und dem Text ... welche Zeile ist mein Ziel? Help, please.

---- update ----

Ich glaub mein Schwein pfeift - der nimmt sogar die Reihenfolge aus der Konfiguration - also Problem gelöst - ich brech zamm, so geil ist diese Artikelliste! HerrB ich will ich Kind von Dir :-)
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

JSommer hat geschrieben:HerrB ich will ich Kind von Dir :-)
HAHAHA, ich habe zuerst "Ich will ein Kind von dir" gelesen, und ich fragte mich, wie das gehen soll. :lol:
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!
Gesperrt