it-swarm.dev

Carica l'articolo K2 con ajax

Sto usando il layout di categoria per mettere in evidenza articoli sulla mia prima pagina con joomla 3.3. Sto personalizzando questa vista in modo che i collegamenti agli articoli tirino gli articoli in questa pagina tramite Ajax al clic.

Questo è il codice pertinente che ho personalizzato:

HTML:

<h2 class="catView" data-link="<?php echo $this->item->link; ?> #k2Container">
    <?php if(isset($this->item->editLink)): ?>
</h2>

jQuery:

$('article.catView h2').click(function(){
    var link    = $(this).attr("data-link");
    $(this).parents().next('.artContainer').slideToggle(500).load(link);
});

Funziona, riesco a recuperare i dati di cui ho bisogno e visualizzarli correttamente.

[~ ~ #] ma [~ ~ #]

Mi chiedo se questo è il modo corretto per farlo, invece di recuperare un'altra pagina dovrei provare a recuperare i dati direttamente dal database? esiste un modo "speciale joomla" per farlo?

Preferirei non fare affidamento su un'estensione di terze parti per questo e vorrei controllare e comprendere questo compito.

3
web-tiki

http://jeffchannell.com/Joomla/load-the-joomla-framework-in-a-non-joomla-php-script.html

Usando la tecnica sopra puoi creare un file ajax.php nella directory principale e usare le API di Joomla per chiamare i dati dal database, quindi convertirli in JSON.

Ciò ti consentirà di utilizzare gli helper k2 per aiutarti. La chiamata al database in questo modo deve essere utilizzata solo se è necessario un elevato livello di personalizzazione.

betweenbrian ha un buon punto con questo link http://getk2.org/blog/786-k2-v257-released-introduces-json-jsonp-content-output in quanto se k2 supporta JSON, e recupera i dati di cui hai bisogno, probabilmente è perfetto per quello che devi fare.

mi viene anche in mente com_ajax, tuttavia è stato creato per moduli/plugin. k2 stesso è un componente quindi probabilmente non funzionerà come previsto.

Quindi, in conclusione, non esiste un modo "speciale di Joomla" per gestire Ajax, ma ci sono molte possibilità per ottenere ciò di cui hai bisogno.

2
Jordan Ramstad