metadesc-Plugin: Zeichenanzahl Description, Klassen in Tags

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
serotonic
Regular
Posts: 89
Joined: Wed Feb 08, 2006 6:06 pm

metadesc-Plugin: Zeichenanzahl Description, Klassen in Tags

Post 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 :mrgreen:
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: metadesc-Plugin: Zeichenanzahl Description, Klassen in T

Post 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...
serotonic
Regular
Posts: 89
Joined: Wed Feb 08, 2006 6:06 pm

Re: metadesc-Plugin: Zeichenanzahl Description, Klassen in T

Post 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 &amps; konvertiert, was natürlich die Entities zerschießt. Kann man beides auch im o.a. Beispiel sehen.

Und wieder: Grüße!
serotonic :mrgreen:
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: metadesc-Plugin: Zeichenanzahl Description, Klassen in T

Post 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!
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: metadesc-Plugin: Zeichenanzahl Description, Klassen in T

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
serotonic
Regular
Posts: 89
Joined: Wed Feb 08, 2006 6:06 pm

Re: metadesc-Plugin: Zeichenanzahl Description, Klassen in T

Post by serotonic »

Timbalu, danke :mrgreen:

Garvin, ich hab das Thema hier nochmal auf Englisch und so.
(Und dankeschön, du Tausendsasser! :))
Post Reply