Personnalisation des champs de la vue adresse avec une règle conditionnelle ?

  • Posts: 211
  • Thank you received: 9
4 years 1 month ago #324719

-- HikaShop version -- : 4.4.0
-- HikaMarket version -- : 3.1.1
-- Joomla version -- : 3.9.22
-- PHP version -- : 7.2.33

Bonjour,
(c'est Marc)
Je me permets de poster une question sur l'affichage conditionnelle dans les vues Hikashop.

Dans la vue address / address_template.php, j'ai le code suivant :

{address_company}
{address_title} {address_firstname} {address_lastname}
{address_street}
{address_post_code} {address_city} {address_state}
{address_country}
{address_vat}

Actuellement si address_company est vide, cela ajoute une ligne blanche dans le rendu (ecran, email).

Je souhaiterais pouvoir ajouter une regle conditionnelle pour ne pas afficher la ligne blanche si pas de donnée, du genre :
si address_company n'est pas vide alors l'afficher, sinon ne pas l'afficher

Est-ce que vous pourriez m'indiquer l'objet PHP a manipuler pour acceder a cette donnée ?
(j'ai essayé avec $this->order, $this->params->toArray(), $this->fields, $this->extraData, sans succès)

Je précise que cette vue est utilisée à la fois pour mon vendeur (hikamarket) et le client (hikashop), et j'ai l'impression que selon le contexte, ce ne sont pas les mêmes objets qui sont peuplés !?

Merci pour votre aide.

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

  • Posts: 82867
  • Thank you received: 13373
  • MODERATOR
4 years 1 month ago #324742

Bonjour,

Par défaut, le code du format d'adresse est:

{address_company}
{address_title} {address_firstname} {address_lastname}
{address_street}
{address_post_code} {address_city} {address_state}
{address_country}
<?php if(!empty($this->address->address_telephone)) echo JText::sprintf('TELEPHONE_IN_ADDRESS','{address_telephone}');?>
Le texte avec le numéro de téléphone n'est affiché que si le numéro de téléphone est fourni dans l'adresse.
Donc il suffit de faire la même chose avec address_company.

The following user(s) said Thank You: NosyWeb

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

  • Posts: 211
  • Thank you received: 9
4 years 1 month ago #324932

Merci pour cette explication.
J'ai effectivement repéré ce code conditionnel pour le telephone ...
mais bizarrement, j'ai l'impression qu'il ne marche pas !?
Du moins, pas tant tous les cas ... notamment quand on souhaite afficher le address_template d'un vendeur Hikamarket !

Peut-etre car l'objet $this->address n'est pas peuplé de la même facon pour un vendeur Hikamarket ?
J'ai notamment remarqué cela dans une commande de l'espace d'un vendeur et aussi quand on clique sur le bouton [Facture] de ce même écran !

J'ai essayé avec address_company, je n'ai jamais rien que ce soit pour une adresse vendeur ou cliente (voir piece jointe d'une facture) :

{address_company}</b>{address_title} {address_firstname} {address_lastname}
{address_street}
{address_post_code} {address_city} {address_state}
<?php if(!empty($this->address->address_telephone)) echo JText::sprintf('TELEPHONE_IN_ADDRESS','{address_telephone}');?>
address_company : <?= $this->address->address_company ?>

Savez vous-quel objet je peux interroger dans ce address_template pour savoir si l'adresse qu'y est affiché est celle d'un vendeur ou celle d'un client ?

Merci

Attachments:

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

  • Posts: 26158
  • Thank you received: 4028
  • MODERATOR
4 years 1 month ago #324938

Bonjour,

Vous trouverez le code qui s'occupe de surcharger l'adresse sur une facture dans le helper show/order_backend.
Vous pouvez recherche le code suivant dans le fichier :

$params = null; $js = null;
$html = hikamarket::getLayout('shop.address', 'address_template', $params, $js);
La vue "address_template" est chargée sans paramètres ; il devrait être possible de fournir un $params avec une entrée "address" pour que les données arrivent jusqu'à la vue.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

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

  • Posts: 211
  • Thank you received: 9
4 years 1 month ago #324975

Hello Jerome,

Ok, je pense avoir compris pour la manip a faire (le hack).
j'ai essayé d'init $params avec des propriétés objet ... ou des entrées de tableaux, mais rien n'y fait ...
en tout cas quand j'affiche une facture dans l'espace vendeur en front, je n'ai rien dans $this->params !

/administrator/components/com_hikamarket/helpers/shop/order_backend :

                // hack NWD
                $params = new stdClass();
                $params->siret = "635745435463";                 
		hikamarket::getLayout('shop.address', 'address_templat', $params, $js);

puis dans la vue address / address_template.php de mon template :
var_dump($this->params);
?>
{address_post_code} {address_city} {address_state}
<?php if($this->params->siret) : ?>
SIRET : <?= $this->params->siret ?>
<?php endif; ?>

$this->params est vide !
Une idée ? a 1ere vue, le script order_backend ne semble pas le bon pour l'ecran Facture d'un vendeur en front !?
(si je commente "// hikamarket::getLayout('shop.address', 'address_templat', $params, $js);" , ca ne change rien !)

Last edit: 4 years 1 month ago by NosyWeb.

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

  • Posts: 26158
  • Thank you received: 4028
  • MODERATOR
4 years 1 month ago #325010

Bonjour,

Alors je ne vois pas de quelle vue (finale) vous faites références si ce n'est pas lié à "order_backend".
La surcharge de l'adresse par celle du vendeur est gérée par cette classe avec le

$view->store_address = ...
Pour remplacer l'adresse de la boutique par celle qui vient d'être générée pour le vendeur.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

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

Time to create page: 0.072 seconds
Powered by Kunena Forum