Item Datasource¶
Die Item Datasource holt die Daten aus der pb_item.
Es werden im Standard keine Einschränkungen gemacht. Es werden alle IIDs aus der Tabelle zurück geliefert.
Wür jede IID wird das Template aufgerufen.
Delta¶
Die Datasource kann auch nur IIDs zurück liefern die sich geändert haben.
Es werden Änderungen an folgenden Tabellen identifiziert um ein Produkt als geändert anzusehen:
Tabelle | Beschreibung |
---|---|
pb_item | Änderungen an der Hauptdatensatz |
pb_item_properties | Änderungen an den Eigenschaften |
pb_item_text | Änderungen an den Texten |
pb_publishing | Änderungen an den Veröffentlichungen |
sh_price | Änderungen am Preis |
Datasource für den Kunden¶
Die Item Datasource, wird für jeden Kunden individuell zusammen gestellt.
Dafür wird eine neue Klasse angelegt die von \Alvine\Application\Platform\Builder\DataSource\Commerce\Item
abgeleitet ist.
Die benötigten Daten werden mit trais eingebunden.
In diesem Beispiel werden Texte, Eigenschaften, Kategorien und Bilder dazu geladen.
<?php
/**
* ALVINE
*
* COPYRIGHT: All title and proprietary rights, including trade
* secrets, in the Software and any copies thereof and the
* accompanying written materials, are owned by schukai GmbH
* and are protected by German copyright laws, other applicable
* copyright laws and international treaty provisions.
*
* @category Alvine Platform
* @package Alvine\Application\Platform
* @author schukai GmbH <[email protected]>
* @copyright 2002 - 2019 schukai GmbH
* @license http://alvine.io/license/ Alvine Nutzungslizenz
* @version $Revision: 1511 $
* @link http://alvine.io/ alvine.io
*/
namespace Customisation\Builder\DataSource\Commerce;
/**
* Item DataSource
*
* @category Alvine Platform
* @package Alvine\Application\Platform
* @author schukai GmbH <[email protected]>
* @license http://alvine.io/license/ Alvine Nutzungslizenz
* @version $Revision: 1511 $
* @link http://alvine.io/ alvine.io
* @since 20190215
*/
class Item extends \Alvine\Application\Platform\Builder\DataSource\Commerce\Item {
use \Alvine\Application\Platform\Bridge\Core\Property;
use \Alvine\Application\Platform\Bridge\Persistence;
use \Alvine\Application\Platform\Builder\DataSource\Commerce\Item\Properties;
use \Alvine\Application\Platform\Builder\DataSource\Commerce\Item\Texts;
use \Alvine\Application\Platform\Builder\DataSource\Commerce\Item\Categories;
use \Alvine\Application\Platform\Builder\DataSource\Commerce\Item\DefaultImage;
}
Verwendung zum erstellen von HTML Dateien¶
Es müssen nicht für alle Änderungen an einem Produkt auch eine HTML Dateien erstellt werden.
Wenn ein Produkt zum Beispiel archiviert oder gesperrt wurde, muss das Produkt nicht neu gerendert werden, weil es möglicherweise nicht
ausgeliefert wird.
Es kommt immer auf das Zusammenspiel der Indexierung an.
Daher ist es sinnvoll für jeden Anwendungsfall auch eine eigene Datasource anzulegen.
Diese dann von der Kunden Klasse ableiten \Customisation\Builder\DataSource\Commerce\Item
.
Hier in diesem Beispiel werden nur Produkte vom Typ Sortiment , keine archivierten und nur aktive Produkte zurück geliefert.
Wenn Delta verwendet wird , greift diese Einschränkung dann noch zusätzlich.
class ItemForBuilder extends \Customisation\Builder\DataSource\Commerce\Item {
protected function getWhere(\Alvine\Persistence\Relation\SQL\Where $where=null): ?\Alvine\Persistence\Relation\SQL\Where {
if($where===null) {
$where=new \Alvine\Persistence\Relation\SQL\Where();
}
$where->addFilter(new \Alvine\Persistence\Relation\Field\Varchar($this->model::TABLE, 'sys_archived'), '0');
$where->addFilter(new \Alvine\Persistence\Relation\Field\Integer($this->model::TABLE, 'sys_sales_group'), 1);
$where->addFilter(new \Alvine\Persistence\Relation\Field\Integer($this->model::TABLE, 'sys_sales_type'), 10);
return parent::getWhere($where);
}
}
Verwendung zum indexieren¶
Bein indexieren der Daten , sollen auch archivierte oder nicht mehr aktive Produkte neu indexiert werden.
Daher werden bei dieser Klasse keine Einschränkungen gemacht.
Man kann natürlich auch direkt die \Customisation\Builder\DataSource\Commerce\Item
für das Indexieren verwenden da diese auch keine Einschränkungen macht.
class ItemForIndex extends \Customisation\Builder\DataSource\Commerce\Item {
protected function getWhere(\Alvine\Persistence\Relation\SQL\Where $where=null): ?\Alvine\Persistence\Relation\SQL\Where {
return parent::getWhere($where);
}
}