RSS
 

Archives de la catégorie ‘Magento’

Snippet d’insertion de bloc

24 juin

Chemin d’une image

<?php echo $this->getSkinUrl('images/mon-image.png'); ?>

Insérer un bloc statique dans un fichier .phtml

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('11')->toHtml()  // 11 est l'id du bloc à afficher ?>

Insérer un fichier .phtml dans une page cms

{{block  type="core/template" template="chemin/mapage.phtml"}}

Insérer une page .phtml dans une autre  page

<?php echo $this->getChildHtml('newsletter') ?>
 
 

Snippets avec les fichiers layout de Magento

24 juin

Insérer la newsletter

<reference name="left">
<block type="newsletter/subscribe" name="right.newsletter" template="newsletter/subscribe.phtml"/>
</reference>

Sortir ou désactiver un bloc

<remove name="catalog.compare.sidebar" />

Insérer une page CMS

<block type="cms/block" name="nom-de-ma-page" after="catalog.leftnav">
<action method="setBlockId"><block_id>nom-de-mon-bloc</block_id></action>
</block>

Positionner un bloc

pour mettre le bloc après un autre, on utilise after= »nom-du-bloc-précédent » :

<block type="cms/block" name="mon-bloc" after="nom-du-bloc-precedent">

pour mettre le bloc avant un autre, on utilise before= »nom-du-bloc-suivant » :

<block type="cms/block" name="mon-bloc" before="nom-du-bloc-suivant">

pour mettre le bloc en dernière position, on utilise after= »- » :

<block type="cms/block" name="mon-bloc" after="-">

pour mettre le bloc en première position, on utilise before= »- » :

<block type="cms/block" name="mon-bloc" before="-">

Insérer un script

<reference name=”head”>
<action method=”addJs”><script>scriptaculous/scriptaculous.js</script></action>
<action method=”addJs”><script>varien/product.js</script></action>
</reference>

Limiter le nombre de résultats dans une page liste

<action method="setDefaultListPerPage"><limit>4</limit></action>
<action method="setDefaultGridPerPage"><limit>9</limit></action>

handles layout xml  : pages configurables disponibles

default
catalog_category_default    (* aussi utilisé dans directory.xml)
catalog_category_layered    (* aussi utilisé dans directory.xml)
catalog_product_compare_index
catalog_product_gallery
catalog_product_send
catalog_product_view   (* aussi utilisé dans customeralert.xml, tag.xml)
catalog_seo_searchterm_popular
catalog_seo_sitemap_category
catalog_seo_sitemap_product

catalogsearch_advanced_form
catalogsearch_advanced_result
catalogsearch_result_index
catalogsearch_term_popular

checkout_cart_index      (* aussi utilisé dans googlecheckout.xml, paypal.xml)
checkout_multishipping
checkout_multishipping_address_editaddress
checkout_multishipping_address_editbilling
checkout_multishipping_address_editshipping
checkout_multishipping_address_newbilling
checkout_multishipping_address_newshipping
checkout_multishipping_address_select
checkout_multishipping_address_selectbilling
checkout_multishipping_addresses
checkout_multishipping_billing
checkout_multishipping_customer_address
checkout_multishipping_login
checkout_multishipping_overview
checkout_multishipping_register
checkout_multishipping_shipping
checkout_multishipping_success
checkout_onepage_additional
checkout_onepage_index
checkout_onepage_progress
checkout_onepage_review
checkout_onepage_shippingmethod
checkout_onepage_success

cms_index_defaultindex
cms_index_defaultnoroute

customer_account            (* aussi utilisé dans newsletter.xml, review.xml, sales.xml, wishlist.xml)
customer_account_create
customer_account_edit
customer_account_forgotpassword
customer_account_index      (* aussi utilisé dans catalog.xml, newsletter.xml, poll.xml, review.xml, sales.xml, tag.xml, wishlist.xml)
customer_account_login
customer_address_form
customer_address_index
customer_logged_in
customer_logged_out
customer_account_logoutsuccess

giftmessage_index_edit
giftmessage_index_save
giftmessage_index_remove

newsletter_manage_index

paypal_express_review
paypal_express_review_details

print

review_customer_index
review_customer_view
review_product_list
review_product_view
reviews

sales_order_details
sales_order_history
sales_order_print
sales_order_view

shipping_tracking_ajax

tag_customer_index
tag_customer_edit
tag_customer_view
tag_list_index

wishlist_index_index

 
 

Séparer les attributs dans leurs groupes respectifs sur la vue produit (fiche produit)

23 juin


On souhaite afficher sur la vue produit en séparant les attributs dans leurs groupes respectifs

Par exemple, j’ai beaucoup d’attributs pour décrire mon produit. J’ai regroupé ces attributs en sous-groupe dans le back-office.
Groupe d'attributs dans l'admin

Sur le front office je ne souhaite pas que mes attributs soient affichés les uns à la suite des autres.
Je veux que les sous-groupes d’attributs soient séparés comme ceci :
Attributs groupés sur le front
Pour cela, il suffit de modifier le fichier mon-theme/template/catalog/product/view/attributes.phtml, avec le code suivant :

<?php
$_helper = $this->helper('catalog/output');
$_product = $this->getProduct();

$attributes_by_groups = array();
$group_names = array();
$group_ids = array();

$attributes = $_product->getAttributes();
$attribute_set = Mage::getModel('eav/entity_attribute_set')->load( $_product->getAttributeSetId() );
$attribute_set_Id = $attribute_set->getAttributeSetId();
$attribute_set_Name = $attribute_set->getAttributeSetName();

foreach ($attributes as $attribute) {

if ($attribute->getIsVisibleOnFront() && $attribute->getIsUserDefined()) {
$group_id = $attribute->getData('attribute_set_info/' . $_product->getAttributeSetId() . '/group_id');

if (!in_array($group_id, $group_ids)) {
array_push($group_ids, $group_id);
}

if ( !isset($group_names[$group_id]) ) {
$group_model = Mage::getModel('eav/entity_attribute_group');
$group_model->load($group_id);

$group_names[$group_id] = $group_model->getAttributeGroupName();
}
}
}
?>
<?php if($_additional = $this->getAdditionalData()): ?>

<?php foreach ($group_ids as $group_id): ?>

<?php $group_name = $group_names[$group_id];
$exclAttr_Arr = array();
foreach ($attributes as $attribute){
if (!(($attribute->getAttributeGroupId()) == $group_id)){
array_push($exclAttr_Arr, ($attribute->getAttributeCode()));
}
} ?>

<?php $_additional = $this->getAdditionalData($exclAttr_Arr);?>
<div>
<h2><?php echo $group_name;?></h2>
<table id="product-attribute-specs-table">
<col width="25%" /><col />
<tbody>
<?php foreach ($_additional as $_data): ?>
<tr>
<th><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
<td><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<script type="text/javascript">decorateTable('product-attribute-specs-table')</script>
</div>
<?php endforeach; ?>

<?php endif;?>
 
 

Les attributs dans Magento

23 juin

Insertion de blocs statiques en fonction de la valeur de l’attribut dans la page attribute.phtml

<?php if ($_product->getData('MON-ATTRIBUT')): ?>
<?php $_valeur_attribut= $_product->getResource()->getAttribute('MON-ATTRIBUT')->getFrontend()->getValue($_product); ?>
<?php if (($_valeur_attribut=='valeur1') or ($_valeur_attribut=='valeur2')){
echo $this->getLayout()->createBlock('cms/block')->setBlockId('mon-bloc1')->toHtml()
; }
else {
echo $this->getLayout()->createBlock('cms/block')->setBlockId('mon-bloc-alternatif')->toHtml()
; } ?>
<?php endif; ?>

Action if et else sur les attributs

<?php if ($_product->getData('MON-ATTRIBUT')): ?>
<?php $_mon_attribut= $_product->getResource()->getAttribute('MON-ATTRIBUT')->getFrontend()->getValue($_product); ?>

<?php if ($_mon_attribut==”valeur”): ?><p>Si mon attribut est égal à valeur alors j'affiche le lien <a href=”/radio-tuner.html” title=”Radio Tuner”>HD Radio</a>

Afficher l’attribut dans le fichier template/catalog/product/list.phtml

<?php echo $this->htmlEscape($_product->getData('MON-ATTRIBUT')); ?>

Afficher l’attribut dans le fichier template/catalog/product/view.phtml

<?php echo $_product->getResource()->getAttribute('MON-ATTRIBUT')->getFrontend()->getValue($_product) ?>
<?php echo $_product->getAttributeText('MON-ATTRIBUT') ?>

Afficher la quantité

$_product->getStockItem()->getQty()