Freelance Magento Toulouse – Entrepreneur
Dans: Magento
26 août 2009Quand on lie un bloc statique à une catégorie [voir article : Ajouter des blocs statiques dans Magento], et que l’on duplique le fichier list.phtml, il existe un bug tout à fait normal de pagination.
Prenons un exemple, sur votre page d’accueil :
Cela est dû à un problème de SESSION, vu que notre list_accueil.phtml est une copie de list.phtml. Quand nous changeons notre tri par 9, une variable commune à tout le site est changée.
Le tout est donc de changer cette variable de SESSION uniquement sur la page d’accueil.
En affichant nos variables de SESSION :
<?php print_r($_SESSION); ?>
On repère la variable : $_SESSION['catalog']['limit_page']
Les variables de SESSION étant à manipuler avant toute sortie, il convient de faire les modification avant la balise <html>.
<?php if (!isset ($_SESSION['catalog']['limit_page'])) $_SESSION['catalog']['limit_page'] = 9; // On stocke l'ancienne valeur de session pour la restaurer à la fin de la page $tmpSessionLimitPage = $_SESSION['catalog']['limit_page']; $_SESSION['catalog']['limit_page'] = 'all'; ?>
<?php $_SESSION['catalog']['limit_page'] = $tmpSessionLimitPage; ?>
Si notre page d’accueil utilise 3columns.phtml (par exemple), il faut mettre une condition pour les passages évoqués en 1) pour déterminer si nous nous trouvons sur la page d’accueil.
Note : J’ai choisi ici 3columns.phtml. Vous l’utilisez uniquement si votre page d’accueil possède ce template là. Pas la peine de le faire pour chaque template. Votre page d’accueil une fois le design fixé, ne changera plus.
<?php
// Si on se trouve sur la page d'accueil
if ($this->helper('core/url')->getCurrentUrl() == Mage:: getBaseUrl (Mage_Core_Model_Store:: URL_TYPE_WEB))
{
if (!isset ($_SESSION['catalog']['limit_page']))
$_SESSION['catalog']['limit_page'] = 9;
// On stocke l'ancienne valeur de session pour la restaurer à la fin de la page
$tmpSessionLimitPage = $_SESSION['catalog']['limit_page'];
$_SESSION['catalog']['limit_page'] = 'all';
}
?>
<?php
// Si on se trouve sur la page d'accueil
if ($this->helper('core/url')->getCurrentUrl() == Mage:: getBaseUrl (Mage_Core_Model_Store:: URL_TYPE_WEB))
{
$_SESSION['catalog']['limit_page'] = $tmpSessionLimitPage;
}
?>
// Si on se trouve sur la page d'accueil
if ($this->helper('core/url')->getCurrentUrl() == Mage:: getBaseUrl (Mage_Core_Model_Store:: URL_TYPE_WEB))
{
Je m'appelle Frédéric Martinez.
Je suis Freelance Magento et anciennement étudiant en Master MIAGE à Toulouse.
Ce site présente mon CV ainsi que mes réalisations professionnelles, personnelles et universitaires.