Mises à jour Hikashop et fichiers surchargés

  • Posts: 462
  • Thank you received: 18
  • Hikashop Business
1 year 3 months ago #353886

-- HikaShop version -- : 4.7.4
-- Joomla version -- : 4.3.3
-- PHP version -- : 8.1.16

Bonjour,
concernant les mises à jour d’Hikashop et puisque j’ai effectué pas mal de surcharges sur certaines vues, comment interpréter et pouvoir comparer les mises à jour des fichiers surchargés?

Prenons comme exemple la dernière mise à jour d’Hikashop et la liste des fichiers modifiés (liste reprise sur Pastebin):

back/classes/filter.php
back/classes/order.php
back/classes/user.php
back/helpers/paymentplugin.php
back/inc/expression.php
back/views/order/view.html.php
front/controllers/cart.php
front/controllers/order.php
front/views/cart/tmpl/show.php
front/views/category/view.html.php
front/views/order/tmpl/listing.php
front/views/product/tmpl/add_to_cart_ajax.php
front/views/product/view.html.php
plugins/plg_hikashop_userpoints/userpoints.php
plugins/plg_hikashoppayment_paypalcheckout/paypalcheckout.php
plugins/plg_hikashoppayment_paypalcheckout/paypalcheckout_end.php

Me concernant, seules les vues en front-end on été modifiés.
Si prends le fichier à la ligne 9 (front/views/cart/tmpl/show.php), est ce bien le fichier show de la vue cart en front-end? Comment procéder?

Je pense à cette méthode:
Avant la mise à jour je télécharge le fichier concerné sur mon bureau (components/com_hikashop/views/cart/tmpl/show.php) et je le compare avec la nouvelle version concernée, ensuite je copie et colle le code modifié dans mon fichier surchargé une fois la mise a jour effectuée.

Est-ce la meilleure méthode à suivre ou conseillez-vous une autre approche?

... par contre je ne comprends pas les fichiers appartenant à une vue (comme par exemple cart/view.html.php, category/view.html.php, checkout/view.html.php, ...) qui ne sont pas dans un dossier tmpl, à quoi se réfèrent-ils?

Merci!
Lorenzo

Please Log in or Create an account to join the conversation.

  • Posts: 82863
  • Thank you received: 13372
  • MODERATOR
1 year 3 months ago #353894

Bonjour,

Si vous modifiez les fichiers de vue via le menu Display>Views, alors vos modifications sont sauvegardées dans le dossier templates/YOUR_TEMPLATE/html/com_hikashop/
Donc si vous avez modifié le fichier components/com_hikashop/views/cart/tmpl/show.php via l'interface, vous avez maintenant le fichier templates/YOUR_TEMPLATE/html/com_hikashop/cart/show.php avec vos modifications et c'est ce fichier qui est utilisé par HikaShop, alors que le fichier components/com_hikashop/views/cart/tmpl/show.php est maintenant ignoré.

Si vous faites la mise à jour d'HikaShop sans rien faire au préalable, vous aurez une nouvelle version de components/com_hikashop/views/cart/tmpl/show.php mais HikaShop utilisera toujours votre override dans templates/YOUR_TEMPLATE/html/com_hikashop/cart/show.php
Dans la très grande majorité des cas, la mise à jour sera indolore car nous essayons d'avoir autant que possible une rétrocompatibilité avec les anciennes vues. Il est possible que dans certains cas, une mise à jour requiert la mise à jour de la vue. Dans ce cas, vous pouvez comparer le fichier original de la dernière version avec celui de votre override.
Donc si vous voulez vous simplifier la tâche, il n'est pas forcément nécessaire de vérifier chaque override à chaque fois car dans la très grande majorité des cas, cela fonctionnera sans rien faire. C'est justement le but des overrides de vue.
Après, vous pouvez aller plus loin pour minimiser les problèmes potentielles.
Au lieu de simplement modifier le code de la vue directement, vous pouvez supprimer tout le code de l'override faire quelque chose comme cela:

<?php

// ici vous pouvez dynamiquement modifier les variables dans $this qui seront ensuite utilisées par la vue par défaut

// appel du fichier de vue original
ob_start();
include_once(JPATH_ROOT.'/components/com_hikashop/views/cart/tmpl/show.php');
$html = ob_get_clean();

// remplacement dans l'html avec str_replace ou preg_replace

// affichage de l'html
echo $html;
Ainsi, vous pouvez faire des overrides qui prendrons automatiquement en compte les modifications que nous apporterons aux vues dans le futur. Cela réduira d'autant plus la probabilité qu'il faille refaire le code de l'override dans le futur.

Les fichiers view.html.php sont là où les données utilisées dans les vues sont chargées depuis la base de données. Dans votre fichier show.php tout ce qui utilise $this vient du view.html.php

Please Log in or Create an account to join the conversation.

  • Posts: 462
  • Thank you received: 18
  • Hikashop Business
1 year 3 months ago #353903

Bonjour Nicolas et merci pour cette réponse détaillé, tout est clair sauf peut-être la dernière partie où vous utilisez l’exemple qui consiste à remplacer le code de l’override et le remplacer avec le nouveau code, c’est peut-être un peu trop poussé pour mes modestes compétences de codage…
Si vous avez l’envie et surtout le temps de me faire un exemple plus concret sinon j’en resterai avec mes vues modifiées. Merci.

Please Log in or Create an account to join the conversation.

Time to create page: 0.053 seconds
Powered by Kunena Forum