Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?

Obtenir la liste des marques
(1 lecteur(s)) (1) Invité(s)
Aller en basPage: 12
SUJET:

Obtenir la liste des marques

**
#9655
Gabriiiel
I love Magento.
Expert Magento
Messages: 4118
graph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin gabriel.bouhatous Formation Magento Audit Conseil gabriel.bouhatous Ask me :) Lieu: Paris

Obtenir la liste des marques

Il y a 9 Années, 1 Mois
Karma: 112  
Bonjour à tous,

Pour lister les valeurs d'un attribut (ici, l'attribut "manufacturer" ) il suffit d'un peu de code et d'un template.

Commencez par créer un fichier app/code/local/Mage/Catalog/Block/Product/Manufacturer.php avec ce contenu :

public function getAllManu()
{
$product = Mage::getModel('catalog/product');
$attributes = Mage::getResourceModel('eav/entity_attribute_collection')
->setEntityTypeFilter($product->getResource()->getTypeId())
->addFieldToFilter('attribute_code', 'manufacturer');
$attribute = $attributes->getFirstItem()->setEntity($product->getResource());
$manufacturers = $attribute->getSource()->getAllOptions(false);
return $manufacturers;
}



Créez ensuite un fichier catalog/product/manufacturer.phtml dans app/design/frontend/{interface}/{theme}/template et insérez-y ce code :

<ul id="manufacturer_list">
<?php foreach ($this->getAllManu() as $manufacturer): ?>
<li><?php echo $manufacturer['label'] ?></li>
<?php endforeach; ?>
</ul>


Désormais, vous pouvez appeler ce bout de template sur une page statique ou dans un bloc de cette manière :

{{block type="catalog/product_manufacturer" name="catalog.product.manufacturer" alias="product_manufacturer" template="catalog/product/manufacturer.phtml"}}


  • Contributeur : Gabriel

  • La reproduction de cet article n'est pas permise, hors autorisation expresse de Fragento.
 
Dernière édition: 25/03/09 à  06:25 Par Gabriiiel.
Expert Magento @ The e-Commerce Academy

L'administrateur a désactivé l'accès public en écriture.
#12723
toulousain
Platinum Boarder
Messages: 570
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Montpellier

Re:Obtenir la liste des marques

Il y a 8 Années, 12 Mois
Karma: 15  
Je suis en train de tester ce bout de code.
J'ai l'erreur suivante :

Parse error: syntax error, unexpected T_PUBLIC in .../app/code/local/Mage/Catalog/Block/Product/Manufacturer.php on line 3

Je post dès que j'ai trouvé le souci.
Gabriiiel si tu es dans le coin ...
 
Développement / gestion de projet E-commerce magento
Montpellier
L'administrateur a désactivé l'accès public en écriture.
#12728
toulousain
Platinum Boarder
Messages: 570
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Montpellier

Re:Obtenir la liste des marques

Il y a 8 Années, 12 Mois
Karma: 15  
Un première solution étant de ramener la fonction dans le fichier .phtml

Le code :

Code :



<?php
        $product = Mage::getModel('catalog/product');
$attributes = Mage::getResourceModel('eav/entity_attribute_collection')
->setEntityTypeFilter($product->getResource()->getTypeId())
->addFieldToFilter('attribute_code', 'manufacturer');
$attribute = $attributes->getFirstItem()->setEntity($product->getResource());
$tab_manufacturers = $attribute->getSource()->getAllOptions(false);
?>
<ul id="manufacturer_list">
<?php foreach ($tab_manufacturers as $manufacturer): ?>
<li><?php echo $manufacturer['label'] ?></li>
<?php endforeach; ?>
</ul>




Bon c'est pas le mieux vous me direz, mais cela est fonctionnel.
 
Dernière édition: 27/04/09 à  08:13 Par toulousain.
Développement / gestion de projet E-commerce magento
Montpellier
L'administrateur a désactivé l'accès public en écriture.
#16873
Jerome38
Speedinfo.fr
Expert Boarder
Messages: 112
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Grenoble

Re:Obtenir la liste des marques

Il y a 8 Années, 9 Mois
Karma: 2  
Bonjour,

j'arrive pas à faire marcher ce script (alors qu'il est relativement basique)
J'ai mis brand a la place de manufacturer car c'est l'attribut que j'ai créé j'ai donc :


Code :


