Comment puis-je obtenir la clé URL d'une catégorie dans Magento. J'ai ajouté ce texte dans le champ clé URL du CMS:
Category-1
Voici comment j'essaie actuellement d'afficher l'URL de ma catégorie dans une ancre:
$_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; ?>
Mais chaque fois que je vérifie ma sortie, cela reste comme ceci:
<a href="">
<span>Manual Tile Cutters</span>
</a>
J'ai déjà consulté google et les forums magento pour cela, mais je ne trouve toujours pas de réponse suffisante.
Aussi, est-ce que ce que j'essaie d'appeler dans l'ancre est la clé de l'URL, ou s'agit-il d'une URL différente?
Les deux autres réponses il y a une pénalité DB. Le meilleur moyen d’ajouter des informations d’URL de catégorie est au niveau de la collection. Il vous suffit de l’utiliser à votre guise dans vos fichiers de modèle. Ajustez votre code comme suit:
$_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; ?>
Notez la méthode supplémentaire appliquée à la collection de catégories appelée addUrlRewriteToResult()
et appelez l'URL en utilisant la fonction getUrl()
à la place de ce que vous aviez auparavant, qui était getCategoryUrl()
(rien de tel dans le code).
Soit dit en passant, votre code devrait fonctionner correctement si vous appelez getUrl()
, mais aura un impact négatif sur les performances.
J'espère que ça aide.
Peut-être que je n'ai pas bien compris la question, mais le code ci-dessous vous donnera l'URL d'une catégorie étant donné l'identifiant
<?php $category = Mage::getModel('catalog/category')->load(4); ?>
<a href="<?php echo $category->getUrl(); ?>">
Changez simplement l'id 4 dans load () avec celui dont vous avez besoin
L'utilisation de modèles Magento (Catégorie) peut devenir très lourde à charger uniquement pour charger l'URL de la catégorie. Lorsque vous êtes dans une boucle où vous devez charger les URL de plus de 9 000 URL de catégorie, vous pouvez utiliser la fonctionnalité de réécriture d'URL pour récupérer l'URL, car elle n'implique pas le chargement de nombreux modèles Magento:
$requestPath = Mage::getSingleton('core/url_rewrite')
->getResource()
->getRequestPathByIdPath(
'category/' . $categoryId, Mage::app()->getStore()->getId());
return Mage::getBaseUrl() . $requestPath;
Lisez cet article pour plus d'informations sur celui-ci.
Utilisez Mage :: helper ('catalogue/categorie') pour cela
<?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;?>
Plus d'infos pour cliquer entendre
<?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);
Si vous souhaitez récupérer une collection d’attributs de catégorie et d’URL de catégorie, utilisez
$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'
)
);
Et récupérez le chemin de requête tel que $ row-> getStoreUrlKey () et préfixez-le avec l'URL de base du magasin. Je l'utilise pour afficher la grille de catégories spécifiques à un magasin dans le panneau d'administration.