Créée en 2005
Objectif : solution souple et modulaire
Publiée sous licence GPL en 2006
Septembre 2012 : fusion Octolys / OpenStudio
Société de Services en Logiciels Libres
26 collaborateurs
Espace contributeurs
TheliaTour
Salon e-commerce
#DESCRIPTION
prix : #PRIX
#FILTRE_egalite(variable à tester||valeur||affichage si égale)
afficher si la condition est vérifiée
afficher si la condition n'est pas vérifiée
<\//TEST_nom_boucle>
texte à répéter
Version 1.6
Nouveau Parser
Indépendant !
{ifloop rel="loop_id"}
Display if loop returns at least 1 result
{loop id="loop_id" type="product" arg1="value1" arg2="value2"}
price : #PRICE
{endloop}
Display if loop returns at least 1 result
{elseloop}
Display if loop returns nothing
{endifloop}
{if var==value && var2==value2}
display if true
{else}
display if false
{endif}
{#VAR|strtoupper}
Structure d'un plugin (local/modules)
MyModule
MyModule.php
Config
config.xml
Loop
Product.php
MyLoop.php
Actions
Customer.php
Cart.php
Model
...
namespace MyModule\Loop;
use Thelia\Tpex\Element\Loop\BaseLoop;
use Thelia\Tpex\Element\Loop\LoopResult;
use Thelia\Tpex\Element\Loop\LoopResultRow;
class Product extends BaseLoop
{
public function defineArgs()
{
}
public function exec()
{
}
}
/**
* @return array defining all loop arguments
*/
public function defineArgs()
{
return array(
"ref",
"id" => "optional",
"stock" => array(
"optional",
"default" => 1
)
);
}
Tous les arguments sont accessibles comme des propriétés publiques de la classe
/**
* @return \Thelia\Tpex\Element\Loop\LoopResult
*/
public function exec()
{
$result = new LoopResult();
if($this->stock < 0) $this->stock = ($this->stock * -1);
$this->stock += 10;
for ($i=0; $i < $this->stock; $i++) {
$loopResultRow = new LoopResultRow();
$loopResultRow->set('modulo', $i%2);
$result->addRow($loopResultRow);
}
return $result;
}
La boucle product de Thelia ne me convient pas, je veux implémenter ma propre boucle product !
Même principe que Thelia 1 mais une implémentation différente
namespace MyModule\Actions;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\ActionEvent;
class Customer implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array(
"action.createCustomer" => "create"
);
}
public function create(ActionEvent $event)
{
//code here
}
}
Je veux remplacer le traitement des actions par défaut avec les miennes !
namespace MyModule\Actions;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\ActionEvent;
class Customer implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array(
"action.createCustomer" => array("create", 0)
);
}
public function create(ActionEvent $event)
{
//code here
$event->stopPropagation();
}
}
Support base de données (postgresql, sqlite, autres)
Cache multi niveaux
Reverse proxy (Varnish)