web-dev-qa-db-fra.com

Tag page: supprimer les liens sur l'image lorsqu'ils sont en introtext

J'essaie de supprimer le lien sur mon image sur la page Tag (où tous les artciles portant le même tag sont affichés). L'image est placée avec le <img> balise en introtexte, ce n'est pas une image d'introduction.

J'ai trouvé la fonction php correcte:

$notagintrotex =strip_tags( $this->item->introtext, '<img>');
echo $notagintrotex;

Mais je ne trouve pas quel fichier je dois remplacer. J'ai vu ceci question mais il semble y avoir eu quelques changements depuis Joomla 3.3.1. sur templates/yourtemplate/html/com_tags/tag/default_items.php

1
MagTun

OK, après avoir obtenu un meilleur aperçu de votre problème, voici ce que vous devez faire pour obtenir ce que vous voulez:

Créez un remplacement de modèle dans le dossier HTML de votre modèle, pour le composant Tags. Pour ce faire, créez la structure de dossiers suivante:

/ templates/yourtemplate/html/com_tags/tag /

Copiez dans le dossier ci-dessus le fichier:

default_items.php à partir du dossier components/com_tags/views/tag/tmpl.

Ouvrez ce fichier pour le modifier. Autour de la ligne 80, vous verrez:

<?php if ($this->params->get('tag_list_show_item_description', 1)) : ?>
    <?php echo $item->event->beforeDisplayContent; ?>           
    <span class="tag-body">
        <?php echo JHtml::_('string.truncate', $item->core_body, $this->params->get('tag_list_item_maximum_characters')); ?>
    </span>
    <?php echo $item->event->afterDisplayContent; ?>

Modifiez-le en ajoutant votre code avant de faire écho au texte de description (par exemple, avant la plage "tag-body"):

<?php
$item->core_body =strip_tags( $item->core_body, '<img>');
?>

Donc, vous allez finir avec quelque chose comme ci-dessous:

    <?php if ($this->params->get('tag_list_show_item_description', 1)) : ?>
    <?php echo $item->event->beforeDisplayContent; ?>
    <?php
        $item->core_body =strip_tags( $item->core_body, '<img>');
    ?>          
    <span class="tag-body">
        <?php echo JHtml::_('string.truncate', $item->core_body, $this->params->get('tag_list_item_maximum_characters')); ?>
    </span>
    <?php echo $item->event->afterDisplayContent; ?>

Réponse initiale:

Votre site Web est un peu déroutant, un peu difficile à naviguer et il n’existe pas de moyen standard pour accéder à tout type de contenu et de catégories. Je pense aussi qu'il y a un peu de confusion dans la configuration, car certaines pages affichent les informations de balises, d'autres uniquement les catégories, etc.

De plus, j'essayais de joindre l'un des articles de cette liste de balises pour examiner comment et pourquoi il utilise une image dans son introtexte avec un lien vers des sites Web externes. Toutefois, bien que les images des articles soient directement dirigées vers des sites Web externes, Erreur 404.

Tout d'abord, je pense que vous devriez affiner la configuration complète du site Web et des composants. Je ne peux pas vous dire exactement ce que vous devez faire dans cette réponse - vous devrez probablement engager quelqu'un pour vous aider à résoudre ce problème.

En ce qui concerne le problème avec les liens - j'ai vérifié aussi quelques autres balises et toutes les balises n'ont pas de liens dans leur description. Cela m'amène à penser que ces images spécifiques dans l'introtexte sont liées à ces sites Web externes.

Je pense que puisque vous avez défini le composant Tags pour afficher l'introtexte, il ne fera que l'utiliser et contiendra le balisage de l'introtext de l'article.

Une solution consiste à utiliser la fonctionnalité de masquage d'introtext du composant Contenu. En suivant cette approche, vous créerez deux fois le même contenu pour l'introtexte et le texte intégral. Dans l'introtexte, vous utiliserez l'image sans le lien, tandis que dans le texte intégral, vous pourrez ajouter votre lien. Si vous définissez Joomla pour masquer l'introtexte de l'affichage de l'article, vous obtiendrez deux blocs de texte différents à afficher pour répondre à vos besoins.

L'introtexte sans les liens pour toutes les mises en page de blog/listes de balises, modules d'article, etc. et le texte intégral pour l'affichage de l'article.

Vous pouvez également utiliser les fonctionnalités images du contenu Joomla, à partir de l'onglet "Images et liens", et y définir votre image d'introduction.

Cependant, gardez à l'esprit que la sortie de chaque composant est également contrôlée par tout remplacement de modèle possible pour chaque composant.

1
FFrewin

Il me semble que vous devez créer un plugin de contenu (c'est assez facile) pour supprimer les balises. Voir Création d'un plugin de conten , et mettez votre code dans le fichier php. L'événement qui devrait le déclencher est probablement l'événement onContentPrepare ou peut-être onContentBeforeDisplay.

1
GDP