Comment créer un footer de blog dans Joomla 4 ?

Comment créer un footer de blog efficace dans Joomla 4 ?

Après des années à travailler en tant que webmaster, j'ai découvert un secret: un bon site Web est toujours en construction.
Eh oui, il y a toujours quelque chose à améliorer, toujours quelque chose à ajouter sur un site Web et vous devez être prêt à cela.

Quelques jours seulement après avoir mis en ligne la cinquième version de mon site, j'ai eu envie d'améliorer le footer des articles de mon blog avec deux nouvelles fonctionnalités:

  • Ajouter un formulaire d'abonnement à une newsletter parce que je prévois de partager certains contenus spécifiques avec mes abonnés,
  • Une biographie d'auteur multilingue parce que cette biographie doit logiquement s'afficher dans la même langue que celle de l'article.

Logiquement un footer de blog permet au lecteur de contacter l'auteur et/ou le blog en réaction avec l'article qu'il vient de lire. Pour cela, on va lui proposer de s'abonner à une newsletter, de contacter l'auteur, de poster un commentaire et lui recommander de lire d'autres articles en rapport avec celui qu'il vient de lire.
Pour faire court, voici le footer de blog que vous serez capable de réaliser grâce à ce tutoriel Joomla 4 :

Comment créer un joli footer de blog dans Joomla 4 ?

Comme toujours pour atteindre cet objectif ambitieux, nous allons essayer d'utiliser le plus possible les fonctions natives de Joomla parce que comme le disait Colin Chapman, Ce qui est léger est bien (Light is right) et parce que créer quelque chose de nouveau est bien plus motivant intellectuellement que d'installer plusieurs extensions en quelques clics.

Pour que ce tutoriel soit plus simple à suivre, je vous recommande de créer d'abord un article pour chaque langue de votre site et de les associer ensemble. Ainsi, vous pourrez suivre plus facilement chaque étape et contrôler que tout est conforme en frontend.

La partie abonnement à la newsletter

Pour cette partie et parce que je prévois d'envoyer des newsletters à mes abonnés, j'ai installé la version gratuite d'AcyMailing. Si vous avez besoin de plus de fonctionnalités, les versions pro d'Acymailing sont probablement les meilleures options à considérer dans l'écosystème Joomla.

Une fois qu'AcyMailing est installé, créez une liste pour chaque langue. Dans mon cas, j'ai créé 2 listes car j'enverrai une newsletter en français à mes abonnés français et une en anglais à mes lecteurs internationaux.

Listes Acymailing Joomla 4
Listes AcyMailing

Maintenant, vous pouvez créer vos modules AcyMailing (un par langue, comme expliqué précédemment). Dans les paramètres, sélectionnez la liste que vous venez de créer en fonction de la langue et n'oubliez pas d'affecter vos modules aux les langues appropriées dans les paramètres.

Module Acymailing Joomla 4
Paramètres module AcyMailing

Par défaut, le champs Nom est sélectionné dans les champs à afficher. Si vous ne souhaitez pas afficher ce champs en frontend, vous pouvez le désélectionner facilement en faisant CTRL (ou command sur Mac) sur votre clavier et en cliquant sur Nom.

Une fois que vous avez terminé, vous devez avoir créé un module Acymailing par langue:

Modules Acymailing Joomla 4
Modules Acymailing

Le dernier point ici concerne l'affichage en frontend. J'ai créé un module personnalisé pour chaque langue avec des classes Bootstrap et des classes CSS personnelles pour obtenir l'affichage frontal souhaité. Bien entendu, vous pouvez copier/adapter ces classes CSS (c'est open source) ou créer votre mise en forme en fonction de vos besoins.

mx-auto w-90 text-center bg-ciel py-5 g-0 my-5 border rounded-3 d-none d-md-block

Ces modules ne font que mettre en forme et afficher les modules Acymailing grâce à {loadmoduleid xxx}.

Le contenu de chaque module personnalisé est très simple:

Comment créer un joli footer de blog dans Joomla 4 ?
Module personnalisé

Publiez ces modules dans une position de module située sous l'article (p.ex: main-bottom).

