web-dev-qa-db-fra.com

Placer des annonces après chaque 10e message avec Infinite Scroll

Je dois charger quelques annonces, du HTML normal et deux script Java. J'ai essayé la méthode PHP de cette:

<?php $postnum++; if($postnum%10 == 0) { ?>
 <div id="topset">
  <ul id="top_ad_list">
      <?php dynamic_sidebar('botad'); ?>
  </ul>
 </div> 
<?php } ?>

Ce qui se passe est pour la première pagination du défilement infini, il chargera l’ajout, sur les nouvelles pages chargées, il ne chargera plus les annonces.

Le défilement infini que j'utilise comme suit: Infinite Ajax Scroll

2
espnicholas

Voir ceci: http://infiniteajaxscroll.com/docs/events.html#rendered

Donc, placez tout le code d'annonce dans une fonction ajax ( http://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_%28action%29 )

add_action( 'wp_ajax_your_ad_fn', 'your_ad_fn');
add_action( 'wp_ajax_nopriv_your_ad_fn', 'your_ad_fn');

function your_ad_fn(){
    // your ad code here
    // if sending js, set Content-type header to application/javascript
    // if sending html, text/html
}

https://stackoverflow.com/questions/9664282/difference-between-application-x-javascript-and-text-javascript-content-types

Ensuite, dans votre js personnalisé,

ias.on('rendered', function(items) {
    var $items = $(items);
    jQuery.get(
        'http://yoursite.com/wp-admin/admin-ajax.php', // I've just illustrated, don't write the url directly, do it via wp_localize_script
    ).done( function( data ) ){
         $items.after(data); // append ad after all the loaded posts
    });        
})

Ceci est PAS le code exact, vous devez régler vous-même certains détails.

1
Saurabh Shukla

La solution à votre problème consiste à ajouter une fonctionnalité utilisant l'événement onLoadItems, grâce auquel vous injectez une annonce à chaque fois que dix éléments supplémentaires ont été ajoutés, en gardant une trace du nombre d'éléments chargés en ajoutant la taille du tableau items passé lorsque l'événement est déclenché. un compteur et lorsque le compteur atteint 10, ajoute une annonce et remet votre compteur à 0.

D'après votre réponse, je suppose que votre niveau de connaissance de JavaScript n'est pas terrible. Et aussi que vous auriez du mal à faire ce changement même avec la documentation fournie avec le script? Ai-je raison? Savez-vous ce que sont les événements et comment ils fonctionnent? Sinon, vous pouvez attendre que quelqu'un poste une solution entièrement codée ici, ou poser votre question sous forme de problème dans le suivi des problèmes de GitHub.

0
Simon Forster