Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates > Smarty
Smarty Forum d'entraide sur le moteur de templates Smarty. Avant de poster -> FAQ Smarty et Cours Smarty
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2011, 11h11   #1
Invité de passage
 
cedric besse
Inscription : mai 2010
Messages : 12
Détails du profil
Informations personnelles :
Nom : cedric besse

Informations forums :
Inscription : mai 2010
Messages : 12
Points : 1
Points : 1
Par défaut Afficher le module d'un script sur un autre, étant sur le méme serveur

Bonjour,

je souhaiterais savoir s'il est possible d'afficher le module d'un script
sur un autre script tout deux étant sur le même serveur dans deux répertoires
distinct.

Mon soucis est que j'utilise prestashop et openauto classified et j'aimerais par exemple faire afficher le module nouveauté du script prestashop sur la sidebar du script openauto classified.

J'ai essayé de faire un include tout simple par rapport à la doc smarty
mais j'ai un message qui me dit qu'il ne trouve pas le chemin

J'ai aussi essayé de faire un include sur une simple page php pour voir ce que cela donné et page blanche

Ma question serait de savoir si déjà cela est possible
et bien sur comment, un exemple serait le bienvenue

En cherchant pendant un bon moment je suis tombé sur la fonction php curl
mais je ne sais pas quel url mettre pour appeler uniquement le module...

Merci
poupou19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 15h38   #2
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 957
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 957
Points : 2 646
Points : 2 646
Bonjour

Normalement l'include template du module prestashop devrait marcher sur openauto classified

Peut on voir comment tu fais l'include du module et à quoi ça se ressemble + le message d'erreur exact?
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 03h13   #3
Invité de passage
 
cedric besse
Inscription : mai 2010
Messages : 12
Détails du profil
Informations personnelles :
Nom : cedric besse

Informations forums :
Inscription : mai 2010
Messages : 12
Points : 1
Points : 1
Merci krachik,

par rapport à ce que j'ai fait par exemple si je souhaite afficher
le module homecarousel de Pretashop qui se trouve dans l'arboresence:

../boutique/modules/homecarousel/homecarousel.tpl

sur la page d'index de Open auto classified
qui se trouve:

../templates/Default/index.tpl


(le script Open auto classified étant à la racine du site
et le script Prestashop dans le dossier boutique)


J'ai rajouté sur

../templates/Default/index.tpl

Code :
{include file="../boutique/modules/homecarousel/homecarousel.tpl"}

ce qui affiche l'erreur suivante la ou il devrait s'afficher sur la page
d'index de Open auto classified:

Citation:
Warning: Smarty error: unable to read resource: "../boutique/modules/homecarousel/homecarousel.tpl"
in /home/site/public_html/Includes/libs/Smarty.class.php on line 1094

Dans Smarty.class.php de la ligne 1086 à la ligne 1109

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    /**
     * trigger Smarty error
     *
     * @param string $error_msg
     * @param integer $error_type
     */
    function trigger_error($error_msg, $error_type = E_USER_WARNING)
    {
        trigger_error("Smarty error: $error_msg", $error_type);
    }
 
 
    /**
     * executes & displays the template results
     *
     * @param string $resource_name
     * @param string $cache_id
     * @param string $compile_id
     */
    function display($resource_name, $cache_id = null, $compile_id = null)
    {
        $this->fetch($resource_name, $cache_id, $compile_id, true);
    }
poupou19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 09h57   #4
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 957
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 957
Points : 2 646
Points : 2 646
ils sont sur le même serveur mais est ce qu'ils sont sur le même domaine?
J'ai l'impression que ton include fait dans Open auto classified est positionné par rapport à prestashop et non à Open auto classified.

Avec l'index ../templates/Default/index.tpl faut juste voir comment est situé le dossier boutique de prestashop par rapport à au dossier template de Open auto classified

Tu peux préciser l'arborescence des 2 CMS, tu peux mettre des XXX si tu veux histoire de voir juste les débuts de dossiers genre :
/home/xxxx/xxxx/... /boutique/modules/homecarousel/homecarousel.tpl
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 11h06   #5
Invité de passage
 
cedric besse
Inscription : mai 2010
Messages : 12
Détails du profil
Informations personnelles :
Nom : cedric besse

Informations forums :
Inscription : mai 2010
Messages : 12
Points : 1
Points : 1
Alors oui ils sont tous deux sur le même domaine
dans le même dossier car j'ai en faite deux domaines
sur ce serveur un .fr et .eu

le .eu pointe sur le dossier monsite.eu

le chemin: /public_html/monsite.eu

j'ai installé le script open auto directement dans ce dossier
du coup le chemin du template de l'index est:

/public_html/monsite.eu/templates/Default/index.tpl


Dans le même dossier (monsite.eu) j'ai rajouté un dossier nomé boutique_auto
et j'ai mis dedans tous les fichiers de prestashop

le chemin du dossier: /public_html/monsite.eu/boutique_auto

