Lien sur image d'intro Joomla 2.5

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Lien sur image d'intro Joomla 2.5

    Bonjour,
    Est-il possible de créer un lien sur l'image d'intro en affichage "blog" ou "en vedette" ou existe-t-il une extension qui remplace ce principe. Dans les précédentes version de Joomla j'utilisait Mavik Thumbnail qui était très bien mais ce plugin n'est pas disponible pour Joomla 2.5.
    D'avance merci

  • #2
    Re : Lien sur image d'intro Joomla 2.5

    Oui tu peux le faire. J'imagine que c'est un lien vers l'article en question que tu veux rajouter ?

    Il faut que tu fasses un override de ton composant. Si tu as besoin je t'explique.

    Commentaire


    • #3
      Re : Lien sur image d'intro Joomla 2.5

      Oui c'est bien ça, un lien vers l'article. J'avais pensé que cette option de lien sur l'image devait être prévue de base, mais que c'est moi qui avais mal compris son fonctionnement.
      Un override de mon composant ? C'est vrai que ce terme est obscur pour moi, mais je veux bien que tu m'expliques comment faire ces modifications.

      Remarque :
      C'est dommage de devoir patcher Joomla pour une fonctionnalité qui me parait être une évidence.

      Commentaire


      • #4
        Re : Lien sur image d'intro Joomla 2.5

        Tu utilises quelle vue (blog ou en vedette) ? En composant, c'est à dire par un lien de menu ou avec un module ?

        Commentaire


        • #5
          Re : Lien sur image d'intro Joomla 2.5

          J'utilise la vue en blog par un menu.

          Commentaire


          • #6
            Re : Lien sur image d'intro Joomla 2.5

            Alors dans le dossier de ton template, tu créées des dossiers afin d'avoir l'architecture suivante:
            tontemplate/html/com_content/category/

            Ensuite, tu vas dans components/com_content/views/category/tmpl/ , Tu copies les fichiers qui s'y trouve pour les mettre dans les dossier de ton template, (tontemplate/html/com_content/category/).

            Ensuite tu ouvres le fichier blog_item avec un editeur de texte (ex: notepad ++). De la ligne 127 à 151 tu dois avoir ça:
            Code PHP:
            <?php  if (isset($images->image_intro) and !empty($images->image_intro)) : ?>
                <?php $imgfloat = (empty($images->float_intro)) ? $params->get('float_intro') : $images->float_intro?>
                <div class="img-intro-<?php echo htmlspecialchars($imgfloat); ?>">
                <img
                    <?php if ($images->image_intro_caption):
                        echo 
            'class="caption"'.' title="' .htmlspecialchars($images->image_intro_caption) .'"';
                    endif; 
            ?>
                    src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>"/>
                </div>
            <?php endif; ?>
            <?php 
            echo $this->item->introtext?>

            <?php if ($params->get('show_readmore') && $this->item->readmore) :
                if (
            $params->get('access-view')) :
                    
            $link JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug$this->item->catid));
                else :
                    
            $menu JFactory::getApplication()->getMenu();
                    
            $active $menu->getActive();
                    
            $itemId $active->id;
                    
            $link1 JRoute::_('index.php?option=com_users&view=login&Itemid=' $itemId);
                    
            $returnURL JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug$this->item->catid));
                    
            $link = new JURI($link1);
                    
            $link->setVar('return'base64_encode($returnURL));
                endif;
            ?>
            Tu modifies ce code par celui ci:
            Code PHP:
            <?php if ($params->get('show_readmore') && $this->item->readmore) :
                if (
            $params->get('access-view')) :
                    
            $link JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug$this->item->catid));
                else :
                    
            $menu JFactory::getApplication()->getMenu();
                    
            $active $menu->getActive();
                    
            $itemId $active->id;
                    
            $link1 JRoute::_('index.php?option=com_users&view=login&Itemid=' $itemId);
                    
            $returnURL JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug$this->item->catid));
                    
            $link = new JURI($link1);
                    
            $link->setVar('return'base64_encode($returnURL));
                endif;
            ?>

            <?php  if (isset($images->image_intro) and !empty($images->image_intro)) : ?>
                <?php $imgfloat = (empty($images->float_intro)) ? $params->get('float_intro') : $images->float_intro?>
                <div class="img-intro-<?php echo htmlspecialchars($imgfloat); ?>">
                <a href="<?php echo $link?>"><img
                    <?php if ($images->image_intro_caption):
                        echo 
            'class="caption"'.' title="' .htmlspecialchars($images->image_intro_caption) .'"';
                    endif; 
            ?>
                    src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>"/></a>
                </div>
            <?php endif; ?>
            <?php 
            echo $this->item->introtext?>
            Et la normalement tes images auront bien le lien vers l'article.
            Dernière édition par Echo_16 à 13/03/2012, 11h52

            Commentaire


            • #7
              Re : Lien sur image d'intro Joomla 2.5

              Waouuu, eh ben ça ne rigole plus.
              Je viens d'intégrer tes modifications et cela fonctionne très bien. Merci pour ce méga patch.
              J'espère que cette fonctionnalité sera intégrée dans les prochaines mises à jour, car cela me paraît être quand même un gros patche pour juste un lien sur une image.
              Entretemps j'avais trouvé une solution peut-être plus simple avec le plug-in JUMultiThumb qui pouvait aussi faire l'affaire, mais avec un fonctionnement légèrement différent.

              En tout cas merci pour ton aide.

              Commentaire


              • #8
                Re : Lien sur image d'intro Joomla 2.5

                Cela s'appelle un override. En fait, on surcharge le composant, au lieu que joomla se serve des fichiers du noyau de joomla, il va privilégier les fichiers de ton template.

                Cela à un gros avantage, car en cas de mise à jour de joomla, tes modifications resteront effective car nous n'avons pas touchés au noyau. Donc pas d'inquiétude, cela restera en place même si tu mets joomla à jour

                Commentaire


                • #9
                  Re : Lien sur image d'intro Joomla 2.5

                  Bonjour,

                  Ce sujet m'interesse pour une modification différente, je veux supprimer l'image d'intro de l'affichage en mode Blog (Cest une très grande image utilisée en slideshow sur la page d'accueil, mais en mode blog cela fait doublon avec le visuel de l'article et l'affichage en colonne est disgracieux), j'ai donc comme indiqué ci-dessus créé l'override et mis en commentaire le code d'affichage de l'image d'intro, mais... elle est toujours là ! je précise que je suis sur un template JA Purity 2, caches désactivés, mode développement.
                  Voici ci-dessous le code de mon fichier blog_item.php dont j'ai neutralisé le code d'affichage (en rouge) merci de votre aide:

                  <?php
                  /**
                  * @package Joomla.Site
                  * @subpackage com_content
                  * @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
                  * @license GNU General Public License version 2 or later; see LICENSE.txt
                  */

                  // no direct access
                  defined('_JEXEC') or die;

                  // Create a shortcut for params.
                  $params = &$this->item->params;
                  $images = json_decode($this->item->images);
                  $canEdit = $this->item->params->get('access-edit');
                  JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
                  JHtml::_('behavior.tooltip');
                  JHtml::_('behavior.framework');

                  ?>

                  <?php if ($this->item->state == 0) : ?>
                  <div class="system-unpublished">
                  <?php endif; ?>
                  <?php if ($params->get('show_title')) : ?>
                  <h2>
                  <?php if ($params->get('link_titles') && $params->get('access-view')) : ?>
                  <a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($thi s->item->slug, $this->item->catid)); ?>">
                  <?php echo $this->escape($this->item->title); ?></a>
                  <?php else : ?>
                  <?php echo $this->escape($this->item->title); ?>
                  <?php endif; ?>
                  </h2>
                  <?php endif; ?>

                  <?php if ($params->get('show_print_icon') || $params->get('show_email_icon') || $canEdit) : ?>
                  <ul class="actions">
                  <?php if ($params->get('show_print_icon')) : ?>
                  <li class="print-icon">
                  <?php echo JHtml::_('icon.print_popup', $this->item, $params); ?>
                  </li>
                  <?php endif; ?>
                  <?php if ($params->get('show_email_icon')) : ?>
                  <li class="email-icon">
                  <?php echo JHtml::_('icon.email', $this->item, $params); ?>
                  </li>
                  <?php endif; ?>
                  <?php if ($canEdit) : ?>
                  <li class="edit-icon">
                  <?php echo JHtml::_('icon.edit', $this->item, $params); ?>
                  </li>
                  <?php endif; ?>
                  </ul>
                  <?php endif; ?>

                  <?php if (!$params->get('show_intro')) : ?>
                  <?php echo $this->item->event->afterDisplayTitle; ?>
                  <?php endif; ?>

                  <?php echo $this->item->event->beforeDisplayContent; ?>

                  <?php // to do not that elegant would be nice to group the params ?>

                  <?php if (($params->get('show_author')) or ($params->get('show_category')) or ($params->get('show_create_date')) or ($params->get('show_modify_date')) or ($params->get('show_publish_date')) or ($params->get('show_parent_category')) or ($params->get('show_hits'))) : ?>
                  <dl class="article-info">
                  <dt class="article-info-term"><?php echo JText::_('COM_CONTENT_ARTICLE_INFO'); ?></dt>
                  <?php endif; ?>
                  <?php if ($params->get('show_parent_category') && $this->item->parent_id != 1) : ?>
                  <dd class="parent-category-name">
                  <?php $title = $this->escape($this->item->parent_title);
                  $url = '<a href="' . JRoute::_(ContentHelperRoute::getCategoryRoute($th is->item->parent_id)) . '">' . $title . '</a>'; ?>
                  <?php if ($params->get('link_parent_category')) : ?>
                  <?php echo JText::sprintf('COM_CONTENT_PARENT', $url); ?>
                  <?php else : ?>
                  <?php echo JText::sprintf('COM_CONTENT_PARENT', $title); ?>
                  <?php endif; ?>
                  </dd>
                  <?php endif; ?>
                  <?php if ($params->get('show_category')) : ?>
                  <dd class="category-name">
                  <?php $title = $this->escape($this->item->category_title);
                  $url = '<a href="' . JRoute::_(ContentHelperRoute::getCategoryRoute($th is->item->catid)) . '">' . $title . '</a>'; ?>
                  <?php if ($params->get('link_category')) : ?>
                  <?php echo JText::sprintf('COM_CONTENT_CATEGORY', $url); ?>
                  <?php else : ?>
                  <?php echo JText::sprintf('COM_CONTENT_CATEGORY', $title); ?>
                  <?php endif; ?>
                  </dd>
                  <?php endif; ?>
                  <?php if ($params->get('show_create_date')) : ?>
                  <dd class="create">
                  <?php echo JText::sprintf('COM_CONTENT_CREATED_DATE_ON', JHtml::_('date', $this->item->created, JText::_('DATE_FORMAT_LC2'))); ?>
                  </dd>
                  <?php endif; ?>
                  <?php if ($params->get('show_modify_date')) : ?>
                  <dd class="modified">
                  <?php echo JText::sprintf('COM_CONTENT_LAST_UPDATED', JHtml::_('date', $this->item->modified, JText::_('DATE_FORMAT_LC2'))); ?>
                  </dd>
                  <?php endif; ?>
                  <?php if ($params->get('show_publish_date')) : ?>
                  <dd class="published">
                  <?php echo JText::sprintf('COM_CONTENT_PUBLISHED_DATE_ON', JHtml::_('date', $this->item->publish_up, JText::_('DATE_FORMAT_LC2'))); ?>
                  </dd>
                  <?php endif; ?>
                  <?php if ($params->get('show_author') && !empty($this->item->author )) : ?>
                  <dd class="createdby">
                  <?php $author = $this->item->author; ?>
                  <?php $author = ($this->item->created_by_alias ? $this->item->created_by_alias : $author);?>

                  <?php if (!empty($this->item->contactid ) && $params->get('link_author') == true):?>
                  <?php echo JText::sprintf('COM_CONTENT_WRITTEN_BY' ,
                  JHtml::_('link', JRoute::_('index.php?option=com_contact&view=conta ct&id='.$this->item->contactid), $author)); ?>

                  <?php else :?>
                  <?php echo JText::sprintf('COM_CONTENT_WRITTEN_BY', $author); ?>
                  <?php endif; ?>
                  </dd>
                  <?php endif; ?>
                  <?php if ($params->get('show_hits')) : ?>
                  <dd class="hits">
                  <?php echo JText::sprintf('COM_CONTENT_ARTICLE_HITS', $this->item->hits); ?>
                  </dd>
                  <?php endif; ?>
                  <?php if (($params->get('show_author')) or ($params->get('show_category')) or ($params->get('show_create_date')) or ($params->get('show_modify_date')) or ($params->get('show_publish_date')) or ($params->get('show_parent_category')) or ($params->get('show_hits'))) :?>
                  </dl>
                  <?php endif; ?>
                  <?php /*?><?php if (isset($images->image_intro) and !empty($images->image_intro)) : ?>
                  <?php $imgfloat = (empty($images->float_intro)) ? $params->get('float_intro') : $images->float_intro; ?>
                  <div class="img-intro-<?php echo htmlspecialchars($imgfloat); ?>">
                  <img
                  <?php if ($images->image_intro_caption):
                  echo 'class="caption"'.' title="' .htmlspecialchars($images->image_intro_caption) .'"';
                  endif; ?>
                  src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>"/>
                  </div>
                  <?php endif; ?><?php */?>

                  <?php echo $this->item->introtext; ?>

                  <?php if ($params->get('show_readmore') && $this->item->readmore) :
                  if ($params->get('access-view')) :
                  $link = JRoute::_(ContentHelperRoute::getArticleRoute($thi s->item->slug, $this->item->catid));
                  else :
                  $menu = JFactory::getApplication()->getMenu();
                  $active = $menu->getActive();
                  $itemId = $active->id;
                  $link1 = JRoute::_('index.php?option=com_users&view=login&I temid=' . $itemId);
                  $returnURL = JRoute::_(ContentHelperRoute::getArticleRoute($thi s->item->slug, $this->item->catid));
                  $link = new JURI($link1);
                  $link->setVar('return', base64_encode(urlencode($returnURL)));
                  endif;
                  ?>
                  <p class="readmore">
                  <a href="<?php echo $link; ?>">
                  <?php if (!$params->get('access-view')) :
                  echo JText::_('COM_CONTENT_REGISTER_TO_READ_MORE');
                  elseif ($readmore = $this->item->alternative_readmore) :
                  echo $readmore;
                  if ($params->get('show_readmore_title', 0) != 0) :
                  echo JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));
                  endif;
                  elseif ($params->get('show_readmore_title', 0) == 0) :
                  echo JText::sprintf('COM_CONTENT_READ_MORE_TITLE');
                  else :
                  echo JText::_('COM_CONTENT_READ_MORE');
                  echo JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));
                  endif; ?></a>
                  </p>
                  <?php endif; ?>

                  <?php if ($this->item->state == 0) : ?>
                  </div>
                  <?php endif; ?>

                  <div class="item-separator"></div>
                  <?php echo $this->item->event->afterDisplayContent; ?>
                  Seb

                  Commentaire


                  • #10
                    Re : Lien sur image d'intro Joomla 2.5

                    Envoyé par Echo_16 Voir le message
                    Alors dans le dossier de ton template, tu créées des dossiers afin d'avoir l'architecture suivante:
                    tontemplate/html/com_content/category/

                    Ensuite, tu vas dans components/com_content/views/category/tmpl/ , Tu copies les fichiers qui s'y trouve pour les mettre dans les dossier de ton template, (tontemplate/html/com_content/category/).

                    Ensuite tu ouvres le fichier blog_item avec un editeur de texte (ex: notepad ++). De la ligne 127 à 151 tu dois avoir ça.
                    Bonjour,

                    Je sais que le sujet date un peu, mais justement : quelqu'un aurait-il la solution pour procéder à un override mais sur Joomla 3 ? Les fichiers sont différents et du coup je ne sais pas trop quelles modifications apporter.

                    Par ailleurs, j'aimerai pouvoir faire l'override pour avoir une image cliquable pour la présentation en blog (comme expliqué ici), mais également pour les articles en vedette.

                    Merci d'avance!

                    Commentaire


                    • #11
                      Re : Lien sur image d'intro Joomla 2.5

                      J'ai trouvé la solution (grâce à ce tutoriel que j'ai adapté à Joomla 3.1.5 : http://magazine.joomla.org/issues/is...ge-in-joomla25 ) :
                      Vers la ligne 34 on trouve ceci :

                      Code:
                      <?php echo JLayoutHelper::render('joomla.content.intro_image', $this->item); ?>
                      Il suffit de le mettre dans un lien comme ci-dessous :
                      Code:
                      <a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>">
                      <?php echo JLayoutHelper::render('joomla.content.intro_image', $this->item); ?>
                      </a>
                      Par ailleurs pour faire la même manip mais sur des articles en vedette, il faut faire un override similaire :
                      Copier les fichiers qui se trouvent dans components/com_content/views/featured/tmpl, et les coller dans votre template :
                      votre-template/html/com_content/featured

                      Il faut alors modifier le fichier default_item.php, vers les lignes 137-139 vous trouverez ces lignes de code :
                      Code:
                      <img
                      		<?php if ($images->image_intro_caption):
                      			echo 'class="caption"'.' title="' .htmlspecialchars($images->image_intro_caption) .'"';
                      		endif; ?>
                      		src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>"/>
                      Et il faut de la même manière les placer dans le lien, comme ci-dessous :
                      Code:
                      	<a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>">
                      		<img
                      		<?php if ($images->image_intro_caption):
                      			echo 'class="caption"'.' title="' .htmlspecialchars($images->image_intro_caption) .'"';
                      		endif; ?>
                      		src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>"/> 
                      	</a>

                      Je ne sais pas si ces solutions sont optimales, je suis débutante... Pour ma part ca a l'air de fonctionner, mais n'hésitez pas à compléter ou apporter vos commentaires.
                      En espérant que ça puisse aider certains...

                      Commentaire


                      • #12
                        Re : Lien sur image d'intro Joomla 2.5

                        Bonjour à toutes et à tous,

                        Je cherchais moi aussi comment faire pour que mes images d'intro soient cliquables, et tout ce code était si effrayant, que je n'ai même pas tenté l'expérience et je préfère ne pas installer trop d'extensions et plugins

                        Mais, j'ai trouvé une solution, toute simple, sans avoir à écrire une seule ligne de code, que voici:

                        Il suffit, lorsque que vous avez une vignette sur laquelle vous souhaitez faire le lien, d'abandonner la fonction "image d'intro".
                        Vous placez votre vignette où vous souhaitez au début de l'article, avant la ligne "Lire la suite".
                        Vous enregistrez votre page et vous récupérez votre lien, pour faire un lien sur l'image qui conduit à votre page.

                        Si vous ne souhaitez pas que cette image soit visible lorsqu'on accède à l'article, il suffit d'aller dans le menu de droite "Paramètres de l'article" et de choisir "Masquer" pour le texte d'introduction.

                        Un peu long, pour une fonction simple, mais qui j'espère, en dépannera plus d'un.
                        A bientôt!

                        Commentaire


                        • #13
                          Re : Lien sur image d'intro Joomla 2.5

                          Coucou,

                          Un grand merci, j'ai utilisé ton code dans l'override du module news-flash. Ca me permet de récupérer l'image d'intro ce qui ne fonctionne pas dans joomla natif 2.5.17 (et 2.5.11 non-plus).

                          Extrait utilisé et ajouté dans _item.php

                          Code PHP:
                           <?php  if (isset($images->image_intro) and !empty($images->image_intro)) : ?>
                              <?php $imgfloat = (empty($images->float_intro)) ? $params->get('float_intro') : $images->float_intro?>
                              <div class="img-intro-<?php echo htmlspecialchars($imgfloat); ?>">
                              <img
                                  <?php if ($images->image_intro_caption):
                                      echo 
                          'class="caption"'.' title="' .htmlspecialchars($images->image_intro_caption) .'"';
                                  endif; 
                          ?>
                                  src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>"/>
                              </div>
                          <?php endif; ?>

                          L'autre post qui m'a bien aidée c'est celui-ci : http://forum.joomla.org/viewtopic.php?f=629&t=696830

                          Je me suis creusée la tête un bon moment.

                          Commentaire

                          Annonce

                          Réduire
                          Aucune annonce pour le moment.

                          Partenaire de l'association

                          Réduire

                          Hébergeur Web PlanetHoster
                          Travaille ...
                          X