Artikelliste zeigt alle Zeichen der Headline

Gesperrt
Zalu
Beiträge: 17
Registriert: Di 10. Aug 2004, 12:53
Kontaktdaten:

Artikelliste zeigt alle Zeichen der Headline

Beitrag von Zalu »

Hi Leute,

als Contenidoneuling und php-Frischling kann ich leider nicht herausfinden, warum es bei meiner Artikelliste nicht klappt. Vielleich könnt Ihr mir ja helfen.
Problem: Die Artikellist nutze ich als "Navigationserweiterung". Alle Artikel einer Kategorie werden auch angezeigt. Doch die Einstellung: "Angezeigt Länge in Zeichen" hat so gar keine Auswirkung. Woran mag das liegen?
Ich will die Headline halt gerne verkürzen.

Hier die Codes:
Input:

Code: Alles auswählen

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

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr valign=\"top\">
          <td>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>Überschrift</td>
          <td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\"></td>
        </tr>
        <tr>
          <td>Angezeigte Länge in Zeichen</td>
          <td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\"></td>
        </tr>

      </table>";
Output:

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 
* Modified : 23-08-2004 Sortierung nach Artikelsortierer 
************************************************/ 

// 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, ARTLANG.artsort 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 ARTLANG.artsort, CATART.idart"; 

// 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"); 
$sortID[] = $db->f("artsort"); 
} // end while 

// loop through subarticles 

echo ' 
<table valign="top" width="90%" border="0" cellspacing="0" cellpadding="0"> 
<tr><td height="30" colspan="2" ></td></tr> 
<tr><td bgcolor="#FFF7B5"><img src="images/wuerfel.gif" border="0" height="15" width="15"></td> 
<td width="143" bgcolor="#FFF7B5" class="punkte">&nbsp;CMS_VALUE[2]</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 colspan="2" height="22" style="padding-left:10px" bgcolor="#FFF7B5" cellspacing="1"><a class="artikel" href="'.$link.'">-&nbsp;'.urldecode($db->f("value")).'</a></td></tr>'; 

echo '<tr><td style="border=0; border-top=1;"></td></tr>';

} // end while 



unset($headline); 
unset($text); 

} // end foreach 

} // end if (is_array) 

echo '</table><br>'; 


?>
Wäre Euch für eine Antwort sehr dankbar!


Gruß

Zalu
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Artikelliste zeigt alle Zeichen der Headline

Beitrag von emergence »

Code: Alles auswählen

$head = $db->f("value");
ersetzen durch

Code: Alles auswählen

$head = urldecode($db->f("value"));
und

Code: Alles auswählen

echo '<tr><td colspan="2" height="22" style="padding-left:10px" bgcolor="#FFF7B5" cellspacing="1"><a class="artikel" href="'.$link.'">-&nbsp;'.urldecode($db->f("value")).'</a></td></tr>';
ersetzen durch

Code: Alles auswählen

echo '<tr><td colspan="2" height="22" style="padding-left:10px" bgcolor="#FFF7B5" cellspacing="1"><a class="artikel" href="'.$link.'">-&nbsp;'.$head.'</a></td></tr>';
sollte gehen...
*** make your own tools (wishlist :: thx)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

aber das verkürzt doch die länge der headline nicht? oder sehe ich das bloss nicht?
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

Code: Alles auswählen

$head = urldecode($db->f("value"));

if ( strlen($head) > "CMS_VALUE[3]") { 
$head = substr($head, 0, "CMS_VALUE[3]"); 
$head .= '..'; 
} 
verkürzt den string und speichert den wert in der variable $head

nur wird $head im orginal script nicht ausgegeben...
*** make your own tools (wishlist :: thx)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

sorry about! war wohl ein wenig voreilig von mir... :oops:

nichts für ungut!
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Zalu
Beiträge: 17
Registriert: Di 10. Aug 2004, 12:53
Kontaktdaten:

Beitrag von Zalu »

Nach einem Tag Berufsschule, konnte ich die Änderungen vornehmen. Es klappt!

Vielen Dank dafür!
Gesperrt