Verschiedene Styles für Headline und Artikelliste

banjaluka
Beiträge: 16
Registriert: Mi 26. Jan 2005, 18:08
Kontaktdaten:

Verschiedene Styles für Headline und Artikelliste

Beitrag von banjaluka » Do 27. Jan 2005, 20:33

Die Artikelliste übernimmt den Text der Headline, leider auch deren Formatierung.
Gibt es eine Möglichkeit dies zu ändern?

Beispiel:
Die Headline soll Fett dargestellt werden. In der Artikelliste soll der Text "Normal" dargestellt bleiben.

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Do 27. Jan 2005, 20:52

"Wie stelle ich gute Fragen"
http://www.contenido.org/forum/viewtopic.php?p=4821

Z.B. WELCHE Artikelliste (es gibt so ungefaehr 420.000 Listen) ...

banjaluka
Beiträge: 16
Registriert: Mi 26. Jan 2005, 18:08
Kontaktdaten:

Beitrag von banjaluka » Do 27. Jan 2005, 21:03

Benutze Contenido-Version 4.4.5-r1
Artikelliste-Version ?; ist im CMS-Packet schon dabei gewesen.
Im Modul selber steht unter Beschreibung: Listet Artikel einer Kategorie mit der 1. Headline

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Do 27. Jan 2005, 21:11

ja, das ist auch eine wichtige Info, dass es die Artikelliste aus der Version sowieso von Contenido ist. :) Es gibt im Forum naemlich noch jede Menge andere Artikellisten.

DIE Contenido-Version habe ich (noch) nicht, deswegen kenne ich das Modul auch nicht. Wie sieht's denn mit deinen PHP-Kenntnissen aus? Wenn du das Modul postest (die Ausgabe koennte reichen), kann dir vielleicht jemand sagen, an welcher Stelle was geaendert werden muss, um eine andere Formatierung zu erhalten. Ob ICH das auf Anhieb sehe, weiss ich nicht, aber es sind noch ein paar Leute mehr im Forum. ;)

banjaluka
Beiträge: 16
Registriert: Mi 26. Jan 2005, 18:08
Kontaktdaten:

Beitrag von banjaluka » Do 27. Jan 2005, 21:27

Die Contenido-Version ist vieleicht neu aber dei Liste ist aus dem Jahre 2002. PHP-Kenntnisse von "gar keine" bis "solala" :oops:
Hier ist der Code (Ausgabe) des Artikelliste-Moduls:

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

// loop through subarticles

echo '
<table width="250" border="0" cellspacing="0" cellpadding="0">
<tr><td bgcolor="0B4A6E" width="250" height="10" colspan="2" ></td></tr>
<tr height="23"><td height="23" width="22" style="border: 0px; border-top:1px; border-bottom:1px; border-color: #0B4A6E; border-style: solid; background-color: #0B4A6E"><img src="images/wuerfel.gif" width="22" height="21" border="0"></td>
<td style="border: 1px; border-left:0px; border-color: #0B4A6E; border-style: solid; background-color: #0B4A6E; padding-left:10px" 
class="punkte">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" class="text" height="22" style="border: 1px; border-top:0px; border-color: #0B4A6E; border-style: solid; background-color: #FAFAFA; padding-left:10px"><a href="'.$link.'">'.urldecode($db->f("value")).'</a></td></tr>';

    } // end while



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

echo '</table><br>';


?>
Hoffe ich hab Dich richtig verstanden und das richtige gepostet
(und ich hoffe mir wird geholfen) :)

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Do 27. Jan 2005, 21:54

aehm, du hast mich zwar richtig verstanden, aber was mich stutzig macht ist das Datum der letzten Aenderung. Timo sagte naemlich, dass er bei der Artikelliste etwas geaendert hat, allerdings weiss ich jetzt nicht mehr, ob schon bei der fuer 4.4.5, oder erst bei der fuer 4.5.x.

Die bei 4.4.4 mitgelieferte Artikelliste war naemlich fehlerhaft, es gibt von HerrB eine korrigierte Version (irgendwo in Module 4.4), und falls timos Aenderungen sich nur auf 4.5 bezogen, waere die bei 4.4.5 mitgelieferte Artikelliste auch noch fehlerhaft.

Die Stelle fuer die Aenderung muesste bei deinem geposteten Code die hier sein:

Code: Alles auswählen

echo '<tr><td colspan="2" class="text" height="22" style="border: 1px; border-top:0px; border-color: #0B4A6E; border-style: solid; background-color: #FAFAFA; padding-left:10px"><a href="'.$link.'">'.urldecode($db->f("value")).'</a></td></tr>';
zumindest scheinen dort die Artikelueberschriften ausgegeben zu werden, aber da steht schon bei td class="text" und nicht headline, deswegen wundere ich mich, warum die Headline-Formatierung uebernommen wird. Oder steht bei dir in der format.css bei .text irgendwas mit font-weight: bold?

