xt:Commerce – Herstellerinformationen erweitern

Nachdem wir unsere Content Informationen um SEO-wichtige Aspekte erweitert haben, kümmern wir uns heute um die Erweiterung der Hersteller Informationen, denn auch hier fehlen wichtige Sachen wie Meta-Tags, Meta-Descripton und Meta-Title. Der Ablauf wird nahezu gleich sein.

- Wir verändern die Eingabe der Daten bzw. der Eingabemaske
- Wir modifzieren die Ausgabe von xt:Commerce

Ihr fragt Euch vielleicht, wieso wir die Datenbank nicht anpassen. Der Clou bei xt:Commerce ist, die Datenbankfelder sind bereits angelegt in der Tabelle "manufacturers_info". Wir kümmern uns also nur noch um die Daten.

Da wir wieder jede Menge Änderungen durchführen werden, empfiehlt es sich wie sonst auch unbedingt ein Backup seiner Daten und seiner xt:Commerce Datenbank zu machen.


Problemstellung

Wie wir bei der "normalen" Einfüge-Prozedur von xt:Commerce sehen, stellt man auf den ersten Blick fest - da fehlt was !Es fehlen wie gesagt Meta-Tags, eine Meta-Description und ein Title-Tag, damit wenn eine Suchmaschine auf eine Herstellerseite geht, nicht noch einmal denselben Titel lesen muss. Wie bereits erwähnt wird an der Datenbank nichts mehr geändert, von daher können wir ohne größere Umwege uns gleich dem PHP-Code widmen.

Änderungen an der manufacturers.php

Wir brauchen zunächst aus dem xt:Commerce-Ordner die Datei "/admin/manufacturers.php".  Diese Datei ist für die Eingabe und die Verwaltung der Hersteller in xt:Commerce verantwortlich. Ich beschreibe die Änderungen wieder strikt von oben nach unten, damit wir nicht immer hin und her springen müssen.

Wir fügen ca. in Zeile 25 folgenden Part ein: (hier werden die POST-Variablen in lokale Variablen übergeben):

/* Anfang seo-geek.de Modifizierung */
$manufacturers_desc = xtc_db_prepare_input($_POST['manufacturers_meta_description']);
$manufacturers_title = xtc_db_prepare_input($_POST['manufacturers_meta_title']);
$manufacturers_keywords = xtc_db_prepare_input($_POST['manufacturers_meta_keywords']);
$neu = array(
'manufacturers_meta_title'    => xtc_db_prepare_input($manufacturers_title),
'manufacturers_meta_description'    => xtc_db_prepare_input($manufacturers_desc),
'manufacturers_meta_keywords'    => xtc_db_prepare_input($manufacturers_keywords)
);
/* Ende seo-geek.de Modifikation */

In diesen drei Zeilen über geben wir die mit dem Formular übermittelten Daten an lokale Variablen. Zeitgleich entfernen wir mit der xtc_db_prepare_input - Funktion auch alle "bösen" Sachen (Thema Sicherheit). Hinterher erstellen wir aus unseren Daten gleich ein neues Array welches später nur noch an die Datenbankanweisung hizugefügt wird.

Um es nun in die xtc_db_perform hinzuzufügen suchen wir uns besagte Zeilen heraus.
So finden wir z. B. in Richtung Zeile 78 die Anweisung

$sql_data_array = xtc_array_merge($sql_data_array, $insert_sql_data);
// und erweitern diese mit unserem neuen Array:
$sql_data_array = xtc_array_merge($sql_data_array, $insert_sql_data, $neu);

Die ganzen Arrays werden zu einem zusammengefast und hinterher in die Datenbank geschrieben. Damit die Daten auch beim Updaten eines Datensatzes übernommen werden, müssen wir eine Zeile hinzufügen. Dazu suchen wir uns folgende Zeile und modifizieren sie :

} elseif ($_GET['action'] == 'save') {
$sql_data_array = xtc_array_merge($sql_data_array, $neu);   // Das hier kommt neu dazu

Anlegen der zusätzlichen Eingabefelder

Wie wir aus unserem Code sehen, fehlen uns in der Eingabemaske 3 Eingabefelder.

  • Meta-Titel
  • Meta-Description
  • Meta-Tags

Wer sich den Code genau ansieht wird feststellen, dass die Programmierer von xt:Commerce für das Editieren und das Neue Anlegen von Herstellern verschiedene Formulare aufrufen. Über Sinn und Unsinn lässt sich hier natürlich streiten. Somit müssen wir für beide Formulare unsere Felder neu anlegen.
Wo fügen wir Sie nun ein?  Ich für meinen Teil habe Sie nach dem Hersteller-Bild angelegt. Wo man es selber anlegt bleibt jedem selber überlassen, da rede ich keinem rein ;)