et le chemin du module à installer

/public_html/monsite.eu/boutique_auto/modules/homecarous/homecarousel.tpl

(j'ai fait des "copier coller" de filezilla des chemins en remplaçant juste le nom du site)

Par contre je peux vous donner l'adresse du site si ça ne dérange pas et
si cela peu être utile.

Merci en tous cas
poupou19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 13h54   #6
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 957
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 957
Points : 2 646
Points : 2 646
Je vois mieux ce que tu veux faire , le soucis c'est que tes 2 CMS n'utilisent pas la même configuration smarty, pour Open auto classified il faut que le tpl soit dans le répertoire template et contenu le dossier associé. Or prestashop utilise une autre config qui différente, du coup un include en chemin relatif marchera pas.

Essaies avec ceci en chemin absolu
Code :
{include file='file:/public_html/monsite.eu/boutique_auto/modules/homecarous/homecarousel.tpl'}
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 00h12   #7
Invité de passage
 
cedric besse
Inscription : mai 2010
Messages : 12
Détails du profil
Informations personnelles :
Nom : cedric besse

Informations forums :
Inscription : mai 2010
Messages : 12
Points : 1
Points : 1
Merci, mais malheureusement ça ne marche pas non plus

Je reçois le même message d'erreur:

Citation:
Warning: Smarty error: unable to read resource: "file:/public_html/monsite.eu/boutique_auto/modules/homecarousel/homecarousel.tpl" in /home/digicars/public_html/monsite.eu/Includes/libs/Smarty.class.php on line 1094
Serait-il possible que d'un CMS à un autre le htaccess ou une configuration
du serveur empêche la lecture de homecarousel.tpl ?
poupou19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 00h29   #8
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 957
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 957
Points : 2 646
Points : 2 646
ah dans ce cas c'est peut être ceci qu'il faut mettre
Code :
{include file='file:/home/digicars/public_html/monsite.eu/boutique_auto/modules/homecarous/homecarousel.tpl'}
Enfin tu dois savoir mieux que moi le bon chemin mais il faut que le chemin soit absolu

Citation:
Serait-il possible que d'un CMS à un autre le htaccess ou une configuration du serveur empêche la lecture de homecarousel.tpl ?
Possible, si ma mémoire est bonne il semblerait qu'il avait une faille (sur le fait qu'on peut se faire piquer des templates (payants) ) qui a été corrigé sur prestashop qui peut influer sur ta situation. faut vérifier si ça joue pas. A part ça les 2 CMS etant juste côte à côte faudrait vraiment une config super précise au niveau du serveur pour bloquer ce genre de chose .

Comme j'ai dit les 2 CMS n'ayant pas les mêmes configurations smarty cause ton soucis.

Le code de ton module que tu veux mettre ressemble à quoi?
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 08h09   #9
Invité de passage
 
cedric besse
Inscription : mai 2010
Messages : 12
Détails du profil
Informations personnelles :
Nom : cedric besse

Informations forums :
Inscription : mai 2010
Messages : 12
Points : 1
Points : 1
Effectivement en rajoutant ce qui manquait ça change tout mais
(/home/digicars)

du coup si je met:


Code :
{include file='file:/home/digicars/public_html/digicars.eu/boutique_auto/modules/homecarousel/homecarousel.tpl'}
j'ai l'erreur

Citation:
Fatal error: Smarty error: [in file:/home/digicars/public_html/digicars.eu/boutique_auto/modules/homecarousel/homecarousel.tpl line 42]: syntax error: unrecognized tag 'displayWtPrice' (Smarty_Compiler.class.php, line 590) in /home/digicars/public_html/digicars.eu/Includes/libs/Smarty.class.php on line 1094


Si je fais par contre:


Code :
1
2
3
4
5
{php}
 
include("/home/digicars/public_html/digicars.eu/boutique_auto/modules/homecarousel/homecarousel.tpl");
 
  {/php}

cela m'affiche sur la page le code sans les valeurs peu être est-ce une piste?

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{if $autoplay} {else} {/if} {if isset($products) AND $products}
 
    * {foreach from=$products item=product name=homeFeaturedProducts} {assign var='productLink' value=$link->getProductLink($product.id_product, $product.link_rewrite)} {$product.legend} {if $displayname}
      {$product.name|escape:htmlall:'UTF-8'|truncate:45}
      {/if} {if $displayprice}
 
      {displayWtPrice p=$product.price}
      {/if}
      {/foreach} 
 
{else}
 
{l s='No products for carousel' mod='homecarousel'}
{/if}
poupou19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 22h41   #10
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 957
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 957
Points : 2 646
Points : 2 646
C'est juste le tag displayWtPrice qui est pas reconnu et encore là c'est dû aux dépendances liées a prestashop.

Je ne pensais pas que le tpl du module avait autant de variable, et donc ton include ne peut pas passer car il faut aussi tenir compte des variables et où elles ont été initialisées.