Maintenant, il faut traduire et afficher les textes autour du formulaire d'inscription dans les différentes langues en fonction du paramètre de l'article.
Pour y parvenir, il n'y a pas d'astuce car c'est juste une override du module AcyMailing mod_acym.

Pour rendre ce module de souscription international, j'ai simplement ajouté 2 overrides de langue dans Joomla:

  • MOD_ACYM_SUBSCRIBE_INTRO - <div class="fs-3 fw-bold">Enjoyed this post?</div><p class="fw-bold">Subscribe to receive the Web-eau.net newsletter every month directly in your mailbox</p>
  • MOD_ACYM_LEGAL_INFOS - You can unsubscribe at any time. Learn more about it within our <a href="link-to-your-privacy-policy-page">privacy Policy</a> page.

et j'ai fait la même chose pour la langue française.

Maintenant, il est temps de créer une override du module mod_acym dans le template.
Si vous n'êtes pas familier avec cette technique, je vous suggère très fortement de lire d'abord cette série de tutoriels Apprendre à créer des overrides dans Joomla.

Dès que vous avez créé l'override /templates/your-template/html/mod_acym/default.php, vous pouvez accéder à son code dans l'éditeur de texte.
Voici mes modifications:

Avant la balise <table> j'ai ajouté ce code pour afficher le texte d'introduction:

<?php echo Text::_('MOD_ACYM_SUBSCRIBE_INTRO'); ?>

Ensuite, j'ai ajouté ce code avant la balise <input class="button"> pour afficher le second texte:

<p class="pt-3"><span class="small"><?php echo Text::_('MOD_ACYM_LEGAL_INFOS'); ?></span></p>

Comme dit précédemment, n'hésitez pas à copier et modifier ces élements en fonction du design de votre site.

Enregistrez et fermez votre fichier.

Jetez un œil à votre article pour voir le rendu de votre formulaire d'abonnement à la newsletter.

La biographie de l'auteur

La seconde partie du footer du blog est la biographie de l'auteur.
Je ne suis pas fainéant mais je ne voulais pas recréer la roue. Donc, j'ai copié la brillante override Information about the author créée par la brillante Astrid Günther et je l'ai importé dans mon template.

Comment créer un joli footer de blog dans Joomla 4 ?
Vielen Dank Astrid!

Parce que certains termes doivent être traduits correctement en français, j'ai ajouté 3 autres overrides de langue dans Joomla:

  • AUTHOR_ABOUT - About
  • AUTHOR_EMAIL - E-mail
  • AUTHOR_WEBSITE - Website

et j'ai fait de même pour la langue française, ça va de soi.

Pour rendre cette biographie multilingue, j'ai créé un nouveau champ personnalisé pour ajouter la biographie dans la deuxième langue:

How to create a blog footer with Joomla 4?
Biographies de l'auteur

J'ai également créé des champs personnalisés de type URL pour afficher les médias sociaux de l'auteur:

How to create a blog footer with Joomla 4?
Réseaux sociaux de l'auteur
How to create a blog footer with Joomla 4?
Champs personnalisés

Maintenant, ajoutons nos nouveaux champs personnalisés dans l'override d'Astrid.
Pour faire simple et plus facile à lire, j'ai copié mon override ici et ajouté quelques commentaires dans le code.

Note: les classes CSS utilisées sont incluses dans Bootstrap 5.

