web-dev-qa-db-fra.com

Message personnalisé par élément de menu

Un de mes clients souhaite afficher un message à des fins de référencement sur chaque page (élément de menu) et je sais que cela peut être facilement résolu avec plusieurs modules du type "custom html", chacun étant affecté à l'élément de menu correspondant.

Mais ils ont beaucoup d'éléments de menu signifiant un nombre égal de modules.

Je me demandais s'il y avait un moyen facile de le faire et j'ai deux idées:

1 - Avoir un champ supplémentaire dans l'élément de menu pour ajouter le texte et développer un module qui lise ce champ supplémentaire et l'affiche dans la page. Je peux développer le module mais je ne sais pas comment ajouter un champ supplémentaire dans le formulaire d’éléments de menu sans utiliser de substitutions. Y-a-t-il un moyen de faire ça?

2 - Développez un module vous permettant de choisir un élément de menu et un message sous une forme répétable. Je peux programmer ceci mais je voudrais demander si quelqu'un connaît un module qui a cette fonction afin que je puisse épargner la programmation (je recherche déjà le JED)

Merci de votre aide

1
Piero Marsilio

Option 1

Une méthode rapide consiste à installer Regular Labs Sourcerer (ou similaire) et à utiliser un module HTML personnalisé avec un code similaire à celui-ci:

{source}
<?php
$app = JFactory::getApplication();
$itemid = $app->input->getCmd('Itemid', '');
switch ($itemid)
{
case '131':
  echo "<p>Message 1</p>";
  break;
case '132':
  echo "<p>Message 2</p>";
  break;
case '133':
  echo "<p>Message 3</p>";
  break;
default :
  echo "<p>Message 4</p>";
  break;
}
?>
{/source}

Entrez les ID de menu avec les messages correspondants dans une instruction switch. Vous pouvez inclure un message par défaut au cas où vous auriez manqué une page.

Option 2

Les métadonnées de mots-clés ont peu de valeur ces jours-ci (du point de vue du référencement), vous pouvez donc détourner ce champ pour vos propres besoins en installant Regular Labs Sourcerer (ou similaire) et en utilisant un module HTML personnalisé avec un code similaire à celui-ci:

{source}
<?php
$doc = JFactory::getDocument();
$keywords = $doc->getMetaData('keywords');
if ($keywords) {
  echo "<p>" . $keywords . "</p>";
  $doc->setMetaData('keywords', '');
}
?>
{/source}
3
Neil Robertson