Wir suchen uns also die Zeile raus, in der das Feld für das Herstellerbild generiert wird, danach fügen wir folgendes ein (für den Bereich Case 'new', ca. Zeile 220:

/* Anfang seo-geek.de Modifikation */
$contents[] = array('text' => '<br />' . 'Hersteller-Meta-Title ' . '<br />' . xtc_draw_input_field('manufacturers_meta_title'));
$contents[] = array('text' => '<br />' . 'Hersteller-Meta-Descripton ' . '<br />' . xtc_draw_input_field('manufacturers_meta_description'));
$contents[] = array('text' => '<br />' . 'Hersteller-Meta-Tags' . ' <br />' . xtc_draw_input_field('manufacturers_meta_keywords'));
/* Ende seo-geek.de Modifikation */

Was genau passiert hier? Wir übergeben dem Output String 3 zusätzliche Zeilen. In diesem Fall 3 Eingabezeilen. Man hätte es auch ohne die ganzen Punkte schreiben können, aber wer möchte kann an diesen Stellen Konstanten einsetzen. Wir rufen die xt:Commerce Funktion xtc_draw_input_field auf, welche als Argument einen Bezeichner erwartet. In diesem Fall wählen wir den Bezeichner so wie wir ihn oben verwendet haben (für die $_POST-Variable).

Dasselbe benötigen wir jetzt noch im Bereich des Editierens. Dieses finden wir ca. bei Zeile 240. Im Grunde ist es dasselbe, nur dass wir der Funktion noch Daten mit zugeben.

/* Anfang seo-geek.de Modifikation */
$man_info = "SELECT * FROM manufacturers_info WHERE manufacturers_id = '".$mInfo->manufacturers_id."' LIMIT 1";
$manufacturers_info = mysql_fetch_array(mysql_query($man_info));
$contents[] = array('text' => '<br />' . 'Hersteller-Meta-Title ' . '<br />' . xtc_draw_input_field('manufacturers_meta_title', $manufacturers_info['manufacturers_meta_title']));
$contents[] = array('text' => '<br />' . 'Hersteller-Meta-Descripton ' . '<br />' . xtc_draw_input_field('manufacturers_meta_description',$manufacturers_info['manufacturers_meta_description']));
$contents[] = array('text' => '<br />' . 'Hersteller-Meta-Tags' . ' <br />' . xtc_draw_input_field('manufacturers_meta_keywords', $manufacturers_info['manufacturers_meta_keywords']));
/* Ende seo-geek.de Modifikation */

Wenn wir jetzt das Backend unseres xt:Commerce Shops ansehen können wir direkt unsere Modifikationen einsehen. Nachdem wir es getestet haben, kümmern wir uns jetzt um die Ausgabe.

Die metatags.php von xt:Commerce anpassen

Über den etwas hakeligen Aufbau von xt:Commerce habe ich mich ja schonmal ausgelassen. Jetzt gehen wir noch eine Stufe weiter, denn wir müssen ein komplett neues If-Statement einbauen. Was wissen wir bisher? Wenn wir in der Dropdown Box einen Hersteller auswählen, landen wir auf der index.php mit einem Paramter manufacturers_id. Diesen werden wir für das Statement hernehmen und daraufhin abfragen.  Wo packen wir das ganze jetzt aber an? Wir müssen uns eine geeignete Stelle suchen, in der wir keine andere Schleife unterbrechen. Klingt alles kompliziert, aber geht einfacher als man denkt. Empfehlenswert ist es nach der Schleife in der die coID (für content) abgefragt wird. Am Ende dieser Schleife finden wir folgende Konstellation:

<title><?php echo contents_meta['content_heading']. ' - '.TITLE; ?> </title>
<?php
}
//Nach dieser Schleife fügen wir uns jetzt unseren Code für die Hersteller ein:
// Anfang seo-geek.de Modifikation
elseif($_GET['manufacturers_id'])
{
$manufacturers_meta_query = xtDBquery("SELECT manufacturers_meta_title, manufacturers_meta_description, manufacturers_meta_keywords FROM
" . TABLE_MANUFACTURERS_INFO. "
WHERE
manufacturers_id ='". $_GET['manufacturers_id'] ."' AND
languages_id='" . $_SESSION['languages_id'] . "'");
$manufacturers_data = xtc_db_fetch_array($manufacturers_meta_query,true);
?>
<meta name="description" content="<?php echo $manufacturers_data['manufacturers_meta_description']; ?>" />
<meta name="keywords" content="<?php echo $manufacturers_data['manufacturers_meta_keywords'];?>" />
<meta name="page-topic" content="<?php echo META_TOPIC; ?>" />
<title><?php echo $manufacturers_data['manufacturers_meta_title'];?></title>
<?
}
// Ende seo-geek.de Modifikation

Am Ziel angekommen

Wenn wir nun hergehen und eine Herstellerseite aufrufen, können wir sehen dass unsere Modifikation wirklich etwas gebracht hat. Anstatt den ewig gleichen gleichen Meta-Informationen vom xt:Commerce-Shop haben wir jetzt wieder ein paar Seiten indivuelle Meta-Informationen verpasst. Ein großer Schritt auf unserem steinigem SEO-Weg.
Schreibt mir Eure Erfahrungen und Wünsche gerne in die Kommentare. Wer gerne noch das ganze in Bildern anschauen möchte um einige Punkte besser zu verstehen kann sich die nachfolgende Bildergalerie anschauen.

Lade Dir diesen Post als pdf-Datei herunter: xt:Commerce Hersteller Informationen erweitern (482)

Alle Posts der Woche 28 / 2009 anschauen

Fandest Du den Beitrag interessant?

Wenn Du den Beitrag interessant fandest,
dann abonniere doch unseren seo-geek.de RSS-Feed
Alternativ kannst Du mich auch unter Twitter verfolgen

Schicke eine Nachricht an Twitter

Nachricht an Twitter schicken

Sichere Dir den Link in Deinem bevorzugtem Netzwerk!

Share/Bookmark

4 Kommentare

  1. Marcus sagt:

    Hallo,
    bei mir ist das gleiche Problem.
    Könntest Du den Code für die Datenbank posten.
    Vielen Dank
    Gruß
    Marcus

  2. SEO-Hamburg sagt:

    Hallo Rolf,

    1054 – Unknown column ‘manufacturers_meta_title’ in ‘field list’

    update manufacturers set manufacturers_name = ‘BlaBla’, manufacturers_meta_title = ‘BlaBla’, manufacturers_meta_description = ‘BlaBla’, manufacturers_meta_keywords = ‘BlaBla’, last_modified = now() where manufacturers_id = ‘30′

    Du hast die versucht, die Daten in der Tabelle manufacturers zu speichern. Nimm mal die Tabelle manufacturers_info, dann sollte es eigentlich klappen ;-)

  3. Rolf sagt:

    Hi,

    vielen Dank für den tollen Artikel, ich bekomme leider folgende Fehlermeldung:

    1054 – Unknown column ‘manufacturers_meta_title’ in ‘field list’

    update manufacturers set manufacturers_name = ‘BlaBla’, manufacturers_meta_title = ‘BlaBla’, manufacturers_meta_description = ‘BlaBla’, manufacturers_meta_keywords = ‘BlaBla’, last_modified = now() where manufacturers_id = ’30′

    [XT SQL Error]

    Scheint die column nicht zu finden:

    1054 – Unknown column ‘manufacturers_meta_title’ in ‘field list’

    Bin leider nicht so firm in den Sachen, kannst Du mir bitte einen Tipp geben?

    Danke schon mal!
    Rolf

    • daniel sagt:

      Hallo Rolf.

      Danke für einen Kommentar.
      Die Standardinstallation von xt:Commerce sollte diese Felder schon haben.
      Wenn nicht kannst Du diese z. B. mit phpmyadmin hinzufügen. Im phpmyadmin in die jweilige Tabelle gehen und 2 Felder hinzufügen wie oben eben manufacturers_meta_description, manufacturers_meta_title und manufactures_meta_keywords als varchar(255).
      Ich habe leider gerade keine Datenbank da, sonst würde ich Dir den genauen Code schicken. Wenn ich heute Abend dazukomme werde ich den Code posten.

      Grüße

      Daniel

Beitrag kommentieren:

Der Kommentar wird nach Einsicht des Administrators freigeschalten.

Please leave these two fields as-is: