Je vous livre ma version de la boucle Declix, qui prend en compte le paramètre stockmini.
Celà signifie que vous pouvez laisser toutes les déclinaisons actives dans les produits, les déclinaisons ne comportant aucun stock ne seront pas affichées si stockmini est > 0.
<?php
include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsClassiques.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Rubdeclinaison.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Declinaison.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Declidisp.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Exdecprod.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Declinaisondesc.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Stock.class.php");
class Declix extends PluginsClassiques {
function boucle($texte, $args)
{
$res = '';
$rubrique = lireTag($args, "rubrique");
$produit = lireTag($args, "produit");
$stockmini = lireTag($args, "stockmini");
$ref = lireTag($args, "ref");
if($rubrique == '' || $produit == '') return;
$declinaison = new Declinaison();
$rubdeclinaisonx = new Rubdeclinaison();
$declidispx = new Declidisp();
$exdecprodx = new Exdecprod();
$declinaisondescx = new Declinaisondesc();
$stock = new Stock();
$query = "select declinaison
from $rubdeclinaisonx->table rd, $declinaison->table dc
where rubrique='".$rubrique."' and dc.id=rd.declinaison
order by dc.classement";
$resul = mysql_query($query, $rubdeclinaisonx->link);
while($resul && $row = mysql_fetch_object($resul))
{
$declinaison->charger($row->declinaison);
$query2 = "select * from $declidispx->table where declinaison='".$declinaison->id."'";
$resul2 = mysql_query($query2, $declidispx->link);
while($resul2 && $row2 = mysql_fetch_object($resul2))
{
// La declinaison n'est pas désactivée
if (! $exdecprodx->charger($produit, $row2->id) )
{
if ($stockmini != '')
{
// Verifier que du stock est disponible
$stock->charger($row2->id, $produit);
// Si le stock est < au stockmini, on ignore cette déclinaison.
if (intval($stock->valeur) < intval($stockmini)) continue;
}
$declinaisondescx->charger($declinaison->id);
$temp = str_replace("#TITRE", $declinaisondescx->titre, $texte);
$temp = str_replace("#CHAPO", $declinaisondescx->chapo, $temp);
$temp = str_replace("#ID", $declinaison->id, $temp);
$temp = str_replace("#CLASSEMENT", $declinaison->classement, $temp);
$temp = str_replace("#REF", $ref, $temp);
$temp = str_replace("#PRODUIT", $produit, $temp);
if (trim($temp) != '') $res .= $temp;
// A ce point, la déclinaison est active pour le produit -> inutile de poursuivre.
break;
}
}
}
return $res;
}
}
?>
Last edited by roadster31 (18-05-2010 12:49:49)