web-dev-qa-db-fra.com

Comment afficher les éléments uniquement à l'aide du bouton AJAX "Charger plus" au lieu de la pagination dans la catégorie blog

Dans la catégorie blog par défaut, dix éléments sont visibles. Je voudrais remplacer une pagination standard par le bouton "Charger plus", de sorte que cliquer dessus afficherait dix éléments supplémentaires à chaque fois.

Il y a une substitution de mise en page de blog avec le bouton.

<a id="btn-show-more" href="<?php echo JRoute::_('&start=' . ( ($this->pagination->pagesCurrent) * $this->pagination->limit) ); ?>"><?php echo JText::_( 'BUTTON_TEXT' ); ?></a>

conteneur div

<div id="ajax-result"></div>

Et le prochain script

<script type="text/javascript">
    jQuery(document).ready(function ($) {
       $(document).on('click', '#btn-show-more', function () {
           $.get($(this).attr('href'), function (responce) {
               $('#ajax-result').html(responce)
           });
           return false;
       });
    })
</script>

En conséquence, en cliquant sur le bouton, toute la page avec la section de tête, etc., est chargée.

Comment charger des objets seulement?

2
user7102

Dans votre dossier de modèles (/ racine_joomla/templates/<nom_modèle> /), créez un fichier portant un nom unique, tel que articlelist.php.

Dans ce fichier, ajoutez ce code

<jdoc:include type="component" />

Ensuite, modifiez votre code ajax pour modifier l'URL avant qu'il ne soit demandé d'inclure "tmpl = articleLelist". Peut-être quelque chose comme ça:

<script type="text/javascript">
jQuery(document).ready(function ($) {
   $(document).on('click', '#btn-show-more', function () {
       var url = $(this).attr('href');
       url = ( url.indexOf('?') >=0 ? '&' : '?' ) + 'tmpl=articlelist';           
       $.get(url, function (responce) {
           $('#ajax-result').html(responce)
       });
       return false;
   });
})
</script>

Joomla utilisera articlelist.php à la place de votre fichier principal index.php pour charger le composant, ce qui entraînera le chargement du code du composant uniquement (puisqu'il s'agit de la seule chose figurant dans articlelist.php).

1
Drew G

Vous pouvez également simplement récupérer un contenu spécifique avec un sélecteur, comme ceci:

$( "#ajax-result" ).load( "index.php #container" );

selon ici , idem pour ajax (je pense)

0