Il faut trouver le php associé a ton tpl


Je te déconseille l'include php de ton tpl, déjà qu'un include php pur doit être durement justifié, faire un include php d'un tpl alors

Fais voir le php du module pour voir ce qu'on peut faire

Une autre solution serait d'inclure en frame sur ta page open auto classified le lien vers ton module prestashop (c'est a dire que tu crées au niveau de prestashop une page dédiée au module que tu mettras en frame au niveau de l'autre CMS)
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 23h46   #11
Invité de passage
 
cedric besse
Inscription : mai 2010
Messages : 12
Détails du profil
Informations personnelles :
Nom : cedric besse

Informations forums :
Inscription : mai 2010
Messages : 12
Points : 1
Points : 1
ok merci beaucoup, parce que je comprend la logique de smarty et ce qu'on essaie de faire la, mais c'est loin d'être innée pour moi.

Pour les frames j'y ai pensé mais apparemment ce n'est pas super super point de vue référencement à ce que j'avais compris?

Mais en dernier recours, je pense que je le l'utiliserais à ce moment la

le code de homecarousel.php:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
 
<?php
 
class HomeCarousel extends Module
{
	private $_html = '';
	private $_postErrors = array();
 
	function __construct()
	{
		$this->name = 'homecarousel';
		$this->tab = 'Home';
		$this->version = '0.0.0';
 
		parent::__construct(); // The parent construct is required for translations
 
		$this->page = basename(__FILE__, '.php');
		$this->displayName = $this->l('MGC Carousel of products on the home page');
		$this->description = $this->l('Display a carousel of products in the middle of your homepage');
	}
 
	function install()
	{
		if (!Configuration::updateValue('HOME_CAROUSEL_NBR', 20) OR !parent::install() OR !$this->registerHook('home'))
			return false;
		if (!Configuration::updateValue('HOME_CAROUSEL_SORT', 0))
			return false;
		if (!Configuration::updateValue('HOME_CAROUSEL_DISPLAY_PRICE', 1))
			return false;
		if (!Configuration::updateValue('HOME_CAROUSEL_DISPLAY_NAME', 1))
			return false;
		if (!Configuration::updateValue('HOME_CAROUSEL_SKIP_CAT', 1))
			return false;
		if (!Configuration::updateValue('HOME_CAROUSEL_AUTOPLAY', 1))
			return false;
		if (!Configuration::updateValue('HOME_CAROUSEL_AUTOPLAY_DURATION', 3))
			return false;
		if (!Configuration::updateValue('HOME_CAROUSEL_ITEMS_VISIBLE', 5))
			return false;
		if (!Configuration::updateValue('HOME_CAROUSEL_ITEMS_SCROLL', 3))
			return false;
		if (!Configuration::updateValue('HOME_CAROUSEL_IMAGE_TYPE', 'home'))
			return false;
		return true;
	}
 
	public function getContent()
	{
		$output = '<h2>'.$this->displayName.'</h2>';
		if (Tools::isSubmit('submitHomeCarousel'))
		{
			$nbr = intval(Tools::getValue('nbr'));
			$sort = intval(Tools::getValue('sort'));
			$displayprice = intval(Tools::getValue('displayprice'));
			$displayname = intval(Tools::getValue('displayname'));
			$skipcat = Tools::getValue('skipcat');
			$autoplay = intval(Tools::getValue('autoplay'));
			$autoplayduration = intval(Tools::getValue('autoplayduration'));
			$itemsvisible = intval(Tools::getValue('itemsvisible'));
			$itemsscroll = intval(Tools::getValue('itemsscroll'));
			$imagetype = Tools::getValue('imagetype');
 
			if (!$nbr OR $nbr <= 0 OR !Validate::isInt($nbr))
				$errors[] = $this->l('Invalid number of product');
			else
				Configuration::updateValue('HOME_CAROUSEL_NBR', $nbr);
 
			Configuration::updateValue('HOME_CAROUSEL_SORT', $sort);
			Configuration::updateValue('HOME_CAROUSEL_DISPLAY_PRICE', $displayprice);
			Configuration::updateValue('HOME_CAROUSEL_DISPLAY_NAME', $displayname);
 
			if (!empty($skipcat))
				Configuration::updateValue('HOME_CAROUSEL_SKIP_CAT', implode(',',$skipcat));
 
			Configuration::updateValue('HOME_CAROUSEL_AUTOPLAY', $autoplay);
			Configuration::updateValue('HOME_CAROUSEL_AUTOPLAY_DURATION', $autoplayduration);
			Configuration::updateValue('HOME_CAROUSEL_ITEMS_VISIBLE', $itemsvisible);
			Configuration::updateValue('HOME_CAROUSEL_ITEMS_SCROLL', $itemsscroll);
			Configuration::updateValue('HOME_CAROUSEL_IMAGE_TYPE', $imagetype);
 
			if (isset($errors) AND sizeof($errors))
				$output .= $this->displayError(implode('<br />', $errors));
			else
				$output .= $this->displayConfirmation($this->l('Settings updated'));
		}
		return $output.$this->displayForm();
	}
 
