Outils pour utilisateurs

Outils du site


Panneau latéral

ref:core:strategies

Points d'entrée (Stratégies)

Cette page dresse une liste des points d'entrées (stratégies) prévus dans le code pour personnaliser certains comportements.

INFO IMPORTANTE : Cette liste n'est pas exhaustive

Types de points d'entrée

Configuration d'une valeur dans le project.xml

Pour les points d'entrée correspondant à des configurations contenues dans la section config/modules du project.xml, on trouve souvent les valeurs par défaut dans le fichier module.xml du module correspondant. Tout ce qui est contenu dans la section project de ce fichier se retrouvera comme contenu par défaut de la section config/modules/monmodule du fichier project.xml.

Stratégies

Les stratégies sont des points d'entrée où une implémentation par défaut est fournie mais où l'on peut en coder spécifiquement une nouvelle dans le cadre d'un projet. Pour cela il suffit le plus souvent d'ajouter une classe implémentant une certaine interface et d'indiquer à Change d'utiliser celle-ci.

Le choix de la stratégie à utiliser se faut selon les cas dans le fichier project.xml ou bien en la sélectionnant au niveau d'une propriété d'un document.

Exemple de configuration dans le project.xml (cas de la stratégie de formatage de prix) :

<modules>
	<catalog>
		<entry name="priceFormatStrategyClass">monmodule_MaClasse</entry>
	</catalog>
</modules>

Liste des principaux points d'entrée par module

Module Catalogue et boutiques (catalog)

Taille des "chunks" dans la compilation des produits

Type : configuration

Selon le code spécifique et la configuration serveur, on peut avoir besoin d'agir sur la longueur des chunks de la compilation des produits. Cela passe par le fichier project.xml du projet via l'entrée config/modules/catalog/compilationChunkSize (valeur par défaut dans le modules.xml du module catalog).

Gestion des listes de produits favoris et consultés

Type : configuration

La gestion des listes de produits favoris et la liste des derniers produits consultés peuvent être personnalisées dans le fichier project.xml (section config/module/catalog/, valeurs par défaut dans le modules.xml du module catalog).

On peut agir ainsi sur :

  • la manière de stocker la liste (variables productListXxxClass)
  • le fait que la liste soit persistée ou non en base de données entre deux sessions pour les utilisateurs connectés (variables productListXxxPersist)
  • le nombre maximum de produits contenus (variables productListXxxMaxCount)

Formatage des prix

Type : stratégie

Le formatage des prix est géré dans la classe catalog_PriceFormatter (dans modules/catalog/lib/strategies) qui contient l'implémentation par défaut.

