MyBB.de Forum

Normale Version: meta description variabel ?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7 8
Wie lautet die Fehlermeldung? Bitte beachte, dass das <?php aufgrund eines Fehlers immer angezeigt wird, aber nicht zum Code gehört, der eingefügt werden muss.
Michael schrieb:...beachte, dass das <?php aufgrund eines Fehlers immer angezeigt wird, aber nicht zum Code gehört, der eingefügt werden muss.

Danke, DAS war die Lösung für die angezeigten Fehler Wink

Wenn ich nun das hier einfüge:

Code:
if(basename($_SERVER['PHP_SELF']) == "showthread.php") {
$tid = addslashes(intval($mybb->input['tid']));
$query = $db->query("SELECT subject FROM ".TABLE_PREFIX."threads WHERE tid = ".$tid."");
$threaddescription = $db->fetch_array($query);
$metadescription = "<meta name=\"description\" content=\"".$threaddescription['subject']."\" />";
}

... dann bekomme ich eine metadescription mit der Überschrift von jeweiligen Thema.

Was muss ich genau eingeben, damit dort ZUSÄTZLICH auch die ersten 100 Wörter erscheinen?

Damit habe ich leider keinen Erfolg gehabt:

Code:
if(basename($_SERVER['PHP_SELF']) == "showthread.php") {
$tid = intval($mybb->input['tid']);
$query = $db->query("SELECT message FROM ".TABLE_PREFIX."posts WHERE tid = ".$tid." AND visible = '1' ORDER BY dateline ASC LIMIT 0,1");
$threaddescription['message'] = str_replace("\"", "", $threaddescription['message']);
$threaddescription['message'] = htmlentities(str_replace("\"", "", $threaddescription['message']));
if (strlen($threaddescription['message']) > 100) {
    $forum = substr($threaddescription['message'], 0, 100) . "...";
$metadescription = "<meta name=\"description\" content=\"".$threaddescription['message']."\" />";
}
Du musst die Ergebnisse des Queries erst auslesen. Suche diese Zeile:
PHP-Code:
$threaddescription['message'] = str_replace("\""""$threaddescription['message']); 
und füge darüber diese ein:
PHP-Code:
$threaddescription $db->fetch_array($query); 
Eingefügt habe ich das hier:

Code:
if(basename($_SERVER['PHP_SELF']) == "showthread.php") {
$tid = intval($mybb->input['tid']);
$query = $db->query("SELECT message FROM ".TABLE_PREFIX."posts WHERE tid = ".$tid." AND visible = '1' ORDER BY dateline ASC LIMIT 0,1");
$threaddescription = $db->fetch_array($query);
$threaddescription['message'] = str_replace("\"", "", $threaddescription['message']);
$threaddescription['message'] = htmlentities(str_replace("\"", "", $threaddescription['message']));
if (strlen($threaddescription['message']) > 100) {
    $forum = substr($threaddescription['message'], 0, 100) . "...";
$metadescription = "<meta name=\"description\" content=\"".$threaddescription['message']."\" />";
}

Ergebniss:

Code:
Parse error: parse error, unexpected $ in /var/www/global.php on line 391

Ist die letzte leere Zeile in der global.php.
Da fehlt eine abschließende Klammer am Ende, also }. Wenn das dein Problem nicht behebt hänge deine global.php hier als Attachment an.
Du hast mal wieder Recht, nun werden in Metags die ersten 100 Wörter angezeigt. Danke schön!

Ist es möglich, die beiden Codes so zu vermischen, dass dort zuerst das Topic landet (weil es aussagekräftig ist) und dahinter zusätzlich die ersten 100 Wörter?
Poste bitte mal deinen gesamten Code, so dass man den zusammenfassen kann.
Anbei meine global.php.

Eingefügter Code dort:

Code:
if(basename($_SERVER['PHP_SELF']) == "showthread.php") {
$tid = intval($mybb->input['tid']);
$query = $db->query("SELECT message FROM ".TABLE_PREFIX."posts WHERE tid = ".$tid." AND visible = '1' ORDER BY dateline ASC LIMIT 0,1");
$threaddescription = $db->fetch_array($query);
$threaddescription['message'] = str_replace("\"", "", $threaddescription['message']);
$threaddescription['message'] = htmlentities(str_replace("\"", "", $threaddescription['message']));
if (strlen($threaddescription['message']) > 100) {
    $forum = substr($threaddescription['message'], 0, 100) . "...";
$metadescription = "<meta name=\"description\" content=\"".$threaddescription['message']."\" />";
}

Damit bekomme ich die ersten 100 Wörter in die Metatags.
Das Topic wird hierbei nicht berücksichtigt.

Ist es moglich, die Funktion von unteren Code dort zu implementieren, so dass ich beides (Topic und die 100 Wörter) habe?

Damit bekommt man Topic in die Metatags:

Code:
if(basename($_SERVER['PHP_SELF']) == "showthread.php") {
$tid = addslashes(intval($mybb->input['tid']));
$query = $db->query("SELECT subject FROM ".TABLE_PREFIX."threads WHERE tid = ".$tid."");
$threaddescription = $db->fetch_array($query);
$metadescription = "<meta name=\"description\" content=\"".$threaddescription['subject']."\" />";
}
Dieser Code sollte beides im Tag ausgeben:
PHP-Code:
if(basename($_SERVER['PHP_SELF']) == "showthread.php") {
    
$tid intval($mybb->input['tid']);
    
$query $db->query("SELECT subject,message FROM ".TABLE_PREFIX."posts WHERE tid = ".$tid." AND visible = '1' ORDER BY dateline ASC LIMIT 0,1");
    
$threaddescription $db->fetch_array($query);
    
$subject htmlentities($threaddescription['subject']);
    if (
strlen($threaddescription['message']) > 100) {
        
$threaddescription['message'] = substr($threaddescription['message'], 0100) . "...";
    }
    
$description htmlentities(str_replace("\""""$threaddescription['message']));
    
$metadescription "<meta name=\"description\" content=\"".$subject." | ".$description."\" />";

Ergibt in Seitenquelltext:

Code:
<meta name="description" content="DAS IST MEIN TOPIC! | ... und hier kommt mein Beitrag ;)" />

Perfect und nun hast Du Ruhe von mir Smile
Seiten: 1 2 3 4 5 6 7 8