	function recurseCategory($categories, $current, $id_category = 1, $selectids_array)
	{
		global $currentIndex;		
 
		echo '<option value="'.$id_category.'"'.(in_array($id_category,$selectids_array) ? ' selected="selected"' : '').'>'.
		str_repeat('&nbsp;', $current['infos']['level_depth'] * 5) . preg_replace('/^[0-9]+\./', '', stripslashes($current['infos']['name'])) . '</option>';
		if (isset($categories[$id_category]))
			foreach ($categories[$id_category] AS $key => $row)
				$this->recurseCategory($categories, $categories[$id_category][$key], $key, $selectids_array);
	}
 
 
	public function displayForm()
	{
		global $cookie,$currentIndex;
 
		$output = '
					<form action="'.$_SERVER['REQUEST_URI'].'" method="post">
						<fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend>
 
						<label>'.$this->l('Autoplay Carousel').'</label>
						<div class="margin-form">
							<input type="radio" name="autoplay" id="autoplay_on" value="1" '.(Tools::getValue('autoplay', Configuration::get('HOME_CAROUSEL_AUTOPLAY')) ? 'checked="checked" ' : '').'/>
							<label class="t" for="autoplay_on"> <img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Enabled').'" /></label>
							<input type="radio" name="autoplay" id="autoplay_off" value="0" '.(!Tools::getValue('autoplay', Configuration::get('HOME_CAROUSEL_AUTOPLAY')) ? 'checked="checked" ' : '').'/>
							<label class="t" for="autoplay_off"> <img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('Disabled').'" /></label>
						</div>		
 
						<label>'.$this->l('Autoplay time').'</label>
						<div class="margin-form">
							<input type="text" size="5" name="autoplayduration" value="'.Tools::getValue('autoplayduration', Configuration::get('HOME_CAROUSEL_AUTOPLAY_DURATION')).'" />
							<p class="clear">'.$this->l('The time between each carousel move').'</p>
						</div>		
						<label>'.$this->l('Number of products in the carousel').'</label>
						<div class="margin-form">
							<input type="text" size="5" name="nbr" value="'.Tools::getValue('nbr', Configuration::get('HOME_CAROUSEL_NBR')).'" />
							<p class="clear">'.$this->l('The number of products in the carousel (default: 20)').'</p>
						</div>
 
						<label>'.$this->l('Number of product visible').'</label>
						<div class="margin-form">
							<input type="text" size="5" name="itemsvisible" value="'.Tools::getValue('itemsvisible', Configuration::get('HOME_CAROUSEL_ITEMS_VISIBLE')).'" />
							<p class="clear">'.$this->l('The number of products displayed in the visible part of the carousel').'</p>
						</div>				
 
						<label>'.$this->l('Number of product to scroll by').'</label>
						<div class="margin-form">
							<input type="text" size="5" name="itemsscroll" value="'.Tools::getValue('itemsscroll', Configuration::get('HOME_CAROUSEL_ITEMS_SCROLL')).'" />
							<p class="clear">'.$this->l('The number of products to scroll by when clicking on the arrows or during the autoplay').'</p>
						</div>			
					';
 
		/* Get the images type */
		$imagestypes = ImageType::getImagesTypes('products');
 
		$output .= '
						<label>'.$this->l('Select Carousel image type').'</label>
						<div class="margin-form">		
							<select name="imagetype">
					';
 
		$currentimagetype = Configuration::get('HOME_CAROUSEL_IMAGE_TYPE');
 
		foreach ($imagestypes AS $key => $imagetype)
		{	
			if ($imagetype['name'] == $currentimagetype)
			{
				$output .= '<option selected="selected" value="' . $imagetype['name'] . '">' . $imagetype['name'] . ' ' . $imagetype['width'] . 'x' . $imagetype['height'] . '</option>';
			}
			else
			{
				$output .= '<option value="' . $imagetype['name'] . '">' . $imagetype['name'] . ' ' . $imagetype['width'] . 'x' . $imagetype['height'] . '</option>';
			}
		}
 
		$output .= '
							</select>
							<p class="clear">'.$this->l('Select the image type you want to use for the Carousel').'</p>									
						</div>						
 
						<label>'.$this->l('Display Product name').'</label>
						<div class="margin-form">
							<input type="radio" name="displayname" id="displayname_on" value="1" '.(Tools::getValue('displayname', Configuration::get('HOME_CAROUSEL_DISPLAY_NAME')) ? 'checked="checked" ' : '').'/>
							<label class="t" for="displayname_on"> <img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Enabled').'" /></label>
							<input type="radio" name="displayname" id="displayname_off" value="0" '.(!Tools::getValue('displayname', Configuration::get('HOME_CAROUSEL_DISPLAY_NAME')) ? 'checked="checked" ' : '').'/>
							<label class="t" for="displayname_off"> <img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('Disabled').'" /></label>
						</div>	
 
						<label>'.$this->l('Display Price').'</label>
						<div class="margin-form">
							<input type="radio" name="displayprice" id="text_list_on" value="1" '.(Tools::getValue('text_list', Configuration::get('HOME_CAROUSEL_DISPLAY_PRICE')) ? 'checked="checked" ' : '').'/>
							<label class="t" for="text_list_on"> <img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Enabled').'" /></label>
							<input type="radio" name="displayprice" id="text_list_off" value="0" '.(!Tools::getValue('text_list', Configuration::get('HOME_CAROUSEL_DISPLAY_PRICE')) ? 'checked="checked" ' : '').'/>
							<label class="t" for="text_list_off"> <img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('Disabled').'" /></label>
						</div>						
				  ';
 
		/* Retrieval of the shop cats to construct the multiple select */
 
		/* Get Skip Cat */
		$skipcat = Configuration::get('HOME_CAROUSEL_SKIP_CAT');
 
		if (!empty($skipcat))
		{
			$skipcat_array = explode(',',$skipcat);
		}
		else
		{
			$skipcat_array = array();
		}
 
		/* Get Skip cat select */
		$output .= '
						<label>'.$this->l('Shop categories to skip').'</label>
						<div class="margin-form">		
							<select name="skipcat[]" multiple="multiple">';
		$categories = Category::getCategories(intval($cookie->id_lang));
		ob_start();
		$this->recurseCategory($categories, $categories[0][1], 1, $skipcat_array);
		$output .= ob_get_contents();
		ob_end_clean();
		$output .= '
							</select>
							<p class="clear">'.$this->l('Select the categories you want to exclude from the carousel (Hold CTRL to select multiples)').'</p>									
						</div>						
					';
 
		$output .= '
						<label>'.$this->l('Choice of sort').'</label>
						<div class="margin-form">
							<select name="sort" id="sort">
								<option value="0" '.(Configuration::get('HOME_CAROUSEL_SORT') == 0 ? 'selected' : '').'>'.$this->l('No Sort - Sort by Back Office => Catalogue -> Position').'</option>
								<option value="1" '.(Configuration::get('HOME_CAROUSEL_SORT') == 1 ? 'selected' : '').'>'.$this->l('Random').'</option>
								<option value="2" '.(Configuration::get('HOME_CAROUSEL_SORT') == 2 ? 'selected' : '').'>'.$this->l('Price Asc').'</option>
								<option value="3" '.(Configuration::get('HOME_CAROUSEL_SORT') == 3 ? 'selected' : '').'>'.$this->l('Price Desc').'</option>
								<option value="4" '.(Configuration::get('HOME_CAROUSEL_SORT') == 4 ? 'selected' : '').'>'.$this->l('Last update in first').'</option>
								<option value="5" '.(Configuration::get('HOME_CAROUSEL_SORT') == 5 ? 'selected' : '').'>'.$this->l('Last add in first').'</option>
								<option value="6" '.(Configuration::get('HOME_CAROUSEL_SORT') == 6 ? 'selected' : '').'>'.$this->l('Alphabetical').'</option>
							</select>
						</div>	
 
						<center><input type="submit" name="submitHomeCarousel" value="'.$this->l('Save').'" class="button" /></center>
 
					</fieldset>
				</form>
			  ';
		return $output;
	}
 
