Frage

Ich baue eine Website und installierte Magento in / shop / subditionory. Ich möchte die Top-Kategorien in das Menü meiner Nicht-Magento-Site integrieren, damit Sie direkt in die Kategorie navigieren können. Dafür brauche ich die Kategoriennamen und URLs.

Magentos Kategorien sind:

  • Vorlagen
    • Farbe
    • Thema
    • Allgemein
  • Andere Produkte

Ich musste zunächst eine Liste von Kategorien unter den Templates Top-Ebene erhalten, also schrieb ich den folgenden Code. Es ist mein erster Versuch bei der Integration in Magento, also sei sanft :-):

<?php
require_once dirname(__FILE__).'/shop/app/Mage.php';
umask(0);
Mage::app('default');

$helper     = Mage::helper('catalog/category');
$collection = $helper->getStoreCategories();
foreach ($collection as $catalogArray) {
    if ($catalogArray->getName() == "Templates") {
        foreach (explode(",", $catalogArray->getChildren()) as $category) {
            $_category = Mage::getModel('catalog/category')->load($category);
            if($_category->getIsActive()) {
                $caturl = $_category->getUrl();
                $catname = $_category->getName();
            }
            echo "<pre>";
            var_dump($caturl);
            echo "</pre>";

            echo "<pre>";
            var_dump($catname);
            echo "</pre>";
        }
    }
}
?>

Dies erhält korrekt die Namen und Kategorien, aber die IT -Rückgaben der URL sind absolute vollständige URLs, wie z. "http://example.com/shop/templates/theme.html".

Wie rufe ich zunächst relative URLs von Magento ab?

Zweitens scheint die generierte URL nur korrekt zu sein, wenn ich die Einstellung von Web/Unsicheren/Basis_url auf die festgelegt habe http://example.com/shop/. Wenn ich dies stattdessen auf {{Base_url}} festlegt (was wir während der Entwicklung bevorzugen, da wir virtuell veranstaltungsbasierte SVN-Kopien verwenden), fehlt das / shop / Teil, dh: "http://example.com/templates/theme.html".

Irgendeine Idee warum?

War es hilfreich?

Lösung

Ich denke, Sie können alle Ihre Anforderungen erfüllen, indem Sie mit den Einstellungen in System> Konfiguration> Web spielen

Als erstes würde ich es versuchen, die Basis -URL (bei Bedarf sicher und unsicher) auf / (Vorwärts -Schrägstrich) zu setzen und dann System> Cache -Management> Catalog -URL -Umschreiber neu zu machen.

Wenn das nicht funktioniert, spielen Sie mit den Einstellungen herum, wetten Sie, dass Sie es zum Laufen bringen können. Seien Sie jedoch gewarnt, es wird Magento dazu bringen, relative URLs in Google -Basis -Feeds usw. zu setzen. Also mach es nicht in der Produktion.

Meine Entwicklerkopie ist bei der Arbeit, von hier aus unzählbar, also kann es also nicht für Sie versuchen.

Für Ihr Skript oben können Sie auch versuchen:

$url = "/shop/" . $_category->getUrlKey() . '.html';

(Möglicherweise benötigen Sie das HTML -Bit am Ende nicht, abhängig von Ihrer Konfiguration)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top