Jump to content

Update SQL für die Keywords der Produkte - nix für Newbies


Luca01

Recommended Posts

Hallo Foris,

heute habe ich quasi den Tag mit der Kreation eines sql verbracht. Aufgrund der Frage nach den Keywords der Produkte

hier -> Link habe ich mich mit dem Thema etwas näher beschäftigt. Die Prestashop-Leute haben im BO im Bereich des SEO der Produkte die Keywords-Eingabe ausgeblendet. Die Begründung ist, dass man für eine gutes SEO keine Keywords mehr braucht. Die Diskussion ist hier -> Link Man findet dort auch den Code um die Keywords wieder einzublenden.

Die Prestashop Leute haben leider nur quick-and-dirty gearbeitet und die Eingabe der Keywords in BO für die Produkte einfach ausgeblendet. :angry: Mit der Folge, das beim Kopieren und auch beim CSV Import Keywords in die Datenbank eingetragen werden, aber nicht mehr im BO bearbeitet werden können. Bei mir hatte das Datenchaos zur Folge, weil ich Produkte für die Integration neuer Produkte über die Kopierfunktion kopiert habe. Bei diesen Produkten waren die alten Keywords hinterlegt. Nun möchte ich auf die Keywords nicht ohne weiteres verzichten. Darum habe ich an einem sql gebastelt, der sich Text aus unterschiedlichen Bereichen der Datenbank zusammen sucht und daraus individuelle Produkt-Keywords erschafft. Das Problem bei der Durchführung war, das es mysql nicht zulässt, dass man ein Update für eine Tabelle durchführt für die man gleichzeitig ein subselect laufen läßt.

Die Lösung brachte diese Quelle -> Link

Mein sql sieht jetzt so aus:

UPDATE ps_product_lang as ch1 SET ch1.meta_keywords =(SELECT wort FROM (SELECT a.id_product as id_product, CONCAT (GROUP_CONCAT(" ", c.name), ", ", b.name,", ", (CASE WHEN e.meta_title IS NULL THEN 'noname' ELSE e.meta_title END), ", ", f.meta_keywords, ", ", 'Angebot', ", ", 'Onlineshop') as wort    FROM ps_product_tag as a    LEFT OUTER JOIN ps_product_lang as b ON a.id_product = b.id_product    LEFT OUTER JOIN ps_tag as c ON a.id_tag = c.id_tag    LEFT OUTER JOIN ps_product as d ON b.id_product = d.id_product    LEFT OUTER JOIN ps_manufacturer_lang as e ON d.id_manufacturer = e.id_manufacturer    LEFT OUTER JOIN ps_category_lang as f ON d.id_category_default = f.id_category    GROUP BY a.id_product) as ch2    WHERE ch2.id_product = ch1.id_product)
Weil ich hoffe das es einem Fori etwas Arbeit erspart, poste ich den sql mal hier. Bitte nicht einfach über die Datenbank laufen lassen, sondern individuell anpassen und testen. ;) Auf jeden Fall finde ich die Subselect-Struktur sehr interessant (Danke an Thomas Wiedmann).

Viele Grüße

Edited by Luca01 (see edit history)
  • Like 1
Link to comment
Share on other sites

Du kannst das Feld aber auch schnell wieder hervorzaubern, weil es nur auf "hide" gesetzt wurde:

 

<admin-Verzeichnis>/themes/default/template/controllers/products/seo.tpl, Zeile 64:

<div class="form-group hide">

ersetzen durch:

<div class="form-group">

Den Tipp habe ich hier gefunden: https://www.prestashop.com/forums/topic/340124-keywords-field-for-products/?do=findComment&comment=1984250

Edited by Wuschel (see edit history)
Link to comment
Share on other sites

Hallo Luca,

 

tut mir ja echt leid, aber ich kann vor diesem SQL-Statement nur warnen.

 

In einem Testshop mit ca. 8.000 Produkten hat mir dein SQL-Statement vorhandene Keywords entweder komplett entfernt oder durch Unsinn (z.B. anderthalb Dutzend Wiederholungen des selben Begriffs, schön durch Komma separiert) ersetzt. War jetzt keine große Katastrophe, denn ich kann ja das Backup wieder einspielen, aber für Live-Shop ist das sicher nicht zu empfehlen, sondern wäre der reinste Albtraum.

 

Ach so, dass war jetzt unter 1.5.6.2, aber unter 1.6.0.11 mit einer Handvoll Produkte lief es auch nicht besser. Woran es genau liegt, weiß ich leider auch nicht.

 

Gruß

Wuschel

Edited by Wuschel (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...