Получить ключ URL категории в Magento

как получить URL-ключ категории в Magento. Я добавил этот текст в поле URL key CMS:

Category-1

вот как я сейчас пытаюсь показать свой URL категории в Якоре:

$_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; ?>

но всякий раз, когда я проверяю свой вывод, он все еще показывает следующее:

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

Я уже проверил Google и форумы magento для этого, но я все еще не могу найти достаточного ответа.

кроме того, это то, что я пытаюсь назвать в Якоре URL ключ, или это другой URL?

6 ответов


оба других ответа есть штраф DB. Лучший способ добавить информацию URL категории на уровне коллекции и просто использовать его по своему вкусу в файлах шаблонов. Настройте свой код следующим образом:

    $_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; ?>

обратите внимание на дополнительный метод, применяемый к коллекции категорий addUrlRewriteToResult() и вызовите url-адрес с помощью getUrl() вместо того, что у вас было раньше getCategoryUrl() (нет такой вещи в коде).

Кстати, Ваш код должен работать нормально, если вы позвоните getUrl() но слегка повлияет на производительность.

надеюсь, это поможет.


возможно, я не понял вопрос полностью, но код ниже даст вам url-адрес категории с учетом идентификатора

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

просто измените id 4 внутри load () с тем, который вам нужен


использование моделей Magento (Category -) может стать очень тяжелым для загрузки только для Загрузки URL-адреса категории. Когда вы находитесь в цикле, где вам нужно загрузить URL-адреса 9000+ категории URL-адресов, вы можете рассмотреть возможность использования функции перезаписи url-адресов для извлечения URL-адресов, поскольку это не связано с загрузкой многочисленных моделей Magento:

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

читать в этой статье для получения дополнительной информации о этого.


используйте Mage:: helper ('catalog/category') для этого

<?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;?>

Подробнее нажать услышать


Если вы хотите получить коллекцию атрибутов категории магазина и url категории, вы можете использовать

$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'
    )
    );

и получить путь запроса, как $row - >getStoreUrlKey () и префикс его с базовым Url-адресом магазина. Я использую это, чтобы показать сетку конкретных категорий магазина в панели администратора.


<?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);