it-swarm.com.de

Kategorie-URL-Schlüssel in Magento abrufen

Wie erhalte ich den URL-Schlüssel einer Kategorie in Magento? Ich habe diesen Text in das URL-Schlüsselfeld des CMS eingefügt:

Category-1

So versuche ich derzeit, meine Kategorie-URL in einem Anker anzuzeigen:

$_categories = Mage::getModel('catalog/category')->getCollection()
                     ->addAttributeToSelect('name')
                     ->addAttributeToSelect('is_active');

<?php foreach($_categories as $_category): ?>
<a href="<?php echo $_category->getCategoryUrl($_category); ?>">
  <?php endforeach; ?>

Immer wenn ich meine Ausgabe überprüfe, zeigt sie immer noch Folgendes:

<a href="">
            <span>Manual Tile Cutters</span>
        </a>

Ich habe bereits Google und die Magento-Foren geprüft, finde aber immer noch keine ausreichende Antwort.

Ist es das, was ich im Anker den URL-Schlüssel nennen möchte, oder ist es eine andere URL?

9
marchemike

Bei beiden anderen Antworten gibt es eine DB-Strafe. Am besten fügen Sie Kategorie-URL-Informationen auf der Erfassungsebene hinzu und verwenden Sie diese einfach in Ihren Vorlagendateien. Passen Sie Ihren Code wie folgt an:

    $_categories = Mage::getModel('catalog/category')->getCollection()
                     ->addAttributeToSelect('name')
                     ->addAttributeToSelect('is_active')
                     ->addUrlRewriteToResult();

<?php foreach($_categories as $_category): ?>
<a href="<?php echo $_category->getUrl($_category); ?>">
  <?php endforeach; ?>

Beachten Sie die zusätzliche, auf die Kategoriesammlung angewendete Methode mit dem Namen addUrlRewriteToResult(), und rufen Sie die URL auf, indem Sie getUrl() verwenden, anstatt das, was Sie zuvor hatten. getCategoryUrl() (kein solcher Code).

Übrigens sollte Ihr Code gut funktionieren, wenn Sie getUrl() aufrufen, was sich jedoch geringfügig auf die Leistung auswirkt.

Ich hoffe das hilft.

17
Ron

Vielleicht habe ich die Frage nicht vollständig verstanden, aber der Code unten gibt Ihnen die URL einer Kategorie mit der angegebenen ID

<?php $category = Mage::getModel('catalog/category')->load(4); ?>
<a href="<?php echo $category->getUrl(); ?>">

Ändern Sie einfach die id 4 inside load () mit der von Ihnen benötigten

16
ThanosDi

Die Verwendung von Magento (Category-) Modellen kann sehr schwer werden, wenn Sie nur die URL der Kategorie laden. Wenn Sie sich in einer Schleife befinden, in der Sie URLs mit URLs der Kategorie 9000+ laden müssen, sollten Sie die URL-Umschreibefunktion zum Abrufen der URLs in Betracht ziehen, da nicht zahlreiche Magento-Modelle geladen werden müssen.

$requestPath = Mage::getSingleton('core/url_rewrite')
    ->getResource()
    ->getRequestPathByIdPath(
        'category/' . $categoryId, Mage::app()->getStore()->getId());
return Mage::getBaseUrl() . $requestPath;

Lesen Sie diesen Artikel für weitere Informationen zu diesem Thema.

6
Giel Berkers

Mage :: Helper ('Katalog/Kategorie') für diese verwenden

<?php $_helper= Mage::helper('catalog/category');
      $_categories = Mage::getModel('catalog/category')->getCollection()
                     ->addAttributeToSelect('name')
                     ->addAttributeToSelect('is_active'); ?>
<?php foreach($_categories as $_category): ?>
    <a href="<?php echo $_helper->getCategoryUrl($_category); ?>">
          <?php echo $_category->getName(); ?>
    </a>
<?php endforeach;?>

Mehr Infos zum Anklicken Anhören

3
ravi patel
<?php
// View your current directory
echo getcwd();

//create a file handler by opening the file
$myTextFileHandler = @fopen(getcwd()."/../error-20180726.log","r+");

//truncate the file to zero
//or you could have used the write method and written nothing to it
@ftruncate($myTextFileHandler, 0);
0
Jewel

Wenn Sie eine Sammlung von Kategorienattributen und Kategorien-URLs für das Ladengeschäft abrufen möchten, können Sie verwenden 

$collection = Mage::getModel('catalog/category')->getCollection()
    ->setStoreId($store->getId())
    ->addAttributeToSelect('entity_id')
    ->addAttributeToSelect('url_key')
    ->addAttributeToSelect('name')
    ->addAttributeToFilter('is_active', 1)
    ->addAttributeToFilter('include_in_menu', 1)
    ->addFieldToFilter('path', array('like'=> "1/{$rootCategoryId}/%"));

    $collection->getSelect()->joinLeft(
    array('url_rewrite_table' => $collection->getTable('core/url_rewrite')),
    "url_rewrite_table.store_id = {$store->getId()} AND id_path = CONCAT('category/',e.entity_id)",
    array('store_url_key' => 'request_path'
    )
    );

Rufen Sie den Anforderungspfad wie $ row-> getStoreUrlKey () ab und stellen Sie ihm die Store-Basis-URL voran. Ich verwende dies, um das Store-spezifische Kategorienraster im Admin-Panel anzuzeigen.

0
Anil