GlisWeb framework
_marchi.scheda.php
Vai alla documentazione di questo file.
1 <?php
2 
13  // seleziono le sottocategorie
14  if( isset( $ct['page']['metadati']['id_marchio'] ) && ! empty( $ct['page']['metadati']['id_marchio'] ) ) {
15 
16  // parametri di base
17  $params = array(
18  array( 's' => $cf['localization']['language']['id'] ),
19  array( 's' => $ct['page']['metadati']['id_marchio'] )
20  );
21 
22  // impostazioni di base
23  $perpg = 50;
24  $filters = array();
25  $order = $orders = array();
26 
27  // ordinamento di default
28  if( empty( $orders ) ) {
29  $orders = array( 'prodotti_categorie.ordine' => 'ASC' );
30  }
31 
32  // paginazione (SDF modificato $_REQUEST['pg'] in $_REQUEST['__curpg__'] per uniformità con documentazione
33  if( isset( $_REQUEST['__curpg__'] ) ) {
34  $pg = $_REQUEST['__curpg__'] * $perpg;
35  } else {
36  $pg = $_REQUEST['__curpg__'] = 0;
37  }
38 
39 
40  // congiunzione
41  if( isset( $_SESSION['__view__']['__pages__'][ $ct['page']['id'] ]['__filters__']['__inclusivo__'] ) ) {
42  $conj = ' OR ';
43  } else {
44  $conj = ' AND ';
45  }
46 
47 
48  // SDF filtro per categoria
49  if( isset( $_SESSION['__view__']['__pages__'][ $ct['page']['id'] ]['__filters__']['categoria'] ) ) {
50  $filters[] = ' categorie_prodotti_path_check( prodotti_categorie.id_categoria, ? ) = 1 ';
51  $params[] = array( 's' => $_SESSION['__view__']['__pages__'][ $ct['page']['id'] ]['__filters__']['categoria'] );
52  }
53 
54  // ordinamento
55  foreach( $orders as $fld => $ord ) {
56  $order[] = $fld . ' ' . $ord;
57  }
58 
59  // query di recupero prodotti della pagina
60  $q = 'SELECT SQL_CALC_FOUND_ROWS prodotti.id, contenuti.title, contenuti.h1, contenuti.h2, contenuti.cappello, contenuti.abstract, '
61  .'immagini.path AS immagine, contenuti_immagine.cappello AS didascalia, '
62  .'( prodotti.larghezza_prodotto + prodotti.lunghezza_prodotto ) AS somma_dimensioni, '
63 # .'concat( "categorie_prodotti_'.$ct['page']['metadati']['id_categoria_prodotti'].'_prodotti_", prodotti.id ) AS id_pagina, '
64  .'prodotti.id_marchio, marchi.nome as marchio, ' // SDF
65  .'mPiuVenduti.testo AS piu_venduti '
66  .'FROM prodotti '
67  .'INNER JOIN prodotti_categorie ON prodotti_categorie.id_prodotto = prodotti.id '
68  .'INNER JOIN contenuti ON ( contenuti.id_prodotto = prodotti.id AND contenuti.id_lingua = ? ) '
69  .'INNER JOIN tipologie_pubblicazione ON tipologie_pubblicazione.id = prodotti.id_tipologia_pubblicazione '
70  .'LEFT JOIN prezzi ON prezzi.id_prodotto = prodotti.id '
71  .'LEFT JOIN iva ON iva.id = prezzi.id_iva '
72  .'LEFT JOIN immagini ON ( immagini.id_prodotto = prodotti.id AND immagini.id_ruolo = 4 ) '
73  .'LEFT JOIN contenuti AS contenuti_immagine ON ( contenuti_immagine.id_immagine = immagini.id AND contenuti.id_lingua = contenuti.id_lingua ) '
74  .'LEFT JOIN metadati AS mPiuVenduti ON ( mPiuVenduti.id_prodotto = prodotti.id AND mPiuVenduti.nome = "piu_venduti" ) '
75  .'LEFT JOIN marchi ON (prodotti.id_marchio = marchi.id ) ' // SDF
76  .'LEFT JOIN articoli ON prodotti.id = articoli.id_prodotto ' // SDF
77  .'WHERE tipologie_pubblicazione.se_pubblicato = 1 '
78  // .'AND articoli.id_taglia IS NOT NULL ' // SDF
79  // .'AND prodotti.se_disponibile = 1 ' // SDF
80  .'AND (SELECT count(*) FROM immagini where id_articolo IN (SELECT articoli.id FROM articoli WHERE id_prodotto = prodotti.id)) ' // SDF
81  // .'OR ( SELECT count(*) FROM immagini where id_prodotto = prodotti.id ) > 0 ) ' // SDF
82  .'AND prodotti.id_marchio = ? ' // SDF 09-07-2020
83  .( ( count( $filters ) ) ? 'AND (' : NULL ) . implode( $conj, $filters ) . ( ( count( $filters ) ) ? ') ' : NULL )
84  .'GROUP BY prodotti.id '
85  .'ORDER BY ' . implode( ', ', $order ) . ' '
86  .'LIMIT ?,?';
87 
88 
89  // SDF query per il conteggio del numero totale di prodotti (stessi parametri della q sopra ma senza paginazione)
90  $qTot = 'SELECT count(prodotti.id) '
91  .'FROM prodotti '
92  .'INNER JOIN prodotti_categorie ON prodotti_categorie.id_prodotto = prodotti.id '
93  .'INNER JOIN contenuti ON ( contenuti.id_prodotto = prodotti.id AND contenuti.id_lingua = ? ) '
94  .'INNER JOIN tipologie_pubblicazione ON tipologie_pubblicazione.id = prodotti.id_tipologia_pubblicazione '
95  .'LEFT JOIN prezzi ON prezzi.id_prodotto = prodotti.id '
96  .'LEFT JOIN iva ON iva.id = prezzi.id_iva '
97  .'LEFT JOIN immagini ON ( immagini.id_prodotto = prodotti.id AND immagini.id_ruolo = 4 ) '
98  .'LEFT JOIN contenuti AS contenuti_immagine ON ( contenuti_immagine.id_immagine = immagini.id AND contenuti.id_lingua = contenuti.id_lingua ) '
99  .'LEFT JOIN metadati AS mPiuVenduti ON ( mPiuVenduti.id_prodotto = prodotti.id AND mPiuVenduti.nome = "piu_venduti" ) '
100  .'LEFT JOIN marchi ON (prodotti.id_marchio = marchi.id ) ' // SDF
101  .'LEFT JOIN articoli ON prodotti.id = articoli.id_prodotto ' // SDF
102  .'WHERE tipologie_pubblicazione.se_pubblicato = 1 '
103  .'AND (SELECT count(*) FROM immagini where id_articolo IN (SELECT articoli.id FROM articoli WHERE id_prodotto = prodotti.id)) ' // SDF
104  .'AND prodotti.id_marchio = ? ' // SDF 09-07-2020
105  .( ( count( $filters ) ) ? 'AND (' : NULL ) . implode( $conj, $filters ) . ( ( count( $filters ) ) ? ') ' : NULL )
106  .'GROUP BY prodotti.id ';
107 
108 
109  // SDF leggo il numero totale di prodotti
110  $totpg = count( mysqlQuery( $cf['mysql']['connection'], $qTot, $params ) );
111 
112 
113  // aggiunta della paginazione
114  $params[] = array( 's' => $pg );
115  $params[] = array( 's' => $perpg );
116 
117 
118  // SDF aggiunto numero massimo pagine
119  $_REQUEST['__maxpg__'] = floor( $totpg / $perpg );
120 
121 
122  // selezione dei prodotti
123 # $ct['page']['contents']['prodotti'] = mysqlCachedQuery(
124 # $cf['memcache']['connection'],
125  $ct['page']['contents']['prodotti'] = mysqlQuery(
126  $cf['mysql']['connection'],
127  $q,
128  $params
129  );
130 
131 # echo "<br>query: " . $q . "<br>";
132 # print_r($params);
133 
134 // echo "pg: " . $pg;
135 // echo "record con limit: " . count($ct['page']['contents']['prodotti']) . PHP_EOL;
136 // echo "record totali" . $totpg;
137 
138 
139  // TODO
140  // ciclo su $ct['page']['contents']['prodotti'] per creare il sotto array di articoli
141  // $ct['page']['contents']['prodotti'][id_prodotto]['contents']['articoli']
142 
143  // SDF leggo il primo articolo (per l'immagine prodotto) e le info sul prezzo
144  foreach( $ct['page']['contents']['prodotti'] as $key => $prod ) {
145 
146  $immagine = mysqlQuery(
147  $cf['mysql']['connection'],
148  'SELECT nome, path, orientamento FROM immagini WHERE id_articolo = ( SELECT id FROM articoli WHERE id_prodotto = ? ORDER BY id LIMIT 1 ) ORDER BY ordine LIMIT 1'
149  ,
150  array(
151  array( 's' => $prod['id'] )
152  )
153  );
154 
155  $ct['page']['contents']['prodotti'][ $key ]['immagine_principale'] = $immagine[0];
156 
157  // leggo il prezzo
158  $prezzi = mysqlQuery(
159  $cf['mysql']['connection'],
160  'SELECT * from prezzi_view WHERE id_prodotto = ?'
161  ,
162  array(
163  array( 's' => $prod['id'] )
164  )
165  );
166 
167  foreach( $prezzi as $prezzo ) {
168  $ct['page']['contents']['prodotti'][ $key ]['prezzi'][ $prezzo['listino'] ] = $prezzo;
169 
170  // SDF 01-07-2020 aggiunta di eventuali sconti
171  $variazione_prezzo = variazionePrezzo( $cf['mysql']['connection'], $prezzo['id_prodotto'], $prezzo['prezzo_lordo'] );
172  $ct['page']['contents']['prodotti'][ $key ]['prezzi'][ $prezzo['listino'] ]['tipo_sconto'] = $variazione_prezzo['tipoSconto'];
173  $ct['page']['contents']['prodotti'][ $key ]['prezzi'][ $prezzo['listino'] ]['sconto'] = $variazione_prezzo['sconto'];
174  $ct['page']['contents']['prodotti'][ $key ]['prezzi'][ $prezzo['listino'] ]['importo_sconto'] = $variazione_prezzo['importoSconto'];
175  $ct['page']['contents']['prodotti'][ $key ]['prezzi'][ $prezzo['listino'] ]['prezzo_scontato'] = $variazione_prezzo['prezzoScontato'];
176  }
177  }
178 
179  // print_r($ct['etc']['taglie']);
180  }
181 
182 
183 
184 
185  // debug
186  // print_r( $ct['page']['metadati'] );
187  // print_r( $_REQUEST );
188  //print_r($ct['page']['contents']['prodotti']);
189 
190 ?>
if(isset( $cx['contatti'])) if(isset( $cf['site']['contatti'])) $ct['contatti']
Definition: _035.common.php:24
mysqlQuery( $c, $q, $p=false, &$e=array())
$cf['ricerca']['template']
Definition: _030.common.php:7
if(isset( $_REQUEST['amazonCheckoutSessionId'])) $_SESSION['carrello']
variazionePrezzo( $c, $list, $idProd, $prezzoProd, $qtProd=1)
Definition: _mysql.tools.php:7
$_REQUEST['__view__'][ $ct['view']['id']]['__restrict__']['id_progetto']['EQ']