Demandes d'évolutions : Module order/shortcart -> compteur de cartLine au lieu du nombre total de produit

  • 56681.1

    03/04/2012 14:39


    Mathias
    Rang : Expert
    Dans le block order/shortcart, le compteur de produit est en fait un compteur de ligne produit et non un compteur du nombre d'articles dans le panier.

    Du coup, si je choisi un article, et que j'en prend en quantité x10, je n'ai toujours qu'un article comptabilisé dans mon block shortcart... ce qui est peut être confusant dans l'esprit du client.

    J'ai regardé sur différentes boutiques (fnac.com / amazon), et c'est bien le comportement que j'attends et non celui de Change.

    So... volonté réelle côté Change de fonctionner ainsi ou soucis de conception ?

    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
  • 56681.2 en réponse à 56681.1 écrit par Mathias

    04/04/2012 15:13


    Jean-Michel
    Titre : Community Manager
    Rang : Expert
    Bonjour,

    Pour le moment il n'existe rien pour permettre ce comportement.
    Le conseil que je pourrais donner serait de prendre le template du bloc le copier dans l'arborescence override et de remplacer
    <tal:block tal:replace="cart/getCartLineCount" />

    par quelque chose du type :
    ${php: project_CartHelper::getCartItemsCount()}


    Ce qui a pour effet d'appeler la méthode "getCartItemsCount" de ma classe helper "project_CartHelper" qui aura pour rôle de calculer le nombre de d'éléments dans mon panier, à partir des quantités des order_CartLineInfo du panier (méthode getQuantity).

    Pour une meilleure réponse, pensez à indiquer la version sur laquelle vous rencontrez des difficultés, ainsi que son type (CMS ou eCommerce core).
    Pour tout problème d'installation indiquez le nom de l'hébergeur et s'il s'agit d'un serveur mutualisé ou dédié.
  • 56681.3 en réponse à 56681.2 écrit par Jean-Michel

    12/04/2012 12:01


    Mathias
    Rang : Expert
    je vais tenter la chose !
    penses tu que ce sujet devrait être déplacer dans les demandes d'évolutions ?

    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
  • 56681.4 en réponse à 56681.3 écrit par Mathias

    12/04/2012 12:12


    Jean-Michel
    Titre : Community Manager
    Rang : Expert
    J'ai effectivement déplacé le sujet dans le forum des demandes d'évolutions, j'avoue que je l'avais déjà noté comme tel dans notre backlog interne ;).

    Édité par Jean-Michel 12/04/2012 12:12


    Pour une meilleure réponse, pensez à indiquer la version sur laquelle vous rencontrez des difficultés, ainsi que son type (CMS ou eCommerce core).
    Pour tout problème d'installation indiquez le nom de l'hébergeur et s'il s'agit d'un serveur mutualisé ou dédié.
  • 56681.5 en réponse à 56681.4 écrit par Jean-Michel

    17/04/2012 15:55


    Mathias
    Rang : Expert
    Bon ben je viens demander un peu d'aide car j'y arrive pas :(

    voici ce que j'ai fait (je donne mon code à un instant T mais j'ai fait pas mal de tests...non concluants) :
    Template de block Shortcart :
    <tal:block tal:define="cartItemCount php: monprojet_CartHelper::getCartItemsCount()" />
    <tal:block tal:content="cartItemCount" />


    Class monprojet_cartHelper :
    class monprojet_CartHelper
    {
    	public function getCartItemsCount()
    	{
    		$cs = order_CartService::getInstance();
    		if($cs->hasCartInSession())
    		{
    			$cartLines = $cs->getDocumentInstanceFromSession()->getCartLineArray();
    			foreach ($cartLines as $cartLine)
    			{
    				$quantity[] = order_CartLineInfo::getQuantity();
    			}
    			return $quantity;
    		}
    	}
    }
    


    je sens que je ne suis pas loin mais en vain... :)
    help ! ;)

    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
  • 56681.6 en réponse à 56681.5 écrit par Mathias

    18/04/2012 18:14


    Mathias
    Rang : Expert
    Merci pour tes indications Jean Michel ;)

    voici le code du template optimisé :
    <tal:block tal:content="php:myproject_CartHelper::getCartItemsCount()" />
    <tal:block tal:condition="php: myproject_CartHelper::getCartItemsCount() == 1" change:translate="modules.order.frontoffice.item" />
    <tal:block tal:condition="php: myproject_CartHelper::getCartItemsCount() gt 1" change:translate="modules.order.frontoffice.items" />

    voici le code php qui fonctionne bien mieux :
    class myproject_CartHelper
    {
    	public function getCartItemsCount()
    	{
    		$cs = order_CartService::getInstance();
    		if($cs->hasCartInSession())
    		{
    			$cartLines = $cs->getDocumentInstanceFromSession()->getCartLineArray();
    			foreach ($cartLines as $cartLine)
    			{
    				$quantity += $cartLine->getQuantity();
    			}
    			return $quantity;
    		}
    	}
    }


    (je me suis inspiré du commit 3.6 aussi faut dire :p)

    merci !

    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
 
Merci de prendre connaissance et de respecter les règles des forums.
 
1457 membres
Aucun membre connecté