Attribute aus Oxid per marmcsvexporter in eine CSV

so weit so klar - nur in welchem Datenbankfeld ist die Produktkategorie hinterlegt (bzw. wo wird diese dem Produkt zugewiesen)?

$query=“select oxcatnid
from oxobject2category
where oxobjectid = '”.$oxid.“’
order by oxtime
limit 1;”;

aus getMainCategoryId() (sortiert nach Zeit und auf 1 limitiert, um nur die Hauptkategorie zu erhalten). Daraus geht denn die SEO-Url hervor.

  • ist denn in irgendeinem SQL-Datenbank-Feld die Google-Produktkategorie hinterlegt (bzw. wo wird diese dem Produkt zugewiesen)?
  • z.B. erwartet das Google-Merchant-Center eine Kategorie wie z.B. “Elektronik > Netzwerktechnik > Hubs & Schalter”

  • woher holt der marmGoogleExporter.php die Daten fĂŒr das Feld “Google Produktkategorie/google_categoryPath”? Bei mir bleibt nach AusfĂŒhrung der PHP-Datei diese Spalte leider leer


Wie oben geschrieben, kenne ich das Modul eigentlich nicht. OK, jetzt schon :wink:
Die Klasse “marmGoogleExporter” hat eine eigene Methode “getSeoUrl” und hĂ€ngt damit fĂŒr Google Parameter an.
Ausgegeben wird es in der Parent:

$sLink = $this->sShopURL.$this->_config[‘productLinkPrefix’].$oxid;
return $sLink;

Dann lass Dir den o.g. Query von der Kategorie beim Export ausgeben

echo $query;

, um die Abfrage manuell in phpMyAdmin o.À. testen zu können.

welche SQL-Befehle soll ich denn konkret im phpMyAdmin eingeben?

public function getMainCategoryId($oxid)
{
if (isset($this->tempMainCategoryId[$oxid]))
{
return $this->tempMainCategoryId[$oxid];
}

        $query="select oxcatnid
                from oxobject2category
                where oxobjectid = '".$oxid."'
                order by oxtime
                limit 1;";
        echo $query;
        $rs = mysql_query($query);
        if ($rs)
        {
            while($row = mysql_fetch_array($rs))
            {
                // caching query
                $this->tempMainCategoryId[$oxid] = $row['oxcatnid'];
                return $row['oxcatnid'];
            }	
        }
        // caching query
        $this->tempMainCategoryId[$oxid] = '';
        return '';
    }
  • Die Hauptkategorie wird fĂŒr Google exportiert und Informationen angehangen.

  • Ob die noch up-to-date sind, weiß ich nicht.

das kommt im phpMyAdmin zurĂŒck:
Statische Analyse:

13 Fehler wurden wÀhrend der Analyse gefunden.

  1. Unerwartetes Zeichen. (near “$” at position 34)
  2. Unerwartetes Zeichen. (near “{” at position 42)
  3. Unerwartetes Zeichen. (near “$” at position 55)
  4. Unerwartetes Zeichen. (near “[” at position 80)
  5. Unerwartetes Zeichen. (near “$” at position 81)
  6. Unerwartetes Zeichen. (near “]” at position 86)
  7. Unerwartetes Zeichen. (near “{” at position 91)
  8. Unerwartetes Zeichen. (near “$” at position 101)
  9. Unerwartetes Zeichen. (near “[” at position 126)
  10. Unerwartetes Zeichen. (near “$” at position 127)
  11. Unerwartetes Zeichen. (near “]” at position 132)
  12. Unerwarteter Statement-Anfang. (near “public” at position 0)
  13. Unerkannte Statement-Typ. (near “function” at position 7)

SQL-Befehl:

public function getMainCategoryId($oxid) { if (isset($this->tempMainCategoryId[$oxid])) { return $this->tempMainCategoryId[$oxid]

MySQL meldet: Dokumentation

#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei 'public function getMainCategoryId($oxid){if (isset($this->tempMainCategoryId' in Zeile 1

Ich hoffe, Du hast das obige nicht ganz kopiert und nur echo $query; ergÀnzt. Alles andere ist tödlich, weil beim Kopieren Zeichen verÀndert wieder ausgegeben werden. Sonst poste doch mal die Abfrage, die ausgegeben wird.

doch ich hatte alles in phpMyAdmin eingegeben und dann nur die bereits geposteten Fehlermeldungen bekommen

welche SQL-Befehle soll ich denn konkret im phpMyAdmin eingeben?

Ooooh, ok :wink:
Also Du kannst echo $query; unterhalb von

$query=“select oxcatnid
from oxobject2category
where oxobjectid = '”.$oxid.“’
order by oxtime
limit 1;”;

eintragen. Dies bewirkt die Ausgabe der Abfrage, wenn das Skript ausgefĂŒhrt wird. Diese Abfrage kannst Du dann kopieren und in phpMyAdmin einfĂŒgen. Wenn Du nicht klar kommst und ich Zeit habe, werde ich das Modul mal installieren. Welche Shopversion nutzt Du?

Ich habe nun in phpMyAdmin eingegeben:
$query=“select oxcatnid
from oxobject2category
where oxobjectid = '”.$oxid."’
order by oxtime
limit 1;";
echo $query;

eine Ausgabe auf der Konsole erfolgt danach nicht

Meine Shopversion ist 6.1.4 / PHP 7.1

das Script versucht das Feld JXGOOGLETAXONOMY aus der Tabelle oxcategories zu lesen:
-> $query = “SELECT OXID, JXGOOGLETAXONOMY FROM oxcategories”;
Wenn dieses Feld nicht existiert oder leer ist wird auch in der csv-Datei nichts ausgegeben

Stimmt, wie oben bereits erwÀhnt: Attribute aus Oxid per marmcsvexporter in eine CSV - #40 by rubbercut
Das fehlt natĂŒrlich dann. Jedenfalls kann ich dazu nichts finden.

scheinbar wird um die Datenbank zu fĂŒllen ein weiters Modul benötigt:

ist aber fĂŒr Ă€ltere Versionen :frowning:

Das macht Sinn. Naja, vielleicht hat jemand Zeit.

Vielleicht 

Aber man kann das Feld ja auch zu Fuss ĂŒber phpMyAdmin fĂŒllen da dies ja mehr oder weniger eine Einmal-Aktion ist
( zumindest habe ich es mal so vor Jahren gemacht - mittlerweile ist es in unserem WaWi eingebaut )

Sinn macht das mit job963/jxTaxo - allerdings lÀuft das nicht mit meiner Shopversion (6.1.4 / PHP 7.1).
Ich habe also nun das Datenbank-Feld JXGOOGLETAXONOMY in oxcategories erstmal von Hand befĂŒllt


Danke allerseits!

OK, wenn es damit lÀuft, wÀre das Folgende die Schlussinfo: Feld anlegen und Werte (Google-Produktkategorie [google_product_category] - Google Merchant Center-Hilfe) manuell eintragen:

ALTER TABLE oxcategories ADD COLUMN JXGOOGLETAXONOMY VARCHAR(255) NULL;

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.