banjaluka
Beiträge: 16
Registriert: Mi 26. Jan 2005, 18:08
Kontaktdaten:

Beitrag von banjaluka » Do 27. Jan 2005, 22:23

Ne, leider nicht. Nicht bei .text, noch bei .headline
Das einzige was noch über die format.css in der Artikelliste gesteuert wird sind die Farben. Der Rest (a:link, a:hover, ...) übernimmt die Einstellungen die im Editor des Artikels gemacht wurden.

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Do 27. Jan 2005, 22:45

ach ja, es sind Links!
hmm, was mir noch einfaellt ... du koenntest dir in der format.css die Linkformatierungen fuer Artikelliste extra angeben, also so etwas:

Code: Alles auswählen

A.artiliste:link	{font-family: helvetica, arial, geneva, sans-serif; font-size:11; text-decoration: none; color: #000000}
A.artiliste:visited {font-family: helvetica, arial, geneva, sans-serif; font-size:11; text-decoration: none; color: #000000}
A.artiliste:hover	{font-family: helvetica, arial, geneva, sans-serif; font-size:11; text-decoration: none; color: #330066}
A.artiliste:active	{font-family: helvetica, arial, geneva, sans-serif; font-size:11; text-decoration: none; color: #330066}
Den von mir zitierten Code dann hierin aendern:

Code: Alles auswählen

echo '<tr><td colspan="2" class="text" height="22" style="border: 1px; border-top:0px; border-color: #0B4A6E; border-style: solid; background-color: #FAFAFA; padding-left:10px"><a href="'.$link.'" class="artiliste">'.urldecode($db->f("value")).'</a></td></tr>'; 

banjaluka
Beiträge: 16
Registriert: Mi 26. Jan 2005, 18:08
Kontaktdaten:

Beitrag von banjaluka » Do 27. Jan 2005, 23:28

Hat leider auch nichts gebracht :cry:
Das merkwürdige an der Geschichte ist das sich die Links der Artikelliste einen Teil der format.css (Farben) aneignen und den anderen Teil vom Artikel selber (Editor(size, weight))
Für heute lass ich es mal gut sein
Dank Dir für die Bemühungen...

Robatzen
Beiträge: 84
Registriert: Di 27. Jan 2004, 17:03
Kontaktdaten:

Beitrag von Robatzen » Fr 28. Jan 2005, 11:32

Das Problem kenne ich von Snoopy Artikelliste, vielleicht kann ich weiterhelfen.

Die Headline wird so in die Artikelliste geparst wie sie vom SPAW oder einem anderen Editor im Artikel erstellt wurde. Also im Zweifelsfall sieht eine Überschrift ungefähr so aus:

Code: Alles auswählen

<p><h1><strong>Überschrift</strong></h1></p>
So oder ähnlich wird das nun in die Artikelliste übernommen.

Code: Alles auswählen

$head = substr($head, 0, "CMS_VALUE[3]"); 
$head .= '..';
In $head stehen dann so viele Zeichen wie im Input des Moduls definiert wurden, sagen wir 46 Zeichen sollen angezeigt werden:

Code: Alles auswählen

<tr><td colspan="2" class="text" height="22" style="border: 1px; border-top:0px; border-color: #0B4A6E; border-style: solid; background-color: #FAFAFA; padding-left:10px"><a href="'.$link.'"><p><h1><strong>Überschrift</strong></h1></p></a></td></tr>'; 
So nun sieht man schon wo das Problem liegt, die Formatierungsanweisungen des Spaws stehen so das sie letztlich die CSS-Formatierungen der Ausgabe überschreiben.

Als Lösungsansatz habe ich einfach nur die jeweiligen Strings gefiltert um evtl. vorhandene Formatierungs Tags herauszulöschen.

Versuch mal folgendes:

Ersetze diesen Teil im Output

Code: Alles auswählen

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

Code: Alles auswählen

if ( strlen($head) > "CMS_VALUE[3]") { 
            $head = substr($head, 0, "CMS_VALUE[3]"); 
            
            $head = str_replace ('<STRONG>' , '', $head); 
            $head = str_replace ('</STRONG>' , '', $head);
            $head = str_replace ('<strong>' , '', $head);
            $head = str_replace ('</strong>' , '', $head);
            $head = str_replace ('<B>' , '', $head);
            $head = str_replace ('</B>' , '', $head); 
            $head = str_replace ('<b>' , '', $head);
            $head = str_replace ('</b>' , '', $head);        

            $head .= '..'; 
            }
Ich habs jetzt nicht getestet da ich das Modul so nicht zu Hand habe, es sollte aber funktionieren. Die Filter müssen je nach Bedarf erweitert werden mit dem obigen Beispiel sollte zumindest nichts fettes mehr auftauchen. Praktisch ist es meisst auch Absätze und Zeilenumbrüche auszufiltern.

Wie gesagt nicht die eleganteste Lösung, aber bei mir funktioniert es wunderbar und es ist beliebig erweiter- und anpassbar.

Ich hoffe das hilft.

Rob

banjaluka
Beiträge: 16
Registriert: Mi 26. Jan 2005, 18:08
Kontaktdaten:

Beitrag von banjaluka » Fr 28. Jan 2005, 17:47

Töööörröööööööööööö... :D
Es funktioniert!!!
Danke Robatzen. Und das es nicht die eleganteste Lösung ist, ist mir im moment schnuppe. Hauptsache die Formatierung wird nicht mehr vom Editor übernommen

Robatzen
Beiträge: 84
Registriert: Di 27. Jan 2004, 17:03
Kontaktdaten:

Beitrag von Robatzen » Fr 28. Jan 2005, 18:54

Eleganter würde es wohl mit der Strip Tags Funktion gehen.

Bin ich aber auch erst drauf gestossen worden, muss ich mir mal anschauen, dann spart man die Unmenge von Einzelfiltern. :)
Beschreibung:
string strip_tags ( string str [, string allowable_tags])


Diese Funktion versucht, alle HTML- und PHP-Tags aus str zu entfernen. Bei unvollständigen oder sinnlosen Tags werden Fehler ausgegeben. Es wird die gleiche Art der Tag-Engine wie bei der fgetss()-Funktion benutzt.

nicnac
Beiträge: 326
Registriert: Do 6. Jan 2005, 15:21
Wohnort: Bln
Kontaktdaten:

Beitrag von nicnac » Do 26. Mai 2005, 10:43

morgen.

ich benutze auch die normale artikelliste aus contenido bei 4.4.5.
und komme trotz dem ich alles so gemacht habe wie hier beschrieben nicht weiter...
die links sind immer noch so wie die headline aussieht, ich habe pro link einen tierischen abstand ...

hier mal der 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
************************************************/

// 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

// loop through subarticles

echo '
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr><td style="padding-left:10px">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 = str_replace ('<STRONG>' , '', $head);
            $head = str_replace ('</STRONG>' , '', $head);
            $head = str_replace ('<strong>' , '', $head);
            $head = str_replace ('</strong>' , '', $head);
            $head = str_replace ('<B>' , '', $head);
            $head = str_replace ('</B>' , '', $head);
            $head = str_replace ('<b>' , '', $head);
            $head = str_replace ('</b>' , '', $head);       
            $head = str_replace ('<H2>' , '', $head);
            $head = str_replace ('</H2>' , '', $head);
            $head = str_replace ('<h2>' , '', $head);
            $head = str_replace ('</h2>' , '', $head);  
            $head = str_replace ('<H1>' , '', $head);
            $head = str_replace ('</H1>' , '', $head);
            $head = str_replace ('<h1>' , '', $head);
            $head = str_replace ('</h1>' , '', $head);  
           $head .= '..';
            }
          // link
          $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=$linkID[$key]&m=$m&s=$s");

          echo '<tr><td height="22" style="padding:0; margin: 0;padding-left:10px;height: 22px;"><a href="'.$link.'" style="color: black; background-color:green;">'.urldecode($db->f("value")).'</a></td></tr>'; 

    } // end while

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

echo '</table><br>';


?>

die hintergrundfarbe im link habe ich nur gemacht um zu sehen, ob link oder was anderes die höhe hervorrufen. der link ist es nicht. im <td> ist der gesamte bereich der auflistung dann aber grün...

mit der funktion string strip_tags bin ich nicht klar gekommen, so fit bin ich leider noch nicht in php, wußte nicht wie ich es von der syntax her anwenden muß.
grüße
nicole

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 26. Mai 2005, 11:32

Na ja, so schwer ist es eigentlich nicht (http://de3.php.net/manual/de/function.strip-tags.php).

Man füge vor

Code: Alles auswählen

$head = str_replace ('<STRONG>' , '', $head); 
die Zeile

Code: Alles auswählen

$head = strip_tags ($head);
ein und kommentiere die restlichen str_replace-Zeilen aus. Sollte man sie noch brauchen, kann man sie dann wieder einzeln aktivieren.

Zeilenkommentar: //
Bereichskommentar (auch über mehrere Zeilen): /* */

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

nicnac
Beiträge: 326
Registriert: Do 6. Jan 2005, 15:21
Wohnort: Bln
Kontaktdaten:

Beitrag von nicnac » Do 26. Mai 2005, 11:41

dank dir!
mittlerweile habe ich deine liste -> Modul: Artikelliste für V4.4.x (V2.0.2) gefunden und probier mich da gerade aus. leider das gleiche problem, da ich überall headlines verwendet habe, die jetzt auch in der liste angezeigt werden sollen.

aber ein schritt nach dem anderen.
erstmal die alte liste modifizieren, ausprobieren, auf deine adaptieren und weitersehen.

muß jetzt erstmal los.
probier das nachher aus.

lg
nicole

Gesperrt