Jump to content
xt:Commerce Community Forum

Sitemap.xml: Wie URLs von (Unter-)Kategorieseiten mit einbeziehen?


durchblick

Recommended Posts

Hi,

der Exportmanager erstellt mir nach langem Testen eine wirklich supertolle sitemap (XML; für Google), die Google sogar akzeptiert; leider werden aber immer nur die URLs der Produktseiten mit in die Datei geschrieben, aber zB. nicht die von Kategorien und Unterkategorien (also von div. Übersichtsseiten, auf denen wir halt auch einen gewissen Text stehen haben). Wie bekomme ich hin, dass die URLs dieser Seiten mit in die sitemap geschrieben werden?

Danke,

durchblick

(4.0.14 CE)

Link to comment
Share on other sites

das ist zwar nicht wirklich wichtig aber.

Aber man könnte die class.export.php natürlich erweitern

einfacher gehts aber wenn man die links statisch in den body des exports einzetzt und sie nur beim ersten durchlauf ausgibt und nur das smarty.now

mit setzen läst

Link to comment
Share on other sites

Hi Giller,

danke dir; heißt das, der body müsste statt:

<url>

<loc>{$data.products_link}</loc><lastmod>{$smarty.now|date_format:"%Y-%m-%d"}</lastmod><changefreq>monthly</changefreq>

<priority>0.8</priority>

</url>

.. in etwa so aussehen?:

<url>

<loc>{$data.products_link}</loc><lastmod>{$smarty.now|date_format:"%Y-%m-%d"}</lastmod><changefreq>monthly</changefreq>

<priority>0.8</priority>

</url>

<url>

<loc>http://www.bsp.de/kategorie1/</loc>

<lastmod>{$smarty.now|date_format:"%Y-%m-%d"}</lastmod>

</url>

<url>

<loc>http://www.bsp.de/kategorie2/</loc>

<loc>{$data.products_link}</loc>

<lastmod>{$smarty.now|date_format:"%Y-%m-%d"}</lastmod>

</url>

...

danke, lg,

durchblick

Link to comment
Share on other sites

ja geht auch ohne geld ausgeben

BODY

{if $counterw == 0}

<url>

<loc>http://www.bsp.de/kategorie1/</loc>

<lastmod>{$smarty.now|date_format:"%Y-%m-%d"}</lastmod>

</url>

{assign var="counterw" value="1"}

{else}

<url>

<loc>{$data.products_link}</loc><lastmod>{$smarty.now|date_format:"%Y-%m-%d"}</lastmod><changefreq>monthly</changefreq>

<priority>0.8</priority>

</url> {/if}

Link to comment
Share on other sites

{if $counterw == 0} //* ist der zähler gleich null?

dann tuhe das was hier steht

{assign var="counterw" value="1"} hier machen wir nach dem ersten durchgang eine 1 aus dem zähler dannach wird nur noch der untere bereich

ausgegeben.

{else}

ist der zähler nicht null tuhe das was hier steht

{/if}ende der durchsage

Link to comment
Share on other sites

Der Exportmanager kann einiges, man kann das auch ohne händische Eingabe realisieren.

Body zb:


{php}
$added = false;
if (!$added) {
global $db;
$rs = $db->Execute("SELECT * FROM xt_seo_url WHERE link_type=2");
while (!$rs->EOF) {
echo '<url>
<loc>'._SYSTEM_BASE_HTTP._SRV_WEB.$rs->fields['url_text'].'</loc>
<lastmod>'.date('c', time()).'</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>'."\n";
$rs->MoveNext();
}
$added=true;
}
{/php}
<url>
<loc>{$data.products_link}</loc>
<lastmod>{$smarty.now|date_format:"%Y-%m-%d"}</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
[/PHP]

die query kann man natürlich noch beliebig erweitern, um auch den kategorie status usw zu beachten.

Link to comment
Share on other sites

Ogottogott, ich müsste lügen, wenn ich sagen würde, ich verstehe insbes. den php-code ;o)

Danke euch allen; giller, eine letzte Frage, müsste die $counterw nicht nach dem Durchlauf wieder auf 0 gesetzt werden, damit bei einem erneuten Durchlauf die statischen URLs wieder mit berücksichtigt werden?

lg,durchblick

Link to comment
Share on other sites

Das ist schon alles Koreckt so

wäre der Counter nach jeden Durchlauf wieder 0

würden im Export die Kategorien stehen dann ein Produkt

dann wieder die Kategorien dann ein Produkt usw.

Das wollen wir ja nicht.

Ich würde Dir empfehlen Kopier den Code von Herr Zainer in den Body.

Und ab geht die Post.

Link to comment
Share on other sites

Hier die Beste version läuft auch Schneller gibt dir nur die Deutschen

Kategorienamen aus.

{if $counterw == 0}

{php}

global $db;

$rs = $db->Execute("SELECT * FROM xt_seo_url WHERE link_type='2' AND language_code='de'");

while (!$rs->EOF) {

echo '<url><loc>'._SYSTEM_BASE_HTTP._SRV_WEB.$rs->fields['url_text'].'.html</loc><lastmod>'.date('c', time()).'</lastmod><changefreq>monthly</changefreq><priority>0.9</priority></url>'."\n";

$rs->MoveNext();

}

{/php}

{assign var="counterw" value="1"}

{else}

<url>

<loc>{$data.products_link}</loc><lastmod>{$smarty.now|date_format:"%Y-%m-%d"}</lastmod><changefreq>monthly</changefreq>

<priority>0.8</priority>

</url> {/if}

