Je gère un site Joomla 3.7.3 qui utilise le module com_contact par défaut pour afficher une page de contact. J'essaie d'afficher des informations de base sur nos activités, adresses, e-mail, téléphone, etc. Ce qui est étrange, c'est que les informations relatives à l'adresse sont correctement enregistrées dans le contact sélectionné, à la fois dans la page de contact et dans les options globales. paramètres de champ d'adresse à afficher. Mon code HTML com_contact dans le modèle n’a pas été modifié. Je ne suis donc vraiment pas sûr de ce qui se passe.
En regardant la source html, il semblerait que le php vérifie si le contact a une adresse:
<?php if (($this->params->get('address_check') > 0) &&
($this->contact->address || $this->contact->suburb || $this->contact->state || $this->contact->country || $this->contact->postcode)) : ?>
Cela devrait retourner vrai, mais ce n'est pas le cas. La section d'adresse n'est pas incluse dans le code HTML chargé dans la page, il s'agit uniquement d'un commentaire d'espace réservé html indiquant l'emplacement de la section d'adresse.
J'ai essayé cela avec plusieurs contacts, mais je n'ai pas encore trouvé de combinaison qui fonctionne. Donc, 1) le contact a des détails d'adresse sauvegardés; 2) Les options de la page de contact sont définies pour afficher les champs d'adresse. 3) Les paramètres globaux sont configurés pour afficher les champs d'adresse; 4) Le modèle com_contact par défaut n'est pas modifié.
Alors, pourquoi Joomla ne reconnaît-il pas les adresses?
UPDATE Donc, j'ai un peu expérimenté et il semble n'y avoir que les champs d'adresse (adresse, ville/banlieue, état, code postal et pays) . Donc, je commence à croire que c'est quelque chose qui se gâche en interne, soit dans le modèle, soit ailleurs. Je soupçonne que la fonction address_check est en quelque sorte en échec, mais je n'ai pas les côtelettes de code pour déboguer ceci.
En fait, ma solution initiale était juste une solution rapide. Cela ne semblait pas correct, car il vérifie uniquement le paramètre spécifique show_street_address
.
Joomla fait probablement une autre vérification pour savoir si l'adresse doit être affichée ou non, et c'est avec le paramètre address_check
- mais ceci est manquant, donc toujours par défaut à faux.
Il s'agit d'un bogue signalé et un correctif officiel disponible sera inclus dans les prochaines versions.
Afin de résoudre ce problème:
edit: composants/com_contact/views/contact/view.html.php ligne # 335
de
$this->params = &$params;
changer à:
$this->params = &$item->params;
Je confirme qu'il y a un problème avec le modèle d'adresse.
Essayez ce qui suit et voyez s’il résout le problème pour vous.
Créez un remplacement de modèle pour le modèle com_contact
-> contact
-> default_address.php
Dans le dossier html de votre modèle.
Créez le code HTML et toute la chaîne de dossiers s'ils n'existent pas, puis copiez-collez-y le fichier default_address.php
De components/com_contact/views/contact/tmpl/
.
Ouvrez le fichier copié et modifiez-le à la ligne 18 environ:
<?php if (($this->params->get('address_check') > 0) &&
changez le en:
<?php if (($this->params->get('show_street_address') > 0) &&
Enregistrez le fichier et testez.
Pour confirmer que votre remplacement de modèle fonctionne, vous pouvez ajouter du texte brut ou du HTML avant toute instruction if php, juste au-dessus de (~ ligne # 17)
<dl class="contact-address dl-horizontal" itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">