public function getBrands()
{
  $product = Mage::getModel('catalog/product');
  $attributes = Mage::getResourceModel('eav/entity_attribute_collection')
                ->setEntityTypeFilter($product->getResource()->getTypeId())
                ->addFieldToFilter('attribute_code', 'brand');
  $attribute = $attributes->getFirstItem()->setEntity($product->getResource());
  $brands = $attribute->getSource()->getAllOptions(false);
  var_dump($brands);

  return $brands;
}



et j'ai ajouté dans catalog/category/view.phtml :

Code :


<select id="brand-list" name="brand-list">
  <option value="0">Choisir une marque...</option>
  <?php foreach ($this->getBrands() as $brand): ?>
    <option value=""><?php echo $brand['label'] ?></option>
  <?php endforeach; ?>
</select>



Mais le foreach reste vide (je surcharge Mage_Catalog_Block_Category_View pour info vu que je veux afficher toutes les marques dans les pages catégories, mais dans un select)

Merci
 
Dernière édition: 16/07/09 à  04:23 Par Jerome38.
L'administrateur a désactivé l'accès public en écriture.
#17070
chip13
Gold Boarder
Messages: 245
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Date anniversaire: 09/09

Re:Obtenir la liste des marques

Il y a 8 Années, 9 Mois
Karma: 1  
Bonjour,

J'essaie de suivre ce tuto. Je voudrait lister un attribut perso nomé "marque"

j'ai donc créé "Marque.php" dans lequel j'ai modifié :
Code :

public function getAllManu()
{
$product = Mage::getModel('catalog/product');
$attributes = Mage::getResourceModel('eav/entity_attribute_collection')
->setEntityTypeFilter($product->getResource()->getTypeId())
->addFieldToFilter('attribute_code', 'marque');
$attribute = $attributes->getFirstItem()->setEntity($product->getResource());
$marque = $attribute->getSource()->getAllOptions(false);
return $marque;
}



Ensuite j'ai créé "marque.phtml" dans lequel j'ai modifié :
Code :

<ul id="marque_list">
<?php foreach ($this->getAllManu() as $marque): ?>
<li><?php echo $marque['label'] ?></li>
<?php endforeach; ?>
</ul>



Mais lorsque j'appelle mon bloc, voici l'erreur qui s'affiche :
public function getAllManu() { $product = Mage::getModel('catalog/product'); $attributes = Mage::getResourceModel('eav/entity_attribute_collection') ->setEntityTypeFilter($product->getResource()->getTypeId()) ->addFieldToFilter('attribute_code', 'marque'); $attribute = $attributes->getFirstItem()->setEntity($product->getResource()); $marque = $attribute->getSource()->getAllOptions(false); return $marque; }
Fatal error: Class 'Mage_Catalog_Block_Product_Marque' not found in C:\wamp\www\magento\app\code\core\Mage\Core\Model\Layout.php on line 462


Quelqu'un peut m'aider svp ?

Merci
 
L'administrateur a désactivé l'accès public en écriture.
#17121
Gabriiiel
I love Magento.
Expert Magento
Messages: 4118
graph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin gabriel.bouhatous Formation Magento Audit Conseil gabriel.bouhatous Ask me :) Lieu: Paris

Re:Obtenir la liste des marques

Il y a 8 Années, 9 Mois
Karma: 112  
Où as-tu placé Marque.php et dans quelles conditions ? ;o
 
Expert Magento @ The e-Commerce Academy

L'administrateur a désactivé l'accès public en écriture.
#17146
chip13
Gold Boarder
Messages: 245
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Date anniversaire: 09/09

Re:Obtenir la liste des marques

Il y a 8 Années, 9 Mois
Karma: 1  
Bonjour Gabriiiel,

J'ai placé "Marque.php" dans app/code/local/Mage/Catalog/Block/Product

Qu'entends-tu par "dans quelles conditions" ?
 
L'administrateur a désactivé l'accès public en écriture.
#17309
Gabriiiel
I love Magento.
Expert Magento
Messages: 4118
graph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin gabriel.bouhatous Formation Magento Audit Conseil gabriel.bouhatous Ask me :) Lieu: Paris

Re:Obtenir la liste des marques

Il y a 8 Années, 9 Mois
Karma: 112  
Ce que tu viens de répondre ;o

Le code n'est peut-être plus fonctionnel mais de ce que je vois il n'arrive juste pas à trouver la class
 
Expert Magento @ The e-Commerce Academy

L'administrateur a désactivé l'accès public en écriture.
Revenir en hautPage: 12
Modérateur: Gabriiiel, ILOA, zuiko