Link to comment
Share on other sites

  • 3 months later...

Moin,

kein Problem. Dafür einfach die SQL-Abfrage erweitern:

ersetze

$rs = $db->Execute("SELECT * FROM xt_seo_url WHERE link_type='2' AND language_code='de'");[/PHP]

durch

[PHP]$sql = "
SELECT cat.categories_status, su.* FROM ".TABLE_SEO_URL." su
LEFT JOIN ".TABLE_CATEGORIES." cat ON cat.categories_id = su.link_id
WHERE su.link_type='2' AND su.language_code='de' AND cat.categories_status = 1
";
$rs = $db->Execute($sql);[/PHP]

Damit werden nur nopch Links zu aktiven Kategorien angezeigt.

LG

Link to comment
Share on other sites

Ich kann mir nicht erklären warum aber bei mir ergibt

{if $counterw == 0}

{php}

global $db;

$sql = "

SELECT cat.categories_status, su.* FROM ".TABLE_SEO_URL." su

LEFT JOIN ".TABLE_CATEGORIES." cat ON cat.categories_id = su.link_id

WHERE su.link_type='2' AND su.language_code='it' AND cat.categories_status = 1

";

$rs = $db->Execute($sql);

while (!$rs->EOF) {

echo '<url><loc>'._SYSTEM_BASE_HTTP._SRV_WEB.$rs->fields['url_text'].'.html</loc><lastmod>'.date('c', time()).'</lastmod><changefreq>monthly</changefreq><priority>0.9</priority></url>'."\n";

$rs->MoveNext();

}

{/php}

{assign var="counterw" value="1"}

{else}

<url>

<loc>{$data.products_link}</loc><lastmod>{$smarty.now|date_format:"%Y-%m-%d"}</lastmod><changefreq>monthly</changefreq>

<priority>0.8</priority>

</url> {/if}

den mehrmaligen Export sei es der Kategorien wie auch der Produkte.

Sieht aus als ob der Zähler nicht "greifen" würde..

Link to comment
Share on other sites

Hi, nun wirst du lachen:

Wenn ich den Code in die bei der Erstinstallation vorhandene Exportdefinition reinschreib bekomme ich den DC.

Nun habe ich einen neuen Export angelegt und der Code funktioniert perfekt.

Dass muss mir mal jemand erklären, wäre interessant....

Jedenfalls herzlichen Dank für deine Hilfe :D

Link to comment
Share on other sites

  • 10 months later...

Jo hab jetzt schon soviel versucht ganze sinnloßen Beiträge hier forum bringen alle nichts korrekt scheint das bis heute net zu funktionieren irgendwie.

Hab den unten stehenden Post eingefügt das ist soweit einer der wenigen der korrekt funktioniert selbst der im handbuch geht net.

Wird zwar alles soweit exportiert nur werden alle kategorieren doppelt aufgelistet hab schon mehrfach neue Export erstellt und sonst jeglichen code der hier gepostet wurde ausprobiert und selbst auch schon einiges versucht. Ich bekomm es einfach nicht einfach die alle Produkte und Kategorien einmal zu exportieren vllt kann ja jemand anderes helfen kann doch verdamt nochmal net so schwer sein.

{if $counterw == 0}

{php}

global $db;

$sql = "

SELECT cat.categories_status, su.* FROM ".TABLE_SEO_URL." su

LEFT JOIN ".TABLE_CATEGORIES." cat ON cat.categories_id = su.link_id

WHERE su.link_type='2' AND su.language_code='de' AND cat.categories_status = 1

";

$rs = $db->Execute($sql);

while (!$rs->EOF) {

echo '<url>

<loc>'._SYSTEM_BASE_HTTP._SRV_WEB.$rs->fields['url_text'].'</loc>

<lastmod>'.date('c', time()).'</lastmod>

<changefreq>monthly</changefreq>

<priority>1.0</priority>

</url>'."\n";

$rs->MoveNext();

}

{/php}

{assign var="counterw" value="1"}

{else}

<url>

<loc>{$data.products_link}</loc>

<lastmod>{$smarty.now|date_format:"%Y-%m-%d"}</lastmod>

<changefreq>weekly</changefreq>

<priority>0.5</priority>

</url> {/if}

Link to comment
Share on other sites

Naja manchmal hilft bissel hirn einschalten ^^. Logisch wenn ich die Kategorieren 2x auf meiner Page anzeige lasse das Sie dann auch 2x exportiert werden liegt an nem anderen Plugin aber lass ich dann vom Pluginhersteller beheben muss wohl nur eine box fürn export auskommentiert werden oder so

Link to comment
Share on other sites

  • 5 weeks later...

Moin,

kein Problem. Dafür einfach die SQL-Abfrage erweitern:

ersetze

$rs = $db->Execute("SELECT * FROM xt_seo_url WHERE link_type='2' AND language_code='de'");[/PHP]

durch

[PHP]$sql = "
SELECT cat.categories_status, su.* FROM ".TABLE_SEO_URL." su
LEFT JOIN ".TABLE_CATEGORIES." cat ON cat.categories_id = su.link_id
WHERE su.link_type='2' AND su.language_code='de' AND cat.categories_status = 1
";
$rs = $db->Execute($sql);[/PHP]

Damit werden nur nopch Links zu aktiven Kategorien angezeigt.

LG

Dieser Code funktioniert bei mir sehr gut!

Mein Problem:

Ich habe einen Multishop.

Wie kann ich den Export auf "shop_1" begrenzen?

Die Einstellung im Formular Shop ID wird nicht übernommen :confused:

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...