Differences

This shows you the differences between two versions of the page.

deutsch:technik:title-und-meta-tags [2011/11/18 11:24]
Knut Heermann (flip-flop)
deutsch:technik:title-und-meta-tags [2018/06/03 18:08] (current)
Line 50: Line 50:
In **ADMIN -> Seitenstruktur -> Kategorie** Haben wir die Möglichkeit in die Felder "**Seitentitel**" und "**Beschreibung der Seitenebene**"  Einträge für den Browser-Titel und die "meta descriptions" vorzunehmen. In **ADMIN -> Seitenstruktur -> Kategorie** Haben wir die Möglichkeit in die Felder "**Seitentitel**" und "**Beschreibung der Seitenebene**"  Einträge für den Browser-Titel und die "meta descriptions" vorzunehmen.
-  * Diese Einträge haben nur Gültigkeit, wenn die Artikel im Listenmodus arbeiten, also mehr als ein Artikel in der Kategorie vorhanden ist und die "**Anzahl an Top-Artikel**" entsprechend gesetzt ist. \\Diese Einträge würden die bisher vorgegebenen überschreiben, **wenn der User im FE in der Artikelübersicht steht**.  +  * <del>Diese Einträge haben nur Gültigkeit, wenn die Artikel im Listenmodus arbeiten, also mehr als ein Artikel in der Kategorie vorhanden ist und die "**Anzahl an Top-Artikel**" entsprechend gesetzt ist. \\ Diese Einträge würden die bisher vorgegebenen überschreiben, **wenn der User im FE in der Artikelübersicht steht**.</del> \\ r442: Diese Einträge werden zusätzlich in den **<head>** Bereich geschrieben (z.B. doppelte "meta description", "meta keywords"). 
-  * Oder in der Vorlage existieren keine Einträge "description" und/oder "keywords", in diesem Fall werden die Einträge aus der Kategorie eingesetzt. \\ Der "title" kann mit einem [[deutsch/technik/title-und-meta-tags#scriptseitentitel_aus_kategorie_nach_title|kleinen Script]] //(siehe ganz unten)// ersetzt werden. + 
 +  * Oder in der Vorlage existieren keine Einträge "description" und/oder "keywords", in diesem Fall werden die Einträge aus der Kategorie eingesetzt. \\ Der "title" kann mit einem [[deutsch/technik/title-und-meta-tags#scriptseitentitel_aus_kategorie_nach_title|kleinen Script]] //(siehe unten)// ersetzt werden.
\\ \\
Line 62: Line 63:
<note> <note>
-**Die meta description aus der Kategorie überschreibt eine vielleicht vorhandene meta description in der Vorlage.**+**Die meta description aus der Kategorie überschreibt nicht eine vielleicht vorhandene meta description in der Vorlage.** [[deutsch/technik/title-und-meta-tags#scriptseitentitelbeschreibungschluessel_aus_kategorie_in_den_head_bereich|Siehe Script]].
</note> </note>
Line 105: Line 106:
<note> <note>
-**Die "meta description" aus dem Artikel überschreibt nicht eine vielleicht vorhandene "meta description" in der Vorlage.**+**Die "meta description" aus dem Artikel überschreibt nicht eine vielleicht vorhandene "meta description" in der Vorlage. [[deutsch/technik/title-und-meta-tags#scriptbeschreibung_aus_artikel_in_den_head_bereich|Dazu siehe Script]].**
</note> </note>
Line 150: Line 151:
-Problem: In der Vorlage stehen in "title", "meta description" und "meta keywords" Daten, die für bestimmte Seiten (Kategorien) geändert werden müssten. +**Problem:** \\ 
 +In der Vorlage stehen in "title", "meta description" und "meta keywords" Daten, die für bestimmte Seiten (Kategorien) geändert werden müssten.
Bisher war das lediglich durch eine andere Vorlage/Seitenlayout oder durch Einträge im Artikelkopf möglich oder eben "Artikel im Listenmodus" (siehe oben). Bisher war das lediglich durch eine andere Vorlage/Seitenlayout oder durch Einträge im Artikelkopf möglich oder eben "Artikel im Listenmodus" (siehe oben).
Line 222: Line 224:
if (!empty($content["struct"][$content["cat_id"]]['acat_info'])) { // is there any content in field categorie description if (!empty($content["struct"][$content["cat_id"]]['acat_info'])) { // is there any content in field categorie description
- if (stripos($block["htmlhead"], '<meta name="description"')) { // is the meta tag description st in head+ if (stripos($block["htmlhead"], '<meta name="description"')!==false ) { // is the meta tag description st in head
preg_match('/\<meta name="description" content=(.+?)\/\>/im', $block["htmlhead"], $match); preg_match('/\<meta name="description" content=(.+?)\/\>/im', $block["htmlhead"], $match);
Line 265: Line 267:
</code> </code>
 +--- //[[flip-flop@myrealbox.com|Knut Heermann (flip-flop)]] 2010/05/04 16:12//
 +\\
 +
 +
 +\\
 +
 +===== Script: Beschreibung aus Artikel in den <head> Bereich =====
 +
 +**Problem:**
 +> Man kann ja in den Artikeln meta-descriptions anlegen, die auch wunderbar gezeigt werden. Ich möchte dies jedoch nicht für alle Artikel machen und daher eine Default-Description in der Vorlage hinterlegen. Leider werden dann auf allen Seiten, die im Artikel eine description haben, doppelte meta-descriptions gezeigt.
 +
 +Forum: [[http://forum.phpwcms.org/viewtopic.php?p=134407|default meta description]]
 +
 +
 +**Lösung:** \\
 +Description, Keywords und Title sollten eigentlich in jeder Kategorie angelegt werden. Das war wohl die ursprüngliche Idee. In diesem Fall werden diese Werte von den Einträgen im Artikel autom. überschrieben, wenn vorhanden. \\
 +Allerdings setzt fast jeder Benutzer diese Werte direkt in die Vorlage ein und das ist mit dem System nicht kontrollierbar.
 +
 +Das oben gezeigt Script überschreibt die vorhandenen Einträge in <head> mit den Werten aus der Kategorie.
 +
 +Das hilft uns jedoch auch nicht viel weiter, wenn Daten im <head> vorhanden sind und der Artikel seine Daten dort zusätzlich einträgt. \\
 +Also muss ein Script her //(in /frontend_render/..)// das ähnlich arbeitet wie das oben gezeigte Script //(greift schon wesentlich eher an, in /frontend:init/..)//.
 +
 +Blöderweise wird in $content['articles'] das DB Feld article_description der Tabelle phpwcms_article nicht mitgeführt, daher braucht es einen zusätzlichen DB Zugriff. \\
 +Die ganze Sache darf nur arbeiten wenn der Artikel in Detailmodus dargestellt wird ([[deutsch/technik/systemvariablen|$aktion[4]]] = 1). \\
 +
 +[[deutsch/technik/systemvariablen|$aktion[1]]]  beinhaltet die Artikel-ID.
 +
 +----
 +Dieses Script überschreibt vorhandene Werte die in der Vorlage stehen. \\
 +Damit das auch funktioniert müssen die Einträge für description und keywords in der Vorlage sauber aufgebaut sein was die Leerzeichen für die Notation im Bezeichner betrifft.
 +
 +Falsch:
 +<code>
 +<meta  name= "description"   content=xyz"/>
 +</code>
 +
 +Richtig:
 +<code>
 +<meta name="description" content=xyz" />
 +</code>
 +----
 +\\
 +
 +
 +
 +
 +**Datei:** template/inc_script/frontend_render/article_entries_into_head.php
 +
 +<code php |h article_entries_into_head.php |h>
 +<?php
 +/*
 + **************************************************************************
 + * DESCRIPTION aus Artikel aus dem Feld Beschreibung: uebernehmen in
 + * den <head> Bereich wenn das Feld "Beschreibung:" nicht leer ist
 + * Der Vorhandener TAG "description" in <head> wird geloescht
 + * Das Script arbeitet im Artikel-Detailmodus
 + * Datei: template/inc_script/frontend_render/article_entries_into_head.php
 + *
 + * 25.02.2012 KH: heermann@planmatrix.de
 + * ************************************************************************/
 + 
 +// ------------------------------------------------------------------------
 +// obligate check for phpwcms constants
 +if (!defined('PHPWCMS_ROOT')) {
 +   die("You Cannot Access This Script Directly, Have a Nice Day."); }
 +// ------------------------------------------------------------------------
 +
 +
 +// Nur wenn in Artikel-Listenansicht und zu ersetzender String vorhanden
 +if ($aktion[4] == 1)  { //  Modus article detail (1) sonst article list (0)
 +
 + if (stripos($block["htmlhead"], '<meta name="description"')!==false ) { // is the meta tag description in head
 +
 + // Beschreibung (description) in diesem Artikel vorhanden?
 + $article_sql  = "SELECT article_description FROM ".DB_PREPEND."phpwcms_article ";
 +  $article_sql .= "WHERE article_aktiv =1 AND article_id = ".$aktion[1];
 +
 + $result = _dbQuery($article_sql);
 +
 + // Artikelbeschreibung in der DB vorhanden?
 + if (isset($result[0]['article_description']) AND !empty($result[0]['article_description'])) {
 +
 + // Vorhandene description in <head> loeschen
 + $block["htmlhead"] = preg_replace('/\<meta name="description"\s*content=.+?\/\>/im', '',$block["htmlhead"]);
 + }
 + }
 +
 +// Beschreibung aus Artikel wird autom. eingetragen, bzw. steht nicht in $block["htmlhead"]
 +
 +}
 +
 +?>
 +</code>
\\ \\
- --- //[[flip-flop@myrealbox.com|Knut Heermann (flip-flop)]] 2010/05/04 16:12//+ --- //[[flip-flop@myrealbox.com|Knut Heermann (flip-flop)]] 2012/02/25 01:30//
deutsch/technik/title-und-meta-tags.1321611841.txt.gz · Last modified: 2018/06/03 18:06 (external edit)
www.planmatrix.de www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0