Datum eines Artikels anzeigen/ausgeben, z.B. Neuigkeitenart.

Gesperrt
tommykoeln
Beiträge: 40
Registriert: So 12. Jun 2005, 12:13
Wohnort: Köln
Kontaktdaten:

Datum eines Artikels anzeigen/ausgeben, z.B. Neuigkeitenart.

Beitrag von tommykoeln »

Hallo,

ich habe leider schon wieder ein Problem. ;-)

Und zwar habe ich auf meiner Seite das Neuigkeiten Modul aus Contenido eingebaut, welches alle Neuigkeiten (Artikel) aus dem Ordner „News“ ausgibt.
Dazu soll jedoch auch das Erstelldatum des Artikels angezeigt werden. Ich habe ein Script gefunden, welches zwar das Datum der Seite wiedergibt, auf der man sich befindet, jedoch nicht das Datum des jeweiligen Neuigkeiten Artikels.
Ich habe auch schon alles mögliche im Code geändert, leider kam entweder eine Fehlermeldung oder gar keine Anzeige des Datums heraus. :-(

Hier sind die Scripts:

Der Input des Modules:

Code: Alles auswählen

/**
* Artikelliste mit I1,H1,T1
*
* Erstellt eine Liste mit allen Artikel bis
* auf den Startartikel.
*
* INPUT
*
* Author Jan Lengowski
* Copyright four for business AG
*/

// selected category
$selected = "CMS_VALUE[0]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr valign=\"top\">
          <td class=\"text_medium\">Kategorie w?hlen:</td>
          <td>
            <select name=\"CMS_VAR[0]\">";
            if($selected!="0" && $selected!=""){
             echo"<option value=\"0\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "SELECT A.idcat, A.level, C.name FROM ".$cfg["tab"]["cat_tree"]." AS A, ".
                     $cfg["tab"]["cat"]." AS B,  ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat ".
                     "AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' ".
                     "AND C.visible=1 ORDER BY A.idtree";
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";

echo "    </td>
        </tr>
        <tr>
          <td class=\"text_medium\">?berschrift</td>
          <td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\"></td>
        </tr>
        <tr>
          <td class=\"text_medium\">Angezeigte L?nge in Zeichen</td>
          <td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\"></td>
        </tr>

      </table>";
Der Output des Modules:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* REFERENZ MODUL / ARTIKELLISTE
*
* Artikelliste mit Img 1, Head 1, Head 2
*
* Erstellt eine Liste mit allen Artikel bis
* auf den Startartikel.
*
* Author      :     Jan Lengowski
* Copyright   :     four for business AG
* Created     :     15-08-2002
* Modified    :     16-08-2002
************************************************/

// second db class instance
$db2 = new DB_Contenido;

// selected category
$selcat = "CMS_VALUE[0]";

 if($selcat!="0" && $selcat!=""){

// select all articles in category widthout start article
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".
          $cfg["tab"]["art_lang"]." AS ARTLANG ".
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ".
         "ARTLANG.online = '1' ORDER BY CATART.idart DESC";

// execute query
$db->query($query);

unset($articleID);
unset($linkID);

// get id's of sub articles
while ($db->next_record()) {
  $articleID[] = $db->f("idartlang");
  $linkID[] = $db->f("idart");
} // end while

// Datum ermitteln

$query = "SELECT B.author AS author,
A.created AS created,
C.realname AS realname
FROM
".$cfg["tab"]["art_lang"]." AS A,
".$cfg["tab"]["content"]." AS B,
".$cfg["tab"]["phplib_auth_user_md5"]." AS C
WHERE
A.idart = '$idart' AND
B.idartlang = A.idartlang AND
C.username = B.author
ORDER BY
A.created DESC";

$db->query($query);
$db->next_record();

$author = $db->f("author"); // loginname
$realname = $db->f("realname"); // realname
$created = strtotime($db->f("created"));
$created = date("d.m.Y",$created);


// loop through subarticles

echo '
<tr><td height="30" colspan="2" ></td></tr>
<tr>
<td width="174" height="20" style="border: 1px; border-left:0px; border-color: #F7C473; background-color: #989899; padding-left:10px"><img src="./images/headline_news2.gif"></td></tr>
';

if (is_array($articleID)) {

    foreach ($articleID as $key => $value) {

          // select all CMS variables of the article
          $sql = "SELECT * FROM ".$cfg["tab"]["content"]." WHERE idartlang = '$value' AND idtype = '1' AND typeid = '1'";
          $db->query($sql);
          $db->next_record();
          $head = $db->f("value");

          if ( strlen($head) > "CMS_VALUE[3]") {
            $head = substr($head, 0, "CMS_VALUE[3]");
            $head .= '..';
          }

          // link
          $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=$linkID[$key]&m=$m&s=$s");

          echo '
              <tr>
                <td><table width="100%"  border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td width="5%" height="5"></td>
                    <td width="91%" height="5"></td>
                    <td width="4%" height="5"></td>
                  </tr>
                  <tr>
                    <td width="5%">&nbsp;</td>
                    <td width="91%" class="text_ueberschrift">'.$created.'</td>
                    <td width="4%">&nbsp;</td>
                  </tr>
                  <tr>
                    <td width="5%" height="5"></td>
                    <td width="91%" height="5"></td>
                    <td width="4%" height="5"></td>
                  </tr>
                  <tr>
                    <td>&nbsp;</td>
                    <td class="seitentext">'.urldecode($db->f("value")).'...</td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr>
                    <td class="grauelinie_unten">&nbsp;</td>
                    <td class="grauelinie_unten"><div align="right" class="mehr"><img src="./images/arrow_grey.gif">&nbsp;<a href="'.$link.'" class="mehr">mehr</a></div></td>
                    <td class="grauelinie_unten">&nbsp;</td>
                  </tr>
                </table></td>
              </tr>
';

    } // end while



          unset($headline);
        unset($text);
        
    } // end foreach
    
} // end if (is_array)

echo '<br>';


?>
Dieser Code ist derzeitig für die Ausgabe des "falschen" Datums zuständig (er ist Teil des Output Codes, siehe oben):

Code: Alles auswählen

// Datum ermitteln

$query = "SELECT B.author AS author,
A.created AS created,
C.realname AS realname
FROM
".$cfg["tab"]["art_lang"]." AS A,
".$cfg["tab"]["content"]." AS B,
".$cfg["tab"]["phplib_auth_user_md5"]." AS C
WHERE
A.idart = '$idart' AND
B.idartlang = A.idartlang AND
C.username = B.author
ORDER BY
A.created DESC";

$db->query($query);
$db->next_record();

$author = $db->f("author"); // loginname
$realname = $db->f("realname"); // realname
$created = strtotime($db->f("created"));
$created = date("d.m.Y",$created); 
Und so sieht die Neuigkeitenleiste auf der Webseite aus:

Bild

Es wird, wie auf dem Bild zu sehen, das Erstelldatum der Seite "xyz" angezeigt aber nicht das Datum der jeweiligen Neuigkeit, zum Beispiel 10.06.2005 oder 09.06.2005.

Kann mir jemand helfen :?:
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Ich bin mir sicher, dass es dazu schon was im Forum gibt.

Daher ohne zunächst ohne weiteren Support und ungetestet (Output):

Ersetze

Code: Alles auswählen

$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ". 
          $cfg["tab"]["art_lang"]." AS ARTLANG ". 
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ". 
         "ARTLANG.online = '1' ORDER BY CATART.idart DESC";
durch

Code: Alles auswählen

$query = "SELECT ARTLANG.idart, ARTLANG.created AS created, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ". 
          $cfg["tab"]["art_lang"]." AS ARTLANG ". 
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ". 
         "ARTLANG.online = '1' ORDER BY CATART.idart DESC";

Code: Alles auswählen

unset($articleID); 
unset($linkID); 
durch

Code: Alles auswählen

unset($articleID); 
unset($linkID);
unset($createdDate);

Code: Alles auswählen

  $articleID[] = $db->f("idartlang"); 
  $linkID[] = $db->f("idart"); 
durch

Code: Alles auswählen

  $articleID[] = $db->f("idartlang"); 
  $linkID[] = $db->f("idart");
  $createdDate[] = date("d.m.Y", strtotime($db->f("created")));
Raus:

Code: Alles auswählen

// Datum ermitteln 

$query = "SELECT B.author AS author, 
A.created AS created, 
C.realname AS realname 
FROM 
".$cfg["tab"]["art_lang"]." AS A, 
".$cfg["tab"]["content"]." AS B, 
".$cfg["tab"]["phplib_auth_user_md5"]." AS C 
WHERE 
A.idart = '$idart' AND 
B.idartlang = A.idartlang AND 
C.username = B.author 
ORDER BY 
A.created DESC"; 

$db->query($query); 
$db->next_record(); 

$author = $db->f("author"); // loginname 
$realname = $db->f("realname"); // realname 
$created = strtotime($db->f("created")); 
$created = date("d.m.Y",$created); 

Code: Alles auswählen

                    <td width="91%" class="text_ueberschrift">'.$created.'</td>
durch

Code: Alles auswählen

                    <td width="91%" class="text_ueberschrift">'.$createdDate[$key].'</td>
Übrigens stilistisch warlich nicht schön...

Und falls die Frage auf der Zunge liegt: Das Datum der letzten Änderung des Artikels (im Gegensatz zum Datum der Erstellung, wie hier verwendet) steht in lastmodified (d.h. ersetze ARTLANG.created durch ARTLANG.lastmodified im SQL-Statement).

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
tommykoeln
Beiträge: 40
Registriert: So 12. Jun 2005, 12:13
Wohnort: Köln
Kontaktdaten:

Beitrag von tommykoeln »

Hallo HerrB,

leider habe ich dieses Thema noch nicht im Forum gefunden. :(
Ich habe die Suchfunktion benutzt nur leider nicht das gefunden, wo nach ich eigentlich gesucht habe.

Ich weiß garnicht, wie ich Ihnen danken soll.
Alles klappt so, wie ich es mir vorgestellt habe. :D :D

Aber was meinen Sie den mit "stilistisch nicht so schön"? - den HTML Code oder den PHP Code?


Gruß

Thomas

______________
PHP Bücher habe ich mir inzwischen schon angelegt aber vielleicht sollte ich auch mal die Zeit finden sie bis zum Ende durchzulesen, da wo die schwierigen Themen anfangen. :wink:
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Den PHP-Code (aber das ist in der Vorlage schon so). Beispielsweise werden drei Arrays für die Datenübergabe definiert - da hätte es ein Array mit drei Dimensionen auch getan...

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
Gesperrt