Shopseiten in die Sitemap

Hallo, ha sich schon mal jemand Gedanken gemacht, wie man alle Shopseiten in die XML Sitemap und die normale Sitemap bekommt? Danke

Hi, ja, … /engine/Shopware/Controllers/Frontend/SitemapXml.php ca. nach $url .= "\r\n"; echo $url; } } je Seite eine Zeile wies diese echo "<url> <loc>http://www.domain.at/</loc> <lastmod>2012-05-13</lastmod> <changefreq>weekly</changefreq> <priority>1.00</priority> </url>\r\n"; und echo "\r\n"; } } am Ende einfügen

ok, danke dir. soweit ist das schon mal gut. Aber ich will ja die Shopseiten nicht manuell da eintragen. Daher sollte dies ja automatisch gehen. Aber evtl. kann ich diese dann einfach per SQL Abfragen und automtatisch füllen. Wenn jemand so was schon mal “automatisch” gemacht hat, nur her damit :wink:

In der /engine/Shopware/Controllers/Frontend/SitemapXml.php die Funktion indexAction() ergänzen mit $this-\>readCustomUrls("gBrands"); $this-\>readCustomUrls("gBottom"); wobei der angebene Name gBottom der Name des Gruppen Keys der Seiten ist, die in der Sitemap erscheinen sollen. Wenn mehrere Rubriken erscheinen sollen, dann den Aufruf so wie oben wiederholen. Dann noch die folgende neue Funktion in /engine/Shopware/Controllers/Frontend/SitemapXml.php integrieren: /\*\* \* Read certain custom urls \* \* \*/ public function readCustomUrls($group) { $sql = "SELECT c.id FROM s\_cms\_static c WHERE c.grouping = \"$group\" "; $result = Shopware()-\>Db()-\>query($sql); if (!$result-\>rowCount()) { return; } while ($url = $result-\>fetch()) { $url['link'] = $this-\>Front()-\>Router()-\>assemble(array( 'sViewport' =\> 'custom', 'sCustom' =\> $url['id'] )); $this-\>printArticleUrls($url); } }

1 „Gefällt mir“

[quote=„klausm“]Hi, ja, … /engine/Shopware/Controllers/Frontend/SitemapXml.php ca. nach $url .= "\r\n"; echo $url; } } je Seite eine Zeile wies diese echo "<url> <loc>http://www.domain.at/</loc> <lastmod>2012-05-13</lastmod> <changefreq>weekly</changefreq> <priority>1.00</priority> </url>\r\n"; und echo "\r\n"; } } am Ende einfügen[/quote] Ah super, danke! Das werde ich gleich mal versuchen!Ich arbeite auch derzeit mit einer Homepage Software, die ich von dieser Seite habe, und wollte ebenfalls die Shopseite rechts in der Sidebar haben. Wusste bis dato nämlich ebenfalls nicht wie das funktioniert, aber jetzt bin ich schlauer!:slight_smile:

Jep, habe es geschafft meine von mir gewünschten Shopseiten in die sitemap.xml zu bekommen, mit einer geänderten Zeile in dem Code von Tigersoft (hier nochmal ein Danke!). Auch die Blogseiten sind drin!!! ;): Man muss die Zeile WHERE c.grouping = “$group” in WHERE c.grouping LIKE “%”.$group."%" ändern. Jetzt muss mir nur noch jemand sagen, wie die auch im Shop bei der Sitemap angezeigt werden können, so wie die Kategorien. Ich weiß nicht wo und wie. Vielleicht kann ja da noch einer von den Profis einen Tipp geben. Wäre echt super!!! [quote=“Tigersoft”]In der /engine/Shopware/Controllers/Frontend/SitemapXml.php die Funktion indexAction() ergänzen mit $this-\>readCustomUrls("gBrands"); $this-\>readCustomUrls("gBottom"); wobei der angebene Name gBottom der Name des Gruppen Keys der Seiten ist, die in der Sitemap erscheinen sollen. Wenn mehrere Rubriken erscheinen sollen, dann den Aufruf so wie oben wiederholen. Dann noch die folgende neue Funktion in /engine/Shopware/Controllers/Frontend/SitemapXml.php integrieren: /\*\* \* Read certain custom urls \* \* \*/ public function readCustomUrls($group) { $sql = "SELECT c.id FROM s\_cms\_static c WHERE c.grouping = \"$group\" "; $result = Shopware()-\>Db()-\>query($sql); if (!$result-\>rowCount()) { return; } while ($url = $result-\>fetch()) { $url['link'] = $this-\>Front()-\>Router()-\>assemble(array( 'sViewport' =\> 'custom', 'sCustom' =\> $url['id'] )); $this-\>printArticleUrls($url); } } [/quote]

Ich hänge mich hier auch noch einmal ran. Ich fände eine Lösung für die normale sitemap wie auch der sitemap.xml für die Landingpages sehr wichtig. Ich habe für beides noch keine funktionierende Lösung zu Stande gebracht. In der SitemapXml.php probiere ich im Moment folgendes: Unter public function indexAction() $this->readCampaignUrls(“leftMiddle”); eingefügt. Als vorletzten Block: /** * Read certain campaign urls * * */ public function readCampaignUrls($parentId) { $sql = "SELECT c.id, c.seo_description FROM s_emotion c WHERE c.landingpage_block = “$parentId” "; $result = Shopware()->Db()->query($sql); if (!$result->rowCount()) { return; } while ($url = $result->fetch()) { $url[‘link’] = $this->Front()->Router()->assemble(array( [color=red]‘sViewport’ => ‘???’, Hier weiß ich nicht weiter[/color] )); $this->printArticleUrls($url); } } Hier fehlt mir im rot markierten Teil einfach Wissen damit ich die Landingpage als Link angezeigt bekomme. Problem ist wohl das in der s_emotion kein Link zur Landingpage angegeben ist, wahrscheinlich muß man hier noch eine sql Abfrage in der rewrite_url einfügen, aber das ist mir zu hoch… Falls jemand einen Tipp hätte würde ich mich freuen. Danke Frank

Hi, der Aufbau ist in etwa so: ‘sViewport’=‘detail’ (das sind Produktseiten) ‘sViewport’=‘cat’ (das sind Kategorien ) ‘sViewport’=‘blog’ (das sind Blogartikel) Sent from my iPad using Tapatalk

hallo zusammen, ich habe mich auch gerade mit dem thema beschäftigt und habe aufbauend auf ein paar snippets aus diesem thread die sitemapxml.php refactored (shopware version 4.3.4). in der sitemap enthalten sind jetzt auch custom pages außerdem kann die priorität in abhängigkeit von dem seitentypen beeinflusst werden: https://gist.github.com/seriousManual/5 … 1c37b25135 listen mit custom urls hier eintragen (mein beispiel ist ‚gTop‘): https://gist.github.com/seriousManual/5 … ap-xml-L72 ansonsten können in folgenden zeilen die prioritäten angepasst werden: category urls (blog): https://gist.github.com/seriousManual/5 … ap-xml-L99 category urls (artikel categories): https://gist.github.com/seriousManual/5 … p-xml-L107 artikel urls: https://gist.github.com/seriousManual/5 … p-xml-L144 blog urls: https://gist.github.com/seriousManual/5 … p-xml-L184 custom urls: https://gist.github.com/seriousManual/5 … p-xml-L207 viel spaß.

1 „Gefällt mir“