<!--Override author bio-->
	<?php $author = Joomla\CMS\Factory::getUser($this->item->created_by); ?>
	<?php $userfields = FieldsHelper::getFields('com_users.user', $author); ?>
	<?php $fields = []; ?>

	<?php foreach ($userfields as $field) : ?>
		<?php $fields[$field->id] = $field; ?>
	<?php endforeach; ?>

	<?php $bild = json_decode($fields[13]->value)->imagefile; ?> <!--author avatar -->
	<?php $alt = json_decode($fields[13]->value)->alt_text; ?> <!--author alt text avatar -->
	<?php $beschreibung = $fields[14]->value; ?> <!--author bio lang 1 -->
  	<?php $bio = $fields[16]->value; ?> <!--author bio lang 2 -->
	<?php $url = $fields[15]->value; ?> <!--author URL site web -->
  	<?php $facebook = $fields[17]->value; ?> <!--author URL Facebook -->
	<?php $twitter = $fields[18]->value; ?> <!--author URL Twitter -->
    <?php $joomla = $fields[19]->value; ?> <!--author URL Joomla -->
	<?php $email = $fields[20]->value; ?> <!--author URL e-mail -->
  
        <div class="mx-auto mt-5 mb-3 p-2 border item-content rounded-3">
			<div class="row">         
				<div class="col-md-3 col-xs-12 text-center">
					<img src="<?php echo $bild; ?>" alt="<?php echo $alt; ?>" class="shadow rounded m-5" width="150" />
				</div>
				<div class="col-md-9 col-xs-12 ">
					<div class="card-body text-start">
					
						<p class="card-title fs-4 fw-bold bleu">
						<?php echo Text::_('AUTHOR_ABOUT'); ?> <?php echo $author->name; ?> <!-- Author About -->
						</p> 
                      	
						<p class="card-text pe-5 small"><?php echo $beschreibung; ?></p> 
 						<p class="card-text pe-5 small"><?php echo $bio; ?></p> 
                      
                      	<p class="card-text">
                       	<small class="text-muted">
						<span class="">
							<a href="<?php echo $url; ?>"><i class="icon-globe bleu me-1"></i> <?php echo Text::_('AUTHOR_WEBSITE'); ?></a> <!-- Author Website -->
						</span>
                     	<span class="mx-4">
							<a href="<?php echo $facebook; ?>"><i class="fab fa-facebook bleu me-1"></i> Facebook</a>
						</span>
                     	<span class="">
							<a href="<?php echo $twitter; ?>"><i class="fab fa-twitter bleu me-1"></i> Twitter</a>
						</span>
                        <span class="mx-4">
							<a href="<?php echo $joomla; ?>"><i class="fab fa-joomla bleu me-1"></i> Joomla</a>
						</span>
                        <span class="">
							<a href="mailto:<?php echo $email; ?>"><i class="fas fa-envelope bleu me-1"></i> <?php echo Text::_('AUTHOR_EMAIL'); ?></a> <!-- Author e-mail -->
						</span>
						</small>                        
                      	</p>
                                           
					</div>
				</div>
              </div>
		</div>	
	<!-- /override bio -->

Ok, c'est quoi la suite ?

Houston, on a un problème!

Si vous regardez votre frontend, vous verrez que votre module de souscription est affiché sous la biographie de l'auteur!!

Mais nous voulons qu'il soit affiché au dessus. Comment réaliser cela?

Un footer de blog bien ordonné

