Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed

    crahlfs

    • Mitglied
    • Beiträge: 130
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #240 am: 26. September 2010, 08:22:38
    Ich möchte mich dem anschließen - von 10.000 Artikeln wurden nur 1500 erkannt und aktualisiert. Wenn ich den manuellen Import vornehme, dann lädt er alle Artikel hoch!

    @ all, die es schon lange nutzen: Funktioniert es bei Euch noch? Dann müsste es ja an der Version und nicht an google liegen!
    Gruß
    Christoph

    tintifax

    • Neu im Forum
    • Beiträge: 48
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #241 am: 21. Oktober 2010, 13:20:11
    Grüß euch!
    Bin dabei erstmalig mit modified eCommerce Shopsoftware zu hantieren.

    Habe das aktuellste google_rss_feed.php installiert und nun das Problem, dass ich keine Versandkosten im RSS bekomme.

    Ich verwende nur das "Versandkosten nach Zonen" Modul. Habe dort 7 Zonen definiert, wobei die ersten beiden aus nur einem Land bestehen.

    Mir liefert die Funktion shipping.php keinen Wert.
    Hat wer eine Idee?

    Danke!
    lg tinti

    ray_man

    • Fördermitglied
    • Beiträge: 219
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #242 am: 12. November 2010, 19:55:20
    Hallo,

    ich arbeite mit dem automatischen Google RSS Feed. Funktioniert soweit alles.

    Bis auf 3 Artikel wurden alle übernommen.

    Fehlermeldung von Google:
    Zitat
    Codierungsproblem in Attribut: beschreibung (3 Fehler)

    Einige Zeichen in Ihren Artikeln sind anscheinend ungültig. Überprüfen Sie, ob alle Zeichen in Ihrem Feed für die ausgewählte Codierung gültig sind.
    Leider kann ich die Fehler sind finden und die Hilfestellung von Google, diese zu finden sind nicht da.

    Gibt es evtl. ein Analyseprogramm, was den Fehler und die Stelle identifiziert?
    Gibt es bekannt Zeichen oder Fehlerquellen, die ich checken kann?

    ich habe im Beschreibungstext eine Textpassage mit "(1925)" gefunden. Kann es an der Klammer liegen?

    Danke.

    ray_man

    • Fördermitglied
    • Beiträge: 219
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #243 am: 14. November 2010, 16:00:02
    Hi,

    das Problem hat sich irgendwie von selbst gelöst. Nix geändert und Google meckert auf einmal nicht mehr rum.

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.868
    • Geschlecht:
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #244 am: 15. November 2010, 09:50:51
    so, jetzt mal Butter bei die Fische  :D

    ich hab das auch testweise in einem unserer (noch auf xtc laufendem) Nebenshops eingebaut und er bricht nach ca. 30 von 80 Produkten ab

    dieser Eintrag funktioniert noch:

    Code: XML  [Auswählen]
            <item>
                    <title>Untersetzer S - side by side</title>
                    <link>http://www.sidebyside-shop.com/Kueche/Untersetzer-S-side-by-side::58.html?refID=GOOGLE_RSS_FEED_REFID</link>
                    <g:beschreibung><![CDATA[Von klein bis ganz gro&szlig; - die Untersetzer von side by side sind  ausziehbar und bieten in der L-Version bis zu vier T&ouml;pfen Platz.  Erh&auml;ltlich in zwei Gr&ouml;&szlig;en: S klein und L gro&szlig;!<br /><br />Der Hersteller  Side by Side ist ein Gemeinschaftsprojekt mehrerer Werkst&auml;tten f&uuml;r  behinderte Menschen. Zusammen mit jungen Designern werden neue  Produktlinien entwickelt. Die Idee: N&uuml;tzliche Gebrauchsgegenst&auml;nde und  modernes Design zu verbinden. Der Anspruch: Qualit&auml;t, Design und  Funktion m&uuml;ssen stimmen.<br /><br />Hersteller: side by side<br />       Design: Sabine Meyer<br />           Material: Nussbaum ge&ouml;lt<br />                   Ma&szlig;e: <span style="font-weight: bold;"></span>L 21 x H 1,5 x B 4 cm (offen bis 30 cm)<br />   Lieferumfang: 1 Untersetzer S]]></g:beschreibung>
                    <g:id>58</g:id>
                    <g:gewicht>1.00 kg</g:gewicht>
                    <g:marke>side by side</g:marke>
                    <g:bild_url>http://www.sidebyside-shop.com/images/product_images/thumbnail_images/58_0.jpg</g:bild_url>
                    <g:mpn>40047-S</g:mpn>
                    <g:preis> 14,90 EUR</g:preis>
                    <g:menge>15</g:menge>
                            <g:zustand>Neu</g:zustand>
                    <g:kompatibel_mit>
                            <g:titel>Feuerholz Räucherhaus - side by side</g:titel>
                            <g:mpn>40045</g:mpn>
                    </g:kompatibel_mit>
                    <g:kompatibel_mit>
                            <g:titel>Kresseschale smart n green Schwein - side by side</g:titel>
                            <g:mpn></g:mpn>
                    </g:kompatibel_mit>
                    <g:kompatibel_mit>
                            <g:titel>Tablett UP - side by side</g:titel>
                            <g:mpn>40008</g:mpn>
                    </g:kompatibel_mit>
                    <g:kompatibel_mit>
                            <g:titel>Untersetzer L - side by side</g:titel>
                            <g:mpn>40047-L</g:mpn>
                    </g:kompatibel_mit>
                    <g:versand>
                            <g:land>DE</g:land>
                            <g:region></g:region>
                            <g:service>Versand</g:service>
                            <g:preis>3.9</g:preis>
                    </g:versand>
            </item>
    und dieser hier funktioniert NICHT mehr:

    Code: XML  [Auswählen]
            <item>
                    <title>KippKochl&ouml;ffel - side by side</title>
                    <link>http://www.sidebyside-shop.com/Kueche/KippKochloeffel-side-by-side::57.html?refID=GOOGLE_RSS_FEED_REFID</link>
                    <g:beschreibung><![CDATA[KippKochl&ouml;ffel - side by side<br /><br />Vorbei mit den schmutzigen  Arbeitsfl&auml;chen! Die clevere L&ouml;sung: Der KippKochl&ouml;ffel von side by side  aus Kirschholz hat hinten ein Gewicht und kippt immer nach hinten - die  Arbeitsfl&auml;che bleibt immer sauber. Dank des besonderen Edelstahls der  Abschlusskappe kann man den KippKochl&ouml;ffel auch an Magnetleisten  aufbewahren.<br /><br />Der Hersteller Side by Side ist ein  Gemeinschaftsprojekt mehrerer Werkst&auml;tten f&uuml;r behinderte Menschen.  Zusammen mit jungen Designern werden neue Produktlinien entwickelt. Die  Idee: N&uuml;tzliche Gebrauchsgegenst&auml;nde und modernes Design zu verbinden.  Der Anspruch: Qualit&auml;t, Design und Funktion m&uuml;ssen stimmen.<br /><br />Hersteller: side by side<br />    Design: Matthias Lehr<br />    Material: Kirschholz ge&ouml;lt, Silikonring, Edelstahl<br />    Ma&szlig;e: H 35 x B 5 x H 2,5 cm<br />    Lieferumfang: 1 KippKochl&ouml;ffel]]></g:beschreibung>
                    <g:id>57</g:id>
                    <g:gewicht>1.00 kg</g:gewicht>
                    <g:marke>side by side</g:marke>
                    <g:bild_url>http://www.sidebyside-shop.com/images/product_images/thumbnail_images/57_0.jpg</g:bild_url>
                    <g:mpn>40046</g:mpn>
                    <g:preis> 12,90 EUR</g:preis>
                    <g:menge>15</g:menge>
                            <g:zustand>Neu</g:zustand>
                    <g:kompatibel_mit>
                            <g:titel>Buchständer - side by side</g:titel>
                            <g:mpn>40035</g:mpn>
                    </g:kompatibel_mit>
                    <g:kompatibel_mit>
                            <g:titel>Antipastizange - side by side</g:titel>
                            <g:mpn>40039</g:mpn>
                    </g:kompatibel_mit>
                    <g:kompatibel_mit>
                            <g:titel>Untersetzer L - side by side</g:titel>
                            <g:mpn>40047-L</g:mpn>
                    </g:kompatibel_mit>
                    <g:kompatibel_mit>
                            <g:titel>Sparschwein Fritz - side by side</g:titel>
                            <g:mpn></g:mpn>
                    </g:kompatibel_mit>
                    <g:kompatibel_mit>
                            <g:titel>Serviettenringe names & notes 2er-Set - side by side</g:titel>
                            <g:mpn></g:mpn>
                    </g:kompatibel_mit>
                    <g:versand>
                            <g:land>DE</g:land>
                            <g:region></g:region>
                            <g:service>Versand</g:service>
                            <g:preis>3.9</g:preis>
                    </g:versand>
            </item>
    Kann man vielleicht an diesem Beispiel rausfinden, warum der Export abbricht?!

    Grüße
    Voodoo

    PS: der Fehler kommt auch in unserem Hauptshop...

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.868
    • Geschlecht:
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #245 am: 16. November 2010, 13:47:55
    so, also mal weitergetestet:
    deaktiviere ich das Problemprodukt läuft der Feed weiter und bleibt dann hier bei diesem Artikel wieder hängen:

    Code: XML  [Auswählen]
            <item>
                    <title>Antipastizange - side by side</title>

                    <link>http://www.sidebyside-shop.com/Kueche/Antipastizange-side-by-side::15.html?refID=GOOGLE_RSS_FEED_REFID</link>
                    <g:beschreibung><![CDATA[Schöner Kochen mit der Antipastizange von side by side! Das ideale Geschenk für Kochprofis und Einsteiger.<br /><br />Der Hersteller Side by Side ist ein Gemeinschaftsprojekt mehrerer Werkstätten für behinderte Menschen. Zusammen mit jungen Designern werden neue Produktlinien entwickelt. Die Idee: Nützliche Gebrauchsgegenstände und modernes Design zu verbinden. Der Anspruch: Qualität, Design und Funktion müssen stimmen. <br /><br />Hersteller: side by side<br />    Design: Christoph Matthias & Sabine Meyer<br />       Material: Nussbaum,geölt<br />   Maße: L 26 x B 2 x H 5 cm<br />            Lieferumfang: 1 Antipastizange]]></g:beschreibung>
                    <g:id>15</g:id>
                    <g:gewicht>1.00 kg</g:gewicht>
                    <g:marke>side by side</g:marke>
                    <g:bild_url>http://www.sidebyside-shop.com/images/product_images/thumbnail_images/15_0.jpg</g:bild_url>

                    <g:mpn>40039</g:mpn>
                    <g:preis> 14,50 EUR</g:preis>
                    <g:menge>15</g:menge>
                    <g:zustand>Neu</g:zustand>
                    <g:kompatibel_mit>
                            <g:titel>Buchständer - side by side</g:titel>

                            <g:mpn>40035</g:mpn>
                    </g:kompatibel_mit>
                    <g:kompatibel_mit>
                            <g:titel>Serviettenringe names & notes 2er-Set - side by side</g:titel>
                            <g:mpn></g:mpn>
                    </g:kompatibel_mit>
                    <g:versand>

                            <g:land>DE</g:land>
                            <g:region></g:region>
                            <g:service>Versand</g:service>
                            <g:preis>3.9</g:preis>
                    </g:versand>
            </item>
     
    dieser hier DAVOR funktioniert aber noch:

    Code: XML  [Auswählen]
            <item>
                    <title>Kochzange - side by side</title>
                    <link>http://www.sidebyside-shop.com/Kueche/Kochzange-side-by-side::16.html?refID=GOOGLE_RSS_FEED_REFID</link>
                    <g:beschreibung><![CDATA[<!-- more images -->                                                                                                                                                                                                                                                                                                                     <!-- more images eof -->Schöner Kochen mit der Kochzange von side by side! Das ideale Geschenk für Kochprofis und Einsteiger.<br />
    <div class="productlink"><br />Der  Hersteller Side by Side ist ein Gemeinschaftsprojekt mehrerer  Werkstätten für behinderte Menschen. Zusammen mit jungen Designern  werden neue Produktlinien entwickelt. Die Idee: Nützliche  Gebrauchsgegenstände und modernes Design zu verbinden. Der Anspruch:  Qualität, Design und Funktion müssen stimmen.<br /><br />Hersteller: side by side<br />  Design: Christoph Matthias & Sabine Meyer<br />  Material: Nussbaum, geölt<br />  Maße: L 35 x B 3,5 x H 5 cm<br />  Lieferumfang: 1 Kochzange</div>]]></g:beschreibung>
                    <g:id>16</g:id>
                    <g:gewicht>1.00 kg</g:gewicht>

                    <g:marke>side by side</g:marke>
                    <g:bild_url>http://www.sidebyside-shop.com/images/product_images/thumbnail_images/16_0.jpg</g:bild_url>
                    <g:mpn>40040</g:mpn>
                    <g:preis> 18,50 EUR</g:preis>
                    <g:menge>15</g:menge>
                    <g:zustand>Neu</g:zustand>

                    <g:kompatibel_mit>
                            <g:titel>Einkaufs-Tasche sweet pea schwarz - side by side</g:titel>
                            <g:mpn>40050</g:mpn>
                    </g:kompatibel_mit>
                    <g:kompatibel_mit>
                            <g:titel>Antipastizange - side by side</g:titel>
                            <g:mpn>40039</g:mpn>

                    </g:kompatibel_mit>
                    <g:kompatibel_mit>
                            <g:titel>Ess-Stäbchen Chop-pin - side by side</g:titel>
                            <g:mpn>40022</g:mpn>
                    </g:kompatibel_mit>
                    <g:versand>
                            <g:land>DE</g:land>

                            <g:region></g:region>
                            <g:service>Versand</g:service>
                            <g:preis>3.9</g:preis>
                    </g:versand>
            </item>
     
    Was mich auch noch wundert ist, dass bei manchen Artikeln

    Code: PHP  [Auswählen]
    <!-- more images --> <!-- more images eof -->
     
    UND

    Code: PHP  [Auswählen]
    <div class="productlink">
     
    steht, und bei anderen wiederum nicht!?

     :?

    Grüße
    Voodoo

    franky_n

    • Experte
    • Beiträge: 4.950
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #246 am: 16. November 2010, 22:38:23
    Hallo voodoopupp,

    ich denke, dass in den Beschreibungen das "&" durch ein "&amp;" (zusammengeschrieben hab's nur auseinander geschrieben da Forum das sonst nicht frisst) ersetzt werden muss.

    Viele Grüße

    Franky

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #247 am: 16. November 2010, 23:10:12
    Es wäre ja eigentlich schön, wenn das Modul die Umlaute umwandelt, sollte ja anfängerfreundlich sein. ;-)

    Hier könnte ich mir demnächst mal eine neue Version des Moduls vorstellen. :hust: :whistle:

    Grüße

    Torsten

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.868
    • Geschlecht:
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #248 am: 16. November 2010, 23:17:27
    Hey Franky,

    das war der richtige Tip - nur muss das nicht in der Beschreibung passieren, sondern in den "Kompatiblen"-Produkten - habs mal durch Änderung des Fehlerhaften Produktes gelöst (die "Serviettenringe names & notes 2er-Set" händisch mal auf &amp; geändert - halt ohne Leerzeichen)
    -> und schwupps läuft das Ding  :thumbs:

    jetzt muss ich das nur noch in die google_feed_rss.php rein bekommen:

    Code: PHP  [Auswählen]
            // Kompatibel mit
            if(xtc_db_num_rows($cross_query)) {
                    while ($xsell = xtc_db_fetch_array($cross_query, true)) {
                                    $marke_komp = xtc_db_fetch_array(xtc_db_query("SELECT manufacturers_name FROM ".TABLE_MANUFACTURERS." WHERE manufacturers_id = '".$xsell['products_id']."'"));
                                    echo "\t\t<g:kompatibel_mit>\n";
                                    echo "\t\t\t<g:titel>".$xsell['products_name']. "</g:titel>\n";
                                    echo "\t\t\t<g:mpn>".$xsell['products_model']. "</g:mpn>\n";
                                    if(!empty($marke_komp))
                                            echo "\t\t\t<g:marke>".$marke_komp['manufacturers_name']. "</g:marke>\n";
                                    echo "\t\t</g:kompatibel_mit>\n";
                    }
            }
     :?

    EDIT: Okay, bin schon still, glaub ich habs hinbekommen:

    Code: PHP  [Auswählen]
            // Kompatibel mit
            if(xtc_db_num_rows($cross_query)) {
                    while ($xsell = xtc_db_fetch_array($cross_query, true)) {
                                    $marke_komp = xtc_db_fetch_array(xtc_db_query("SELECT manufacturers_name FROM ".TABLE_MANUFACTURERS." WHERE manufacturers_id = '".$xsell['products_id']."'"));
                                    echo "\t\t<g:kompatibel_mit>\n";
                                    echo "\t\t\t<g:titel>".$xsell['products_name'] = str_replace("&", "&amp;", $xsell['products_name']). "</g:titel>\n";
                                    echo "\t\t\t<g:mpn>".$xsell['products_model']. "</g:mpn>\n";
                                    if(!empty($marke_komp))
                                            echo "\t\t\t<g:marke>".$marke_komp['manufacturers_name']. "</g:marke>\n";
                                    echo "\t\t</g:kompatibel_mit>\n";
                    }
            }
    im Code dann natürlich das Leerzeichen bei &amp; rausnehmen...

    Grüße
    Voodoo

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #249 am: 16. November 2010, 23:27:08
    Genau so macht es Sinn! Aber man sollte nicht nur das & umwandeln. ;-)

    Grüße

    Torsten

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.868
    • Geschlecht:
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #250 am: 16. November 2010, 23:30:38
    jepp, nur ist jetzt die Frage wie ich mehrere hintereinander austausche, damit das auch sauber ist!?  :panic:

    Grüße
    Voodoo

    franky_n

    • Experte
    • Beiträge: 4.950
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #251 am: 17. November 2010, 07:21:19
    Hallo voodoopupp,

    also eigentlich würde ich dann eine Variable vorher machen in der alles gewandelt wird...
    Das gilt natürlich dann auch für andere Felder wie manufacturers_name...

    Code: PHP  [Auswählen]
    // Kompatibel mit
    if(xtc_db_num_rows($cross_query)) {
        while ($xsell = xtc_db_fetch_array($cross_query, true)) {
                // Umlaute und Sonderzeichen umwandeln in Entities
                $products_name = htmlentities($xsell['products_name']);
                $marke_komp = xtc_db_fetch_array(xtc_db_query("SELECT manufacturers_name FROM ".TABLE_MANUFACTURERS." WHERE manufacturers_id = '".$xsell['products_id']."'"));
                $manufacturers_name = htmlentities($marke_komp['manufacturers_name']);
                echo "\t\t<g:kompatibel_mit>\n";
                echo "\t\t\t<g:titel>".$products_name. "</g:titel>\n";
                echo "\t\t\t<g:mpn>".$xsell['products_model']. "</g:mpn>\n";
                if(!empty($marke_komp))
                    echo "\t\t\t<g:marke>".$manufacturers_name. "</g:marke>\n";
                echo "\t\t</g:kompatibel_mit>\n";
        }
    }
    Viele Grüße

    Franky

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.868
    • Geschlecht:
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #252 am: 17. November 2010, 08:15:50
    hmpf, jetzt bricht er mir schon nach vier Produkten ab, wenn ich das so abändere - vorher waren es mittlerweile immerhin schon 1500  :?

    oder muss ich das jetzt noch irgendwie wo anders auch definieren?!

    so schaut der Code aktuell aus (inkl. deiner Änderung)

    Code: PHP  [Auswählen]
    <?php
    /*
    *       Copyright 2009 - Daniel Siekiera / Sebastian Schramm
    *
    *       (( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! )) - Ein Projekt von (( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! ))
    *
    *       Released under the GNU General Public License
    *
    */


    include ('includes/configure.php');
    include ('includes/application_top.php');

    $Title = "Produkt Feed von " . HTTP_SERVER;
    $Description = "Alle Produkte von " . HTTP_SERVER;
    $copyright = HTTP_SERVER;

    $SiteLink = HTTP_SERVER .DIR_WS_CATALOG ;

    if(GOOGLE_RSS_FEED_REFID !='' && GOOGLE_RSS_FEED_REFID !='0')
            $refID = '?refID='.GOOGLE_RSS_FEED_REFID;

    if(GROUP_CHECK == 'true') {
            $group_check = " and p.group_permission_".$_SESSION['customers_status']['customers_status_id']."=1 ";
    }
    if($_SESSION['customers_status']['customers_fsk18_display'] == '0') {
            $fsk_lock = ' and p.products_fsk18!=1';
    }

    $query = "SELECT
                            p.products_id,
                p.products_ean,
                            pd.products_name,
                pd.products_short_description,
                pd.products_description,
                            p.products_price,
                            p.products_image,
                            p.manufacturers_id,
                            p.products_weight,
                    p.products_model,
                    p.products_quantity,
                p.group_permission_1,
                            p.products_date_added,
                            p.products_tax_class_id,
                            s.specials_new_products_price
                            FROM (products p INNER JOIN products_description pd ON p.products_id = pd.products_id) LEFT JOIN specials s ON p.products_id = s.products_id
                            WHERE p.products_status = '1'
                            AND pd.language_id = '2'
                            AND IF(s.specials_new_products_price>0, s.status = '1', '1')
                            "
    .$group_check.$fsk_lock."
                            ORDER BY p.products_date_added DESC"
    ;

    $listing_query = xtDBquery($query);

    require (DIR_WS_CLASSES.'order.php');
    $order = new order;

    $default_data = xtc_db_fetch_array(xtc_db_query(" SELECT ab.entry_postcode,
                                                                                    z.zone_name,z.zone_id,
                                                                                    ab.entry_country_id,
                                                                                    c.countries_id,
                                                                                    c.countries_name,
                                                                                    c.countries_iso_code_2,
                                                                                    c.countries_iso_code_3,
                                                                                    c.address_format_id
                                                                                    FROM address_book ab, zones z, countries c
                                                                                    WHERE ab.address_book_id = '1'
                                                                                    AND z.zone_id = ab.entry_zone_id
                                                                                    AND c.countries_id = ab.entry_country_id"
    ));

          $order->customer = array('postcode' => $default_data['entry_postcode'],
                                  'state' => $default_data['zone_name'],
                                  'zone_id' => $default_data['zone_id'],
                                  'country' =>
                                  Array( 'id' => $default_data['countries_id'],
                                             'title' => $default_data['countries_name'],
                                             'iso_code_2' => $default_data['countries_iso_code_2'],
                                             'iso_code_3' => $default_data['countries_iso_code_3'] ),
                                  'format_id' => $default_data['address_format_id']);

          $order->delivery = array('postcode' => $default_data['entry_postcode'],
                                  'state' => $default_data['zone_name'],
                                  'zone_id' => $default_data['zone_id'],
                                  'country' =>
                                  Array( 'id' => $default_data['countries_id'],
                                             'title' => $default_data['countries_name'],
                                             'iso_code_2' => $default_data['countries_iso_code_2'],
                                             'iso_code_3' => $default_data['countries_iso_code_3'] ),
                                  'format_id' => $default_data['address_format_id']);

    $_SESSION['delivery_zone'] = $order->delivery['country']['iso_code_2'];

    require (DIR_WS_CLASSES.'shipping.php');
    $shipping = new shipping;
    require_once (DIR_FS_INC.'xtc_get_products_mo_images.inc.php');
    require_once (DIR_FS_INC.'xtc_get_tax_rate.inc.php');
    require_once (DIR_WS_CLASSES.'xtcPrice.php');
    $xtPrice = new xtcPrice(DEFAULT_CURRENCY, $_SESSION['customers_status']['customers_status_id']);

    header("Content-Type: text/xml");
    echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n\n";
    echo "<rss version=\"2.0\" xmlns:g=\"http://base.google.com/ns/1.0\" xmlns:c=\"http://base.google.com/cns/1.0\">\n\n";
    echo "<channel>\n";
    echo "\t<title>$Title</title>\n";
    echo "\t<link>$SiteLink</link>\n";

    while ($listing = xtc_db_fetch_array($listing_query, true)) {

            $_SESSION['cart']->remove_all();
            $_SESSION['cart']->add_cart($listing['products_id'], 1, '', false);
            $total_weight = $_SESSION['cart']->show_weight();

            $total_count = $_SESSION['cart']->count_contents();

            $quotes = $shipping->quote();

            $link = xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($listing['products_id'],$listing['products_name']),'NONSSL', false);

            $price = $xtPrice->xtcGetPrice($listing['products_id'], $format = false, 1, $listing['products_tax_class_id'], $listing['products_price']);
            $price = str_replace('0,00','0,01',$price); // Google akzeptiert keine Preise wie 0,00
            $price = $xtPrice->xtcFormat($price,true);
            $price = str_replace('&euro;','EUR',$price);

            $products_name = $listing['products_name'];
            $products_name = str_replace ("&", "&", $products_name);
            $products_name = str_replace ("\n", " ", $products_name);
            $products_name = str_replace ("&Ouml;", "Ö", $products_name);
            $products_name = str_replace ("&ouml;", "o", $products_name);
            $products_name = str_replace ("&Uuml;", "Ü", $products_name);
            $products_name = str_replace ("&Auml;", "Ä", $products_name);
            $products_name = str_replace ("&auml;", "ä", $products_name);

            if($listing['products_description'] !='')
                    $beschreibung = $listing['products_description'];
            elseif($listing['products_short_description'] !='')
                    $beschreibung = $listing['products_short_description'];
            else
                    $beschreibung = $products_name;

            if($listing['manufacturers_id']> '0')
                    $marke = xtc_db_fetch_array(xtc_db_query("SELECT manufacturers_name FROM ".TABLE_MANUFACTURERS." WHERE manufacturers_id = '".$listing['manufacturers_id']."'"));

            // Kompatibel mit

            $cross_query = xtDBquery("SELECT p.products_fsk18,
                                                            p.products_tax_class_id,
                                p.products_id,
                                p.products_image,
                                p.products_model,
                                pd.products_name,
                                                            pd.products_short_description,
                                p.products_fsk18,
                                                            p.products_price,
                                                            p.products_vpe,
                                                            p.products_vpe_status,
                                                            p.products_vpe_value,
                                xp.sort_order from "
    .TABLE_PRODUCTS_XSELL." xp, ".TABLE_PRODUCTS." p, ".TABLE_PRODUCTS_DESCRIPTION." pd
                                    WHERE xp.xsell_id = '"
    .$listing['products_id']."'
                                                            AND xp.products_id = p.products_id "
    .$fsk_lock.$group_check."
                                    AND p.products_id = pd.products_id
                                    AND pd.language_id = '2'
                                    AND p.products_status = '1'
                                    ORDER BY xp.sort_order asc"
    );

            echo "\n\n\t<item>\n";

            // Produktname
            echo "\t\t<title>" . $products_name . "</title>\n";

            // Link
            echo "\t\t<link>" . $link . $refID . "</link>\n";

            // Beschreibung
            echo "\t\t<g:beschreibung><![CDATA[".$beschreibung."]]></g:beschreibung>\n";

            // Produkt ID
            echo "\t\t<g:id>" . $listing['products_id'] . "</g:id>\n";

            // EAN Nummer
            if(!empty($listing['products_ean']))
                    echo "\t\t<g:ean>".$listing['products_ean']."</g:ean>\n";

            // Gewicht
            if($listing['products_weight'] !='0.00')
                    echo "\t\t<g:gewicht>".$listing['products_weight']." kg</g:gewicht>\n";

            // Herstellername
            if($listing['manufacturers_id']> '0')
                    echo "\t\t<g:marke>".$marke['manufacturers_name']."</g:marke>\n";

            // Produktbilder, jedoch nicht mehr als insgesamt 10
            if(!empty($listing['products_image']))
                    echo "\t\t<g:bild_url>".HTTP_SERVER.DIR_WS_CATALOG.DIR_WS_THUMBNAIL_IMAGES.$listing['products_image']."</g:bild_url>\n";
            $images = xtc_get_products_mo_images($listing['products_id']);
            if($images) {
                foreach($images as $image) {
                    $b++;
                    echo "\t\t<g:bild_url>".HTTP_SERVER.DIR_WS_CATALOG.DIR_WS_THUMBNAIL_IMAGES.$image['image_name']."</g:bild_url>\n";
                    if($b==9)
                            break;
                }
            }
            // Alternativ zur MPN die Modelnummer
            if(!empty($listing['products_model']))
                    echo "\t\t<g:mpn>".$listing['products_model']."</g:mpn>\n";

            // Fertiger Produktpreis
            echo "\t\t<g:preis>".$price."</g:preis>\n";

            // Menge
            if($listing['products_quantity']> 0)
                    echo "\t\t<g:menge>".$listing['products_quantity']."</g:menge>\n";

            // Zustand
            echo "\t\t<g:zustand>Neu</g:zustand>\n";

            // Kompatibel mit
            if(xtc_db_num_rows($cross_query)) {
                    while ($xsell = xtc_db_fetch_array($cross_query, true)) {
                                    // Umlaute und Sonderzeichen umwandeln in Entities
                                    $products_name = htmlentities($xsell['products_name']);
                                    $marke_komp = xtc_db_fetch_array(xtc_db_query("SELECT manufacturers_name FROM ".TABLE_MANUFACTURERS." WHERE manufacturers_id = '".$xsell['products_id']."'"));
                                    $manufacturers_name = htmlentities($marke_komp['manufacturers_name']);
                                    echo "\t\t<g:kompatibel_mit>\n";
                                    echo "\t\t\t<g:titel>".$products_name. "</g:titel>\n";
                                    echo "\t\t\t<g:mpn>".$xsell['products_model']. "</g:mpn>\n";
                                    if(!empty($marke_komp))
                                            echo "\t\t\t<g:marke>".$manufacturers_name. "</g:marke>\n";
                                    echo "\t\t</g:kompatibel_mit>\n";
                    }
            }

            // Versandkosten
            $i = 1;
            foreach ($quotes AS $quote) {
                    echo "\t\t<g:versand>\n";
                    echo "\t\t\t<g:land>DE</g:land>\n";
                    echo "\t\t\t<g:region></g:region>\n";
                    echo "\t\t\t<g:service>".$quote['module']."</g:service>\n";
                    echo "\t\t\t<g:preis>".($quote['tax']> 0 ? round(($quote['methods'][0]['cost'] * ( 100 + $quote['tax'] ) / 100),2) : (!empty($quote['methods'][0]['cost']) ? $quote['methods'][0]['cost'] : '0'))."</g:preis>\n";
                    echo "\t\t</g:versand>\n";
                    if($i==10)
                            break;
                    $i++;
            }
            echo "\t</item>";
    }

    echo "</channel>\n";
    echo "</rss>";
    $_SESSION['cart']->reset(true);
    unset($_SESSION['cart']);
    ?>
    Grüße
    Voodoo

    franky_n

    • Experte
    • Beiträge: 4.950
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #253 am: 17. November 2010, 08:49:55
    Hallo voodoopupp,

    upps da habe ich die gleiche Variable ausgewählt wie oben....

    Mach das mal wieder raus:

    Code: PHP  [Auswählen]
    $products_name = htmlentities($xsell['products_name']);
    und mach es mal genauso wie bereits oben aber mit einer anderen Variablen!

    Code: PHP  [Auswählen]
        $xsell_products_name = $xsell['products_name'];
        $xsell_products_name = str_replace ("&", "&amp;", $xsell_products_name);
        $xsell_products_name = str_replace ("\n", " ", $xsell_products_name);
        $xsell_products_name = str_replace ("Ö", "&Ouml;", $xsell_products_name);
        $xsell_products_name = str_replace ("ö", "&ouml;", $xsell_products_name);
        $xsell_products_name = str_replace ("Ü", "&Uuml;", $xsell_products_name);
        $xsell_products_name = str_replace ("ü", "&uuml;", $xsell_products_name);
        $xsell_products_name = str_replace ("Ä", "&Auml;", $xsell_products_name);
        $xsell_products_name = str_replace ("ä", "&auml;", $xsell_products_name);
    Achtung: auch hier wieder die Leerzeichen raus nehmen "&auml;" etc. ist nur so geschrieben da das Forum das ansonsten nicht frisst.

    Und dann das:

    Code: PHP  [Auswählen]
    echo "\t\t\t<g:titel>".$products_name. "</g:titel>\n";
    ändern in:

    Code: PHP  [Auswählen]
    echo "\t\t\t<g:titel>".$xsell_products_name. "</g:titel>\n";
    Das gleiche würde ich empfehlen für:

    Code: PHP  [Auswählen]
    $manufacturers_name = htmlentities($marke_komp['manufacturers_name']);
    nimm dort dann mal die Variable:

    Code: PHP  [Auswählen]
    $xsell_manufacturers_name
     
    Viele Grüße

    Franky

    franky_n

    • Experte
    • Beiträge: 4.950
    Re: MODUL: Alternative zu googlebase.txt -> Google via XML-Feed
    Antwort #254 am: 17. November 2010, 08:57:20
    Hallo voodoopupp,

    Evtl. macht es Sinn auch noch das scharfe s also ß umzuwandeln in: &szlig;

    Viele Grüße

    Franky