Cette page dresse une liste des points d'entrées (stratégies) prévus dans le code pour personnaliser certains comportements.
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
.
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>
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
).
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 :
productListXxxClass
)productListXxxPersist
)productListXxxMaxCount
)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
.
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
.
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
.
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
.
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
).
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
.
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
).
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
).
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
.
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
.
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
.
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
.
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 :
order_FeesApplicationStrategy
(une implémentation de base order_BaseFeesApplicationStrategy
implémentant une partie des méthodes est également disponible)modules_order/feesstrategy
Exemples : les stratégies order_CartPriceShippingStrategy
et order_DefaultShippingStrategy
dans le module order.