Pour utiliser une autre stratégie, indiquer la classe à utiliser (qui doit implémenter l'interface catalog_PriceFormatStrategy) dans le project.xml, entrée config/modules/catalog/priceFormatStrategyClass.

Texte indiquant la disponibilité d'un produit

Type : stratégie

Le texte indiquant la disponibilité d'un produit en fonction de son stock dans la fiche produit et les listes peut être spécialisé est généré par la classe catalog_AvailabilityStrategy (dans modules/catalog/lib/strategies) et l'implémentation par défaut est dans la classe catalog_DefaultAvailabilityStrategy.

Pour utiliser une autre stratégie, indiquer la classe à utiliser (qui doit implémenter l'interface catalog_AvailabilityStrategy) dans le project.xml, entrée config/modules/catalog/availabilityStrategyClass.

Indexation des facettes sur les produits

Type : stratégie

Elle est gérée par la classe catalog_ProductFacetIndexer (dans modules/catalog/lib/strategies) qui contient l'implémentation par défaut.

Pour utiliser une autre stratégie, indiquer la classe à utiliser (qui doit implémenter l'interface catalog_ProductFacetIndexerStrategy) dans le project.xml, entrée config/modules/catalog/productFacetIndexerStrategyClass.

Détermination de la zone courante pour le calcul des taxes

Type : stratégie

Ceci est géré dans le catalog_TaxService qui contient l'implémentation par défaut. Une stratégie spécifique devra simplement implémenter la méthode getCurrentTaxZone avec le profil suivant :

	/**
	 * @param catalog_persistentdocument_shop $shop
	 * @param order_CartInfo $cart
	 * @return string | null
	 */
	public function getCurrentTaxZone($shop, $cart = null)
	{
		// Votre implémentation.
	}

La stratégie à utiliser est à spécifier dans le project.xml, entrée config/modules/catalog/currentTaxZoneStrategyClass.

Module Comptes clients (customer)

Adresse e-mail utilisée lors de l'anonymisation d'un compte client

Type : configuration

Lorsqu'on compte client est anonymisé, on lui affecte une adresse e-mail bidon (le champ e-mail étant obligatoire). Cette adresse peut être configurée via l'entrée config/modules/customer/anonymousEmailAddress du project.xml (valeur par défaut dans le modules.xml du module customer).

Génération des codes clients

Type : stratégie

Le code affecté à un client lors de son inscription est généré dans la classe customer_CustomerService qui contient l'implémentation par défaut.

Pour utiliser une autre stratégie, indiquer la classe à utiliser (qui doit implémenter l'interface customer_CustomerCodeStrategy) dans le project.xml, entrée config/modules/customer/customerCodeStrategyClass.

Module Commandes (order)

Génération de l'expédition par défaut

Type : configuration

Par défaut lorsqu'une commande des payée, on génère une expédition contenant l'ensemble des produits de la commande. Dans le cas où l'on est synchronisé avec un ERP, on peut vouloir lui déléguer le pilotage de la génération des expéditions.

Pour débrayer la génération automatique, indiquer false dans l'entrée config/modules/order/generateDefaultExpedition du project.xml (valeur par défaut dans le modules.xml du module order).

Délai avant annulation d'une facture en état DRAFT

Type : configuration

Lorsque l'on valide la commande, avant d'aller sur le formulaire de paiement de la banque, un document facture (modules_order/bill) est créé en état DRAFT. Elle reste dans cet état jusqu'à ce qu'elle soit payée ou annulée. Les factures en état DRAFT sont automatiquement annulées passé un certain délai.

Ce adresse peut être configurée via l'entrée config/modules/order/maxDraftBillAge du project.xml (valeur par défaut dans le modules.xml du module order).

Génération des numéros de commande

Type : stratégie

Le numéro affecté à une nouvelle commande est généré dans la classe order_OrderNumberGenerator qui contient l'implémentation par défaut.

Pour utiliser une autre stratégie, indiquer la classe à utiliser (qui doit implémenter l'interface order_OrderNumberStrategy) dans le project.xml, entrée config/modules/order/orderNumberStrategyClass.

Génération des numéros de facture

Type : stratégie

Le numéro affecté à une facture commande est généré dans la classe order_BillNumberGenerator qui contient l'implémentation par défaut.

Pour utiliser une autre stratégie, indiquer la classe à utiliser (qui doit implémenter l'interface order_BillNumberStrategy) dans le project.xml, entrée config/modules/order/billNumberStrategyClass.

Génération des numéros d'expédition

Type : stratégie

Le numéro affecté à une facture commande est généré dans la classe order_ExpeditionNumberGenerator qui contient l'implémentation par défaut.

Pour utiliser une autre stratégie, indiquer la classe à utiliser (qui doit implémenter l'interface order_ExpeditionNumberStrategy) dans le project.xml, entrée config/modules/order/expeditionNumberStrategyClass.

Génération des numéros d'avoir

Type : stratégie

Le numéro affecté à une facture commande est généré dans la classe order_CreditNoteNumberGenerator qui contient l'implémentation par défaut.

Pour utiliser une autre stratégie, indiquer la classe à utiliser (qui doit implémenter l'interface order_CreditNoteNumberStrategy) dans le project.xml, entrée config/modules/order/creditNoteNumberStrategyClass.

Stratégie d'application des frais

Type : stratégie

La méthode de calcul et d'application des frais peut être sélectionnée sur la propriété “Action des frais” du document frais. Plusieurs stratégies sont disponibles par défaut.

Pour déclarer une nouvelle stratégie, il faut :

  • créer la classe implémentant l'interface order_FeesApplicationStrategy (une implémentation de base order_BaseFeesApplicationStrategy implémentant une partie des méthodes est également disponible)
  • décrire le panneau de configuration de la stratégie (à placer dans le dossier lib/strategies du module et à nommer comme la stratégie)
  • ajouter la stratégie dans la liste statique modules_order/feesstrategy

Exemples : les stratégies order_CartPriceShippingStrategy et order_DefaultShippingStrategy dans le module order.

ref/core/strategies.txt · Dernière modification: 2017/01/19 14:54 (modification externe)