Back to top

Autore Topic: [RISOLTO] Alberghi 2.1.3. Ordinamento categorie random (casuale)  (Letto 2263 volte)

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Inserisco pensando sia cosa utile la soluzione già postata nel forum del componente.

Tanti si saranno sentiti porre la domanda "Ma perchè si vedono sempre le solite strutture nelle prime posizioni ?".

Fino ad oggi mi sembra che non erano state trovate soluzioni definitive.

Con le modifiche che illustrerò si ottiene il risultato di avere l'ordinamento casuale, che cambia ad ogni ingresso nella visione elenco categorie.

La soluzione è basata sull'uso della tecnica delle sessioni di php, che in sintesi consentono di memorizzare delle variabili e riservarne l'uso all'utente che le ha generate fino a che non esce dal programma oppure le libera quando necessario.

Per ottenere questo è stato necessario modificare il codice del file che si trova in components/com_alberghi/alberghi.php

Inserire come prime righe del programma, subito dopo i commenti iniziali, queste. E' assolutamente necessario che siano le prime righe altrimenti non funziona!!

Codice: [Seleziona]
<?php
//****************************************************************
// Component: Alberghi
// basato su Accombo di Niall McCullagh mambo@glenelly.net
// alberghi.php
// ======================
// Hacked by: Vamba - many thanks to Luscarpa www.webagain.net
// Email:  webmaster@joomlaitalia.com
// Version: 2.1
//****************************************************************
session_start();
if (isset(
$_SESSION['counter'])) {
$_SESSION['counter']++;
} else {
$_SESSION['counter']=1;
}
$catid1=0;
if (isset(
$_SESSION['catid'])) {
$catid1=$_SESSION['catid'];
}

la prima riga apre la sessione e deve essere la prima istruzione
le due if servono per informare quando un utente entra dopo la prima volta e quando cambia la categoria da vedere.


modificare queste righe che si trovano circa fra le righe n. 369 e n. 378 del file originale inserendo le modifiche illustrate
Codice: [Seleziona]
$query1="SELECT * FROM #__alberghi"
. "\n WHERE published = '1'"
. "\n AND ( publish_up = '0000-00-00 00:00:00' OR publish_up <= '$now' )"
. "\n AND ( publish_down = '0000-00-00 00:00:00' OR publish_down >= '$now' )" 
. "\n AND catid = '".$catid."'"
. "\n AND access<='".$gid."'"
//. "\n ORDER BY title ASC LIMIT ".$start.",". "10";
. "\n ORDER BY RAND()";
if ((($start==0) and $_SESSION['counter']==1) or ($catid1 != $catid)) {
$database->setQuery($query1);
$rowsall = $database->loadObjectList();
$_SESSION['rowsall']=$rowsall;
$_SESSION['catid']=$catid;   //
}
$rowsall=$_SESSION['rowsall'];
for ($i=0; $i<=9; $i++)
{
if ($start+$i+1>$count) break;
$rows[$i]=$rowsall[($start+$i)];
}

è stata commentata la riga della query che produceva l'ordinamento alfabetico, 10 righe per volta, ed è stato inserito il comando che consente di ottenere dalla query tutte le strutture in modo casuale.
Tutte le strutture vengono memorizzate in un array $rowsall e sucessivamente salvate nella sessione con
Codice: [Seleziona]
$_SESSION['rowsall']=$rowsall; insieme alla categoria
Codice: [Seleziona]
$_SESSION['catid']=$catid; questo avviene una volta sola per ogni utente. Dopo il primo accesso l'utente non leggerà più la query dal database ma recupererà le strutture dalla sessione con il seguente codice
Codice: [Seleziona]
$rowsall=$_SESSION['rowsall'];Il successivo ciclo for serve a rileggere le strutture a gruppi di 10 ad ogni cambio pagina.
Questo è il cuore della modifica, perchè cambiando solo l'ordinamento della query con RAND(), nel vecchio codice, ad ogni gruppo casuale di 10 strutture si generava una nuova query, che poteva mostrare nelle pagine successive strutture già viste nelle pagine precedenti oppure non mostrare mai alcune strutture.

l'ultima modifica da fare è circa alla riga n. 875, del file originale, dove deve essere inserita questa
Codice: [Seleziona]
session_destroy();questo comando annulla la sessione e libera le variabili memorizzate ad ogni cambio di categoria.

Questo è tutto. Verificato in locale. Se ci sono problemi segnalate.

Vales
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline Francesco Blangiforti

  • Appassionato
  • ***
  • Post: 366
  • Sesso: Maschio
  • ci vuole FIATO........
    • Mostra profilo
Re: [RISOLTO] Alberghi 2.1.3. Ordinamento categorie random (casuale)
« Risposta #1 il: 13 Apr 2009, 23:00:02 »
sei stato chiarissimo
_________________________________
Francesco Blangiforti
url: www.blangiforti.it - fax: 09331936146

 



Web Design Bolzano Kreatif