Ouvrez les modules personnalisés que vous avez créé précédemment (vous devriez en avoir un par langue, n'est-ce pas ?) et affectez-les à une position de module factice (disons newsletter par exemple).

Ouvrez l'override de votre article et copiez/collez le code suivant juste au dessus de la section Biographie de l'auteur :

<!-- Module newsletter -->
<?php if (\Joomla\CMS\Helper\ModuleHelper::getModules(' newsletter ')) : ?>
<div class="mx-auto">
<?php echo JHtml::_('content.prepare',  '{ loadposition newsletter }'); ?>
</div>
<?php endif; ?>

Supprimez les espaces ici ' newsletter ' et ici '{ loadposition newsletter }'

How to create a blog footer with Joomla 4?
Détail de l'override d'article

Et voilà!

Lorsque votre article est affiché dans une langue, votre joli footer de blog est également affiché dans la même langue. Affichez le même article mais dans une autre langue pour constater que votre footer change également de langue comme par magie.

Si vous souhaitez améliorer ce tutoriel et/ou cette override, vous êtes libre de le faire.

N'hésitez pas à poser vos questions et commentaires ci-dessous et à partager ce tutoriel s'il vous a plu et s'il vous a été utile.

Après des années à travailler en tant que webmaster, j'ai découvert un secret: un bon site Web est toujours en construction.
Eh oui, il y a toujours quelque chose à améliorer, toujours quelque chose à ajouter sur un site Web et vous devez être prêt à cela.

Quelques jours seulement après avoir mis en ligne la cinquième version de mon site, j'ai eu envie d'améliorer le footer des articles de mon blog avec deux nouvelles fonctionnalités:

  • Ajouter un formulaire d'abonnement à une newsletter parce que je prévois de partager certains contenus spécifiques avec mes abonnés,
  • Une biographie d'auteur multilingue parce que cette biographie doit logiquement s'afficher dans la même langue que celle de l'article.

Logiquement un footer de blog permet au lecteur de contacter l'auteur et/ou le blog en réaction avec l'article qu'il vient de lire. Pour cela, on va lui proposer de s'abonner à une newsletter, de contacter l'auteur, de poster un commentaire et lui recommander de lire d'autres articles en rapport avec celui qu'il vient de lire.
Pour faire court, voici le footer de blog que vous serez capable de réaliser grâce à ce tutoriel Joomla 4 :

Comment créer un joli footer de blog dans Joomla 4 ?

Comme toujours pour atteindre cet objectif ambitieux, nous allons essayer d'utiliser le plus possible les fonctions natives de Joomla parce que comme le disait Colin Chapman, Ce qui est léger est bien (Light is right) et parce que créer quelque chose de nouveau est bien plus motivant intellectuellement que d'installer plusieurs extensions en quelques clics.

Pour que ce tutoriel soit plus simple à suivre, je vous recommande de créer d'abord un article pour chaque langue de votre site et de les associer ensemble. Ainsi, vous pourrez suivre plus facilement chaque étape et contrôler que tout est conforme en frontend.

La partie abonnement à la newsletter

Pour cette partie et parce que je prévois d'envoyer des newsletters à mes abonnés, j'ai installé la version gratuite d'AcyMailing. Si vous avez besoin de plus de fonctionnalités, les versions pro d'Acymailing sont probablement les meilleures options à considérer dans l'écosystème Joomla.

Une fois qu'AcyMailing est installé, créez une liste pour chaque langue. Dans mon cas, j'ai créé 2 listes car j'enverrai une newsletter en français à mes abonnés français et une en anglais à mes lecteurs internationaux.

Listes Acymailing Joomla 4
Listes AcyMailing

Maintenant, vous pouvez créer vos modules AcyMailing (un par langue, comme expliqué précédemment). Dans les paramètres, sélectionnez la liste que vous venez de créer en fonction de la langue et n'oubliez pas d'affecter vos modules aux les langues appropriées dans les paramètres.

Module Acymailing Joomla 4
Paramètres module AcyMailing

Par défaut, le champs Nom est sélectionné dans les champs à afficher. Si vous ne souhaitez pas afficher ce champs en frontend, vous pouvez le désélectionner facilement en faisant CTRL (ou command sur Mac) sur votre clavier et en cliquant sur Nom.

Une fois que vous avez terminé, vous devez avoir créé un module Acymailing par langue:

Modules Acymailing Joomla 4
Modules Acymailing

Le dernier point ici concerne l'affichage en frontend. J'ai créé un module personnalisé pour chaque langue avec des classes Bootstrap et des classes CSS personnelles pour obtenir l'affichage frontal souhaité. Bien entendu, vous pouvez copier/adapter ces classes CSS (c'est open source) ou créer votre mise en forme en fonction de vos besoins.

mx-auto w-90 text-center bg-ciel py-5 g-0 my-5 border rounded-3 d-none d-md-block

Ces modules ne font que mettre en forme et afficher les modules Acymailing grâce à {loadmoduleid xxx}.

Le contenu de chaque module personnalisé est très simple:

Comment créer un joli footer de blog dans Joomla 4 ?
Module personnalisé

Publiez ces modules dans une position de module située sous l'article (p.ex: main-bottom).

Maintenant, il faut traduire et afficher les textes autour du formulaire d'inscription dans les différentes langues en fonction du paramètre de l'article.
Pour y parvenir, il n'y a pas d'astuce car c'est juste une override du module AcyMailing mod_acym.

