Page 1 of 1
metadesc-Plugin: Zeichenanzahl Description, Klassen in Tags
Posted: Mon Jan 10, 2011 3:52 pm
by serotonic
Guten Tag
1.) Mir ist gerade aufgefallen, dass das metadesc-Plugin unter Umständen, derer ich nicht gewahr bin, wesentlich mehr als nur die ersten 120 Zeichen im ersten <p>-Tag ausgibt. Beispiel hier:
http://serotonic.de/Heute-back-ich,-mor ... n-139.html
Hier taucht fast der komplette Eintrag in der Meta-Description auf. Nur – und das führt mich direkt zu Punkt 2.) – der erste, eigentlich übliche, Absatz nicht. Im Vergleich mit anderen Einträgen habe ich herausgefunden, dass es daran liegt, dass ich dem ersten Absatz mit "intro" eine Klasse zugewiesen habe.
2.) Auch werden alle Tags, die Schlüsselwörter enthalten sollen, nicht durchsucht, sobald man dem jeweiligen Tag eine Klasse zuweist.
Hat jemand eine Idee, woran 1.) liegen könnte und ob 2.) so gewollt oder vielleicht nicht anders zu lösen wäre?
Grüße!
serotonic

Re: metadesc-Plugin: Zeichenanzahl Description, Klassen in T
Posted: Mon Jan 10, 2011 4:04 pm
by Timbalu
Hi
Man müsste für die Ausgabe irgendetwas
strip_tags($ausgabe)-artiges in das Plugin hineinschreiben.
Wenn du weißt wo das geschieht, würde ich dem eine Chance geben.
Ansonsten muss man sich das Plugin mal sehr genau draufhin anschauen...
Gruß
Ian
Edit:
das liegt an der Funktion
Code: Select all
83 function extract_description($text) {
84 $x = strpos($text, '<p>');
85 if ($x === false) {
86 return substr(strip_tags($text), 0, 120);
87 }
88
89 $y = strpos($text, '</p>');
90 if ($y === false) {
91 return substr(strip_tags($text), 0, 120);
92 }
93
94 $title = substr($text, $x+3, $y-($x+3));
95 $title = strip_tags($title);
96 return $title;
97 }
98
Wenn du deine p's in div's verwandelst, sollte alles gut werden.
Oder, und das fiel mir gerad noch ein, die Stellung des Plugins möglicherweise vor nl2br verschieben...
Re: metadesc-Plugin: Zeichenanzahl Description, Klassen in T
Posted: Tue Jan 11, 2011 11:57 am
by serotonic
Hallo Timbalu,
Zu 1.)
an der Postition lag es nicht, das Plugin stand schon vor nl2br. Aber das Ändern von <p> zu <div> hat – zumindest für die Description – Abhilfe geschaffen. Dankeschön!
Wäre es nicht sinnvoll, das <div> per Default zu nutzen? Ich bin doch bestimmt nicht die einzige Installation, die mit Klassen arbeitet, oder bei der ein Artikel mal mit einer h3, einer ul oder einem blockquote anfängt. Ich weiß natürlich nicht, ob ich das Ausmaß völlig überblicke, aber damit dürften doch viel mehr Fälle abgedeckt werden als mit einer Beschränkung auf Absätze?
Zu 2.)
Bei den Keywords habe ich das Problem nach wie vor, dass Tags nicht durchsucht werden, sobald sie eine Klasse oder ID haben. Beispiel:
http://serotonic.de/Serien-2010-V-149.html
Ich habe das Plugin so konfiguriert, dass cite,h3,h4 durchsucht werden müssten, und zufälligerweise haben hier alle Zwischenüberschriften eine ID und alle cites eine Klasse, so dass für den Eintrag gar keine Keywords ausgegeben werden.
Und neu, 3.)
Mir ist aufgefallen, dass die Zeilenumbrüche innerhalb der Description nicht getilgt werden, und die Ampersands von verwendeten Entities werden in &s; konvertiert, was natürlich die Entities zerschießt. Kann man beides auch im o.a. Beispiel sehen.
Und wieder: Grüße!
serotonic

Re: metadesc-Plugin: Zeichenanzahl Description, Klassen in T
Posted: Tue Jan 11, 2011 12:57 pm
by Timbalu
Hi
Also ich weiß nicht warum es diese p Geschichte im Plugin überhaupt gibt.
Eigentlich bräuchte man nur ein return substr(strip_tags($text), 0, 120); für die meta desc.
Zu 2, den Keywords, frage ich mich ebenfalls, warum das so
Code: Select all
if (preg_match_all('/<' . $tags[$i] . '>([^>]*)<\/' . $tags[$i] . '>/si', $text, $match)) {
$results = array_merge($results, $match[1]);
}
geregelt ist. Ein
Code: Select all
$stext = strip_tags($text);
for ($i=0; $i < $tags_count; $i++) {
if (preg_match_all("/$tags[$i]/si", $stext, $match))
o.ä. sollte da doch reichen, oder?
Zu 3
Das sollte an den htmlspecialchars() in
Code: Select all
echo '<meta name="description" content="' . htmlspecialchars($default_description) . '" />' . "\n";
echo '<meta name="keywords" content="' . htmlspecialchars($default_keywords) . '" />' . "\n";
liegen.
Grüße
Ian
btw, habe gerade
"Wie ich kürzlich meiner Metzgersfrau gern den [Tüdeldü] [verdingst] hätte." gelesen und vor lachen beinahe unterm tisch gelegen. Einfach Klasse, dein Stil!
Re: metadesc-Plugin: Zeichenanzahl Description, Klassen in T
Posted: Tue Jan 11, 2011 2:18 pm
by garvinhicking
Hi!
1:
Die extract_description wird ja nur aufgerufen, wenn man keine gezielte meta_description oder meta_keywords ausgefüllt hat und dies aus entry body/extended gezogen werden. Dies arbeitet numal mit <p> Tags und nicht mit <div>s. Da serendipity und alle markup transformationsplugins nur <p> nutzen ohne Klasse, sind hier auch die Regexps darauf ausgelegt.
Man müsste also daher die extract-Methode im RegExp komplett so umschreiben dass es auf "<p[^>]*>" reagiert; derzeit wird aber in der extract methode noch garkein regexp sondern ja nur strpos verwendet, daher müsste man das grundsätzlich umstricken. Patches sind herzlich willkommen, ich komme da erstmal leider nicht zu.
Da es aber sowieso nur auftritt wenn jemand manuell Tags und Klassen vergibt, kann man ja den derzeit erwähnten workaround gut einsetzen.
2:
Das würde ich versuchen etwas näher am derzeitigen Code zu lassen, und habe nun mal o.a.g. regexp eingefügt.
Don Chambers hat an diesem Plugin damals viel gearbeitet, wie auch Judebert. Es wäre von großem Vorteil die Diskussion auf englisch zu führen um die ursprünglichen Entwickler teilhaben zu lassen...
3:
htmlspecialchars können wir im plugin so leider nicht rausnehmen, weil es für die Dummuser dann keinen gültigen Output erzeugen würde. Am sinnvollsten wäre es da sicher, eine neue Pluginkonfiguration einzubauen. Das habe ich auch mal gemacht.
Viele Grüße,
Garvin
Re: metadesc-Plugin: Zeichenanzahl Description, Klassen in T
Posted: Tue Jan 11, 2011 4:27 pm
by serotonic
Timbalu, danke
Garvin, ich hab das Thema
hier nochmal auf Englisch und so.
(Und dankeschön, du Tausendsasser!

)