	public function getProducts($idcat, $id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL)
	{
		global $cookie;
 
		if (empty($idcat))
		{
			return false;
		}
 
		if ($p < 1) $p = 1;
		if (empty($orderBy))
			$orderBy = 'position';
		if (empty($orderWay))
			$orderWay = 'ASC';
		if ($orderBy == 'id_product' OR	$orderBy == 'price' OR	$orderBy == 'date_add')
			$orderByPrefix = 'p';
		elseif ($orderBy == 'name')
			$orderByPrefix = 'pl';
		elseif ($orderBy == 'manufacturer')
		{
			$orderByPrefix = 'm';
			$orderBy = 'name';
		}
		elseif ($orderBy == 'position')
			$orderByPrefix = 'cp';
 
		$sql = '
		SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` AS manufacturer_name, tl.`name` AS tax_name, t.`rate`, cl.`name` AS category_default, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new
		FROM `'._DB_PREFIX_.'category_product` cp
		LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.`id_product` = cp.`id_product`)
		LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1)
		LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.intval($id_lang).')
		LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.intval($id_lang).')
		LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)
		LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.intval($id_lang).')
		LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = p.`id_tax`)
		LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.intval($id_lang).')
		LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`)
		WHERE cp.`id_category` NOT IN ('.$idcat.') AND p.`active` = 1
		GROUP BY cp.`id_product`
		ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).'
		LIMIT '.((intval($p) - 1) * intval($n)).','.intval($n);
 
		$result = Db::getInstance()->ExecuteS($sql);
 
		if ($orderBy == 'price')
			Tools::orderbyPrice($result, $orderWay);
		if (!$result)
			return false;
 
		/* Modify SQL result */
		return Product::getProductsProperties($id_lang, $result);
	}
 
	function hookHome($params)
	{
		global $smarty;
 
		$nb = intval(Configuration::get('HOME_CAROUSEL_NBR'));
		$sort = intval(Configuration::get('HOME_CAROUSEL_SORT'));
		$skipcategory = Configuration::get('HOME_CAROUSEL_SKIP_CAT');
 
		switch ($sort) {
		    case '0':
			$products = $this->getProducts($skipcategory,intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10));
			break;
		    case '1':
			$products = $this->getProducts($skipcategory,intval($params['cookie']->id_lang), 1, 1000);
			shuffle($products);
			array_splice($products, ($nb ? $nb : 10));
			break;
		    case '2':
			$products = $this->getProducts($skipcategory,intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'price', 'ASC');  
			break;
		    case '3':
			$products = $this->getProducts($skipcategory,intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'price', 'DESC');  
			break;
		    case '4':
			$products = $this->getProducts(intval($skipcategory,$params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'date_upd', 'DESC');  
			break;
		    case '5':
			$products = $this->getProducts(intval($skipcategory,$params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'date_add', 'DESC');  
			break;
		    case '6':
			$products = $this->getProducts(intval($skipcategory,$params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'name', 'ASC');  
			break;
		    default:
			$products = $this->getProducts(intval($skipcategory,$params['cookie']->id_lang), 1, ($nb ? $nb : 10));
			break;
		}		
 
		$smarty->assign(array(
			'allow_buy_when_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK', false),
			'max_quantity_to_allow_display' => Configuration::get('PS_LAST_QTIES'),
			'category' => $category,
			'products' => $products,
			'currency' => new Currency(intval($params['cart']->id_currency)),
			'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),
			'productNumber' => sizeof($products),
			'displayname' =>	Configuration::get('HOME_CAROUSEL_DISPLAY_NAME'),
			'displayprice' =>	Configuration::get('HOME_CAROUSEL_DISPLAY_PRICE'),
			'autoplay' => Configuration::get('HOME_CAROUSEL_AUTOPLAY'),
			'autoplayduration' => Configuration::get('HOME_CAROUSEL_AUTOPLAY_DURATION'),
			'itemsvisible' => Configuration::get('HOME_CAROUSEL_ITEMS_VISIBLE'),
			'itemsscroll' => Configuration::get('HOME_CAROUSEL_ITEMS_SCROLL'),
			'imagetype' => Configuration::get('HOME_CAROUSEL_IMAGE_TYPE')
		));
		return $this->display(__FILE__, 'homecarousel.tpl');
 
	}
 
}
poupou19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2011, 12h27   #12
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 957
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 957
Points : 2 646
Points : 2 646
Citation:
Envoyé par poupou19 Voir le message
Pour les frames j'y ai pensé mais apparemment ce n'est pas super super point de vue référencement à ce que j'avais compris?
Tout à fait