Pour rendre ce module de souscription international, j'ai simplement ajouté 2 overrides de langue dans Joomla:

  • MOD_ACYM_SUBSCRIBE_INTRO - <div class="fs-3 fw-bold">Enjoyed this post?</div><p class="fw-bold">Subscribe to receive the Web-eau.net newsletter every month directly in your mailbox</p>
  • MOD_ACYM_LEGAL_INFOS - You can unsubscribe at any time. Learn more about it within our <a href="link-to-your-privacy-policy-page">privacy Policy</a> page.

et j'ai fait la même chose pour la langue française.

Maintenant, il est temps de créer une override du module mod_acym dans le template.
Si vous n'êtes pas familier avec cette technique, je vous suggère très fortement de lire d'abord cette série de tutoriels Apprendre à créer des overrides dans Joomla.

Dès que vous avez créé l'override /templates/your-template/html/mod_acym/default.php, vous pouvez accéder à son code dans l'éditeur de texte.
Voici mes modifications:

Avant la balise <table> j'ai ajouté ce code pour afficher le texte d'introduction:

<?php echo Text::_('MOD_ACYM_SUBSCRIBE_INTRO'); ?>

Ensuite, j'ai ajouté ce code avant la balise <input class="button"> pour afficher le second texte:

<p class="pt-3"><span class="small"><?php echo Text::_('MOD_ACYM_LEGAL_INFOS'); ?></span></p>

Comme dit précédemment, n'hésitez pas à copier et modifier ces élements en fonction du design de votre site.

Enregistrez et fermez votre fichier.

Jetez un œil à votre article pour voir le rendu de votre formulaire d'abonnement à la newsletter.

La biographie de l'auteur

La seconde partie du footer du blog est la biographie de l'auteur.
Je ne suis pas fainéant mais je ne voulais pas recréer la roue. Donc, j'ai copié la brillante override Information about the author créée par la brillante Astrid Günther et je l'ai importé dans mon template.

Comment créer un joli footer de blog dans Joomla 4 ?
Vielen Dank Astrid!

Parce que certains termes doivent être traduits correctement en français, j'ai ajouté 3 autres overrides de langue dans Joomla:

  • AUTHOR_ABOUT - About
  • AUTHOR_EMAIL - E-mail
  • AUTHOR_WEBSITE - Website

et j'ai fait de même pour la langue française, ça va de soi.

Pour rendre cette biographie multilingue, j'ai créé un nouveau champ personnalisé pour ajouter la biographie dans la deuxième langue:

How to create a blog footer with Joomla 4?
Biographies de l'auteur

J'ai également créé des champs personnalisés de type URL pour afficher les médias sociaux de l'auteur:

How to create a blog footer with Joomla 4?
Réseaux sociaux de l'auteur
How to create a blog footer with Joomla 4?
Champs personnalisés

Maintenant, ajoutons nos nouveaux champs personnalisés dans l'override d'Astrid.
Pour faire simple et plus facile à lire, j'ai copié mon override ici et ajouté quelques commentaires dans le code.

Note: les classes CSS utilisées sont incluses dans Bootstrap 5.

<!--Override author bio-->
	<?php $author = Joomla\CMS\Factory::getUser($this->item->created_by); ?>
	<?php $userfields = FieldsHelper::getFields('com_users.user', $author); ?>
	<?php $fields = []; ?>

	<?php foreach ($userfields as $field) : ?>
		<?php $fields[$field->id] = $field; ?>
	<?php endforeach; ?>

	<?php $bild = json_decode($fields[13]->value)->imagefile; ?> <!--author avatar -->
	<?php $alt = json_decode($fields[13]->value)->alt_text; ?> <!--author alt text avatar -->
	<?php $beschreibung = $fields[14]->value; ?> <!--author bio lang 1 -->
  	<?php $bio = $fields[16]->value; ?> <!--author bio lang 2 -->
	<?php $url = $fields[15]->value; ?> <!--author URL site web -->
  	<?php $facebook = $fields[17]->value; ?> <!--author URL Facebook -->
	<?php $twitter = $fields[18]->value; ?> <!--author URL Twitter -->
    <?php $joomla = $fields[19]->value; ?> <!--author URL Joomla -->
	<?php $email = $fields[20]->value; ?> <!--author URL e-mail -->
  
        <div class="mx-auto mt-5 mb-3 p-2 border item-content rounded-3">
			<div class="row">         
				<div class="col-md-3 col-xs-12 text-center">
					<img src="<?php echo $bild; ?>" alt="<?php echo $alt; ?>" class="shadow rounded m-5" width="150" />
				</div>
				<div class="col-md-9 col-xs-12 ">
					<div class="card-body text-start">
					
						<p class="card-title fs-4 fw-bold bleu">
						<?php echo Text::_('AUTHOR_ABOUT'); ?> <?php echo $author->name; ?> <!-- Author About -->
						</p> 
                      	
						<p class="card-text pe-5 small"><?php echo $beschreibung; ?></p> 
 						<p class="card-text pe-5 small"><?php echo $bio; ?></p> 
                      
                      	<p class="card-text">
                       	<small class="text-muted">
						<span class="">
							<a href="<?php echo $url; ?>"><i class="icon-globe bleu me-1"></i> <?php echo Text::_('AUTHOR_WEBSITE'); ?></a> <!-- Author Website -->
						</span>
                     	<span class="mx-4">
							<a href="<?php echo $facebook; ?>"><i class="fab fa-facebook bleu me-1"></i> Facebook</a>
						</span>
                     	<span class="">
							<a href="<?php echo $twitter; ?>"><i class="fab fa-twitter bleu me-1"></i> Twitter</a>
						</span>
                        <span class="mx-4">
							<a href="<?php echo $joomla; ?>"><i class="fab fa-joomla bleu me-1"></i> Joomla</a>
						</span>
                        <span class="">
							<a href="mailto:<?php echo $email; ?>"><i class="fas fa-envelope bleu me-1"></i> <?php echo Text::_('AUTHOR_EMAIL'); ?></a> <!-- Author e-mail -->
						</span>
						</small>                        
                      	</p>
                                           
					</div>
				</div>
              </div>
		</div>	
	<!-- /override bio -->

Ok, c'est quoi la suite ?

Houston, on a un problème!

Si vous regardez votre frontend, vous verrez que votre module de souscription est affiché sous la biographie de l'auteur!!

Mais nous voulons qu'il soit affiché au dessus. Comment réaliser cela?

Un footer de blog bien ordonné

Ouvrez les modules personnalisés que vous avez créé précédemment (vous devriez en avoir un par langue, n'est-ce pas ?) et affectez-les à une position de module factice (disons newsletter par exemple).

Ouvrez l'override de votre article et copiez/collez le code suivant juste au dessus de la section Biographie de l'auteur :

<!-- Module newsletter -->
<?php if (\Joomla\CMS\Helper\ModuleHelper::getModules(' newsletter ')) : ?>
<div class="mx-auto">
<?php echo JHtml::_('content.prepare',  '{ loadposition newsletter }'); ?>
</div>
<?php endif; ?>

Supprimez les espaces ici ' newsletter ' et ici '{ loadposition newsletter }'

How to create a blog footer with Joomla 4?
Détail de l'override d'article

Et voilà!

Lorsque votre article est affiché dans une langue, votre joli footer de blog est également affiché dans la même langue. Affichez le même article mais dans une autre langue pour constater que votre footer change également de langue comme par magie.

Si vous souhaitez améliorer ce tutoriel et/ou cette override, vous êtes libre de le faire.

N'hésitez pas à poser vos questions et commentaires ci-dessous et à partager ce tutoriel s'il vous a plu et s'il vous a été utile.

Daniel Dubois - auteur à web-eau.net

A propos de Daniel

Passionné par le Web depuis 2007, Daniel défend la veuve et l'orphelin du web en créant des sites respectueux du W3C. Fort de son expérience, il partage ses connaissances dans un état d'esprit open source. Très impliqué en faveur du CMS Joomla depuis 2014, il est également conférencier et fondateur du Joomla User Group Breizh.

Site Web Facebook LinkedIn Twitter Joomla Courriel

web-eau.net

29800 Landerneau

06 74 50 27 99

daniel@web-eau.net

Liens rapides