Je souhaite ajouter un code de suivi analytique avant que le composant com_weblinks ne passe à un site externe avec task = weblink.go.
Le problème est que le saut se trouve dans le fichier controller.php. Une dérogation pour cela n'est pas possible.
Comment puis-je modifier/ajouter du code au contrôleur à enregistrer après la prochaine mise à jour?
En regardant le fonctionnement de Liens Web, je peux voir que la seule fois où weblinks.go s'implique, c'est lorsque vous avez sélectionné une option pour compter les Hits pour chaque lien, ce qui fait que view.html.php affiche ce style de lien:
$item->link = JRoute::_('index.php?option=com_weblinks&task=weblink.go&id=' . $item->id);
à la ligne 88 de default_items.php
Je suggérerais que vous puissiez "intercepter" ce lien qui est créé via un plugin de votre choix ou quelque chose comme re-replacer pour changer les valeurs des options et des tâches, ou le lien entier, pour pointer vers un morceau de code que vous avez écrit ajoutera le nom de votre lien au protocole de mesure analytique. Le plugin utiliserait probablement l'événement onContentBefore quelque chose pour effectuer le changement.
Lorsque les utilisateurs finaux cliquent sur un lien, ils accèdent d'abord à votre morceau de code, puis vous retransmettez le traitement à weblinks et à weblinks.go pour faire sa part, avant de diriger l'utilisateur final vers le site lié.
Intercepter le processus via l'approche ci-dessus signifie que vous ne disposez que d'un ID et non de l'URL réelle lorsque vous entrez dans votre code.Vous devrez donc effectuer un peu de traitement pour interroger l'ID afin d'obtenir l'URL associée afin de pouvoir la transmettre à Google.
Alternativement, vous pouvez créer une catégorie de remplacement/view/tmpl/default_item.php pour afficher le lien comme vous le souhaitez avec l'ID et l'URL pour passer à votre code et ne pas impliquer de plug-in onContentBefore ou de fonction de type de remplacement. Et si vous ne voulez pas compter les Hits dans les liens Web, vous n'avez pas du tout besoin d'aller sur weblinks.go et vous n'avez pas besoin de l'ID.