Pour revenir au problème, c'est beaucoup plus compliqué que ça, il y a pas mal de dépendances vu le code php et pour pouvoir le placer hors de son cadre il faut ajuster tout ça. En plus il y a les fichiers js, css etc à ajouter pour avoir l'effet voulu. Ce qui fait que même un include de HomeCarousel.php dans le php de open auto classified ne suffirait pas.

Ce dont tu as besoin c'est :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$smarty->assign(array(
			'allow_buy_when_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK', false),
			'max_quantity_to_allow_display' => Configuration::get('PS_LAST_QTIES'),
			'category' => $category,
			'products' => $products,
			'currency' => new Currency(intval($params['cart']->id_currency)),
			'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),
			'productNumber' => sizeof($products),
			'displayname' =>	Configuration::get('HOME_CAROUSEL_DISPLAY_NAME'),
			'displayprice' =>	Configuration::get('HOME_CAROUSEL_DISPLAY_PRICE'),
			'autoplay' => Configuration::get('HOME_CAROUSEL_AUTOPLAY'),
			'autoplayduration' => Configuration::get('HOME_CAROUSEL_AUTOPLAY_DURATION'),
			'itemsvisible' => Configuration::get('HOME_CAROUSEL_ITEMS_VISIBLE'),
			'itemsscroll' => Configuration::get('HOME_CAROUSEL_ITEMS_SCROLL'),
			'imagetype' => Configuration::get('HOME_CAROUSEL_IMAGE_TYPE')
		));
Enfin précisément les variables qui apparaissent dans le tpl. je vais voir ça ce soir de plus près
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2011, 13h27   #13
Invité de passage
 
cedric besse
Inscription : mai 2010
Messages : 12
Détails du profil
Informations personnelles :
Nom : cedric besse

Informations forums :
Inscription : mai 2010
Messages : 12
Points : 1
Points : 1
Vraiment je te dis merci pour ton aide!

Pour les fichiers css et js le fichier homecarousel.tpl les appelle je suppose que ce sera une question de chemin par la suite, j espère...

Et donc du coup il faudra carrément appeler toutes les variables directement sur open auto, mais il faudra placer le code ou ça?

(Car il y a le fichier index.tpl, un fichier template cache (qui se modifie tout seul d'ailleur quand je modifie le .tpl) il s'appelle index.tpl.php et l'index.php à la racine)

Du coup j'ai du mal à comprendre lequel traite index.tpl

Merci encore, pas sympas de ma part de t'embêter le week-end par contre...
poupou19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 18h06   #14
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 957
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 957
Points : 2 646
Points : 2 646
Désolé du retard

Citation:
Et donc du coup il faudra carrément appeler toutes les variables directement sur open auto, mais il faudra placer le code ou ça?
Il faudra les(homecarousel.php) placer dans le php sur lequel tu veux voir apparaître la chose. En gros si tu veux mettre ton carousel sur l'index, il faut faire un include du homecarousel.php dans l'index.php de open auto classified. De ce fait, le tpl pourra display les variables.

Citation:
(Car il y a le fichier index.tpl, un fichier template cache (qui se modifie tout seul d'ailleur quand je modifie le .tpl) il s'appelle index.tpl.php et l'index.php à la racine)

Du coup j'ai du mal à comprendre lequel traite index.tpl
Tu n'a pas besoin de toucher aux fichierx dans le cache, il est généré automatiquement comme tu le dis suivant dans le tpl correspondant.

Je viens de voir de plus près comment prestashop gérait ses modules, les structures sont bien définies et bien précises et ce qui corse la chose c'est qu'il faut exporter un module sur une autre config de smarty. Pour les tags non reconnu comme displayWtPrice, c'est parce que prestashop défini aussi ses propres fonctions pour smarty dans core.assemble_plugin_filepath.php, ensuite il faut faire des définitions dans init.php etc, bref toute une bonne structure qui ne marchera pas dans une autre config de smarty différente. C'est intéressant mais j'ai pas trop de temps pour me pencher d'avantage dessus . La configuration smarty de open auto classified est plus simple.

Les solutions que je te proposerais :
-Vu qu'il s'agit d'un module payant, tu peux toujours essayer de voir avec eux s'il n'ont pas prévu quelque chose pour ce que tu veux faire
-D'après ce que j'ai vu du module en question, pour ton affichage tu as juste besoin de la liste de produit + les infos comme le prix, l'image et le nom : ce que tu peux faire juste en te connectant à la base et en sachant sur quelles tables jouer, et après pour l'animation t'as le js et le css. Je vais te donner un exemple indicatif:
Supposons que tu veux afficher la chose sur l'index, dans ton index.php open auto classified, tu vas juste faire une requête SQL pour récupérer la liste de produits sur prestashop; ce que fait la fonction getProducts présente dans le module homecarousel.php et donc tu sais sur quelles tables jouer
Exemple
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$sql = '
		SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` AS manufacturer_name, tl.`name` AS tax_name, t.`rate`, cl.`name` AS category_default, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new
		FROM `'._DB_PREFIX_.'category_product` cp
		LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.`id_product` = cp.`id_product`)
		LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1)
		LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.intval($id_lang).')
		LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.intval($id_lang).')
		LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)
		LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.intval($id_lang).')
		LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = p.`id_tax`)
		LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.intval($id_lang).')
		LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`)
		WHERE cp.`id_category` NOT IN ('.$idcat.') AND p.`active` = 1
		GROUP BY cp.`id_product`
		ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).'
		LIMIT '.((intval($p) - 1) * intval($n)).','.intval($n);
Bien sûr il faut renseigner les variables
Comme ça si tu mets la liste de produits dans la variable $products tu peux dans l'index.php
Code :
$smarty->assign("products", $products);
Et alors dans le index.tpl ce qui est vraiment important c'est :
Code :
1
2
3
4
 {foreach from=$products item=product name=homeFeaturedProducts} {assign var='productLink' value=$link->getProductLink($product.id_product, $product.link_rewrite)} {$product.legend} {if $displayname}
      {$product.name|escape:htmlall:'UTF-8'|truncate:45}
      {/if}
      {/foreach}
Tu peux prendre le reste mais bon(il y aura des tags non reconnu concernant les traductions prestashop c'est à dire les {l s=''} et les fonctions prestashop). et après tu associes le css et le js qui va bien et tu as ton homecarousel adaptée à la situation . ça demande juste quelques modifs pas énormes.

-Ou tu optes pour la solutions de frame pointant vers une page qui présente l'affiche

-Ou alors la même chose que le point précédent mais en js en se servant de l'ajax
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 10h02   #15
Invité de passage
 
cedric besse
Inscription : mai 2010
Messages : 12
Détails du profil
Informations personnelles :
Nom : cedric besse

Informations forums :
Inscription : mai 2010
Messages : 12
Points : 1
Points : 1
Merci beaucoup krachik,

je vais essayer cela et l'adapter en fonction.

je te dirais si j'arrive à me dépatouiller, Merci encore!

poupou19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 19h13   #16
Invité de passage
 
cedric besse
Inscription : mai 2010
Messages : 12
Détails du profil
Informations personnelles :
Nom : cedric besse

Informations forums :
Inscription : mai 2010
Messages : 12
Points : 1
Points : 1
Bonsoir,

et bien j'ai finalement réussi, j'ai revue les cours sur smarty et sur les jointures de table ici même et ça ma beaucoup aidé et j'ai appris pas mal de chose par la même occasion.

Il ne me reste que deux soucis:

Un souci sur les accents du genre é ou à qui s'affiche avec un symbole carré
pourtant j'ai bien bien enregistré mes pages en UTF-8

cela donne dans la base de donné Multim&egrave;tre pour Multimètre qui s'affiche comme ça Multim�tre

En faisant de cette manière

Code :
{$product.name|escape:htmlall:'UTF-8'|truncate:45}
le truncate pour raccourcir le texte et logiquement l'autre pour les accents ça ne résous rien... et c'est pire car ça supprime complétement les phrases ou il y a des accents...

Après le dernier soucis c'est sur le ORDER BY aléatoire, sur le code du homecarousel.php posté un peu plus haut je vois qu'il y a une condition
qui le défini, mais dans la ligne du ORDER BY j'ai une erreur qui me dit qu'il ne connait pas la fonction .pSQL

Du coup j'avais cherché une autre solution pour un ORDER BY plus accessible à mon niveau, j'ai donc trouvé cette astuce qui ne marche pas avec moi bizarement...

cf. SQL Server : Renvoyer les données aléatoirement Tri aléatoire ou tirage aléatoire par Christian Robert

Du coup voila s'il peu y avoir des astuces qui me permettrait de corriger ses deux problèmes ce serait super.

Merci mille fois en tous cas!
poupou19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2011, 00h37   #17
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 957
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 957
Points : 2 646
Points : 2 646
Cool, tu as réussi à avoir ce que tu voulais

-En ce qui concerne l'encodage, je suppose que tu as réécris la fonction qui récupère la liste de produits : vérifies si tu n'as pas mis un ut8_encode là dedans, si ton charset en bien en utf-8 ou encore si tes fichiers sont en utf-8 (tpl et php).

-
Citation:
Après le dernier soucis c'est sur le ORDER BY aléatoire, sur le code du homecarousel.php posté un peu plus haut je vois qu'il y a une condition
qui le défini, mais dans la ligne du ORDER BY j'ai une erreur qui me dit qu'il ne connait pas la fonction .pSQL
pSQL est une fonction que prestashop a défini dans la class/db.php histoire de protéger les requêtes SQL d'éventuelles injections; donc si t'as ton erreur c'est que ça n'a pas été défini du côté de open auto classified:
Dans le fichier nommé en haut ça donne ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
 * Sanitize data which will be injected into SQL query
 *
 * @param string $string SQL data which will be injected into SQL query
 * @param boolean $htmlOK Does data contain HTML code ? (optional)
 * @return string Sanitized data
 */
function pSQL($string, $htmlOK = false)
{
	if (_PS_MAGIC_QUOTES_GPC_)
		$string = stripslashes($string);
	if (!is_numeric($string))
	{
		$string = _PS_MYSQL_REAL_ESCAPE_STRING_ ? mysql_real_escape_string($string) : addslashes($string);
		if (!$htmlOK)
			$string = strip_tags(nl2br2($string));
	}
 
	return $string;
}
Tu peux toujours la définir dans un fichier pour l'utiliser , mais vu que tu as là main sur toutes les variables passées dans la requête à toi de voir.

Concernant l'autre question, il ne s'agit pas d'un tirage aléatoire mais de fixer l'ordre de récupération et suivant un champs déterminé et tu sais à quoi ressemble tes variables
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
if (empty($orderBy))
			$orderBy = 'position';
		if (empty($orderWay))
			$orderWay = 'ASC';
		if ($orderBy == 'id_product' OR	$orderBy == 'price' OR	$orderBy == 'date_add')
			$orderByPrefix = 'p';
		elseif ($orderBy == 'name')
			$orderByPrefix = 'pl';
		elseif ($orderBy == 'manufacturer')
		{
			$orderByPrefix = 'm';
			$orderBy = 'name';
		}
		elseif ($orderBy == 'position')
			$orderByPrefix = 'cp';
 
 
ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).'
En gros ORDER BY champ_dans_la_table (ASC ou DESC) ces derniers concernent l'ordre de récupération. Tout devrait passer avec les variables à part pSQL dont tu as la connaissance maintenant.

J'espère avoir répondu à tes questions
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h15.


 
 
 
 
Partenaires

Hébergement Web