Webylon 3.2 API Docs
  • Package
  • Class
  • Tree
  • Deprecated
  • Download
Version: current
  • 3.2
  • 3.1

Packages

  • 1c
    • exchange
      • catalog
  • auth
  • Booking
  • building
    • company
  • cart
    • shipping
    • steppedcheckout
  • Catalog
    • monument
  • cms
    • assets
    • batchaction
    • batchactions
    • bulkloading
    • comments
    • content
    • core
    • export
    • newsletter
    • publishers
    • reports
    • security
    • tasks
  • Dashboard
  • DataObjectManager
  • event
  • faq
  • forms
    • actions
    • core
    • fields-basic
    • fields-dataless
    • fields-datetime
    • fields-files
    • fields-formatted
    • fields-formattedinput
    • fields-relational
    • fields-structural
    • transformations
    • validators
  • googlesitemaps
  • guestbook
  • installer
  • newsletter
  • None
  • photo
    • gallery
  • PHP
  • polls
  • recaptcha
  • sapphire
    • api
    • bulkloading
    • control
    • core
    • cron
    • dev
    • email
    • fields-formattedinput
    • filesystem
    • formatters
    • forms
    • i18n
    • integration
    • misc
    • model
    • parsers
    • search
    • security
    • tasks
    • testing
    • tools
    • validation
    • view
    • widgets
  • seo
    • open
      • graph
  • sfDateTimePlugin
  • spamprotection
  • stealth
    • captha
  • subsites
  • userform
    • pagetypes
  • userforms
  • webylon
  • widgets

Classes

  • Catalog
  • CatalogAdmin
  • CatalogCMSActionDecorator
  • CatalogMemberDecorator
  • CatalogPrice
  • CMSSiteTreeFilter_Catalog
  • Monument
  • MonumentCatalog
  • MonumentForm
  • Orders1CExchange_SiteConfig
  • PaymentType
  • Product
  • ProductCatalogSiteConfig
  • ProductSearchPage
  • SimpleOrderButton
  • SimpleOrderData
  • SimpleOrderForm
  • SimpleOrderPage
  • StartCatalog
  • VirtualProduct

Interfaces

  • OrderButtonInterface
  1 <?php
  2 
  3 /**
  4  * Настройки для каталога
  5  *
  6  * @package Catalog
  7  * @author inxo, menedem, dvp
  8  */
  9 class ProductCatalogSiteConfig extends SiteConfigDecorator {
 10 
 11     static $hidden_fields  = array();
 12     
 13     function extraStatics() {
 14         return array(
 15             'db' => array(
 16                 'ProductPerPage' => 'Int', // товаров на страницу каталога
 17                 'CatalogCurrency' => 'Varchar', // Валюта
 18                 'CatalogDiscountCeil' => 'Boolean', // Округление до целых
 19                 'CatalogDefaultSort' => 'Varchar', // Сортировка товаров по-умолчанию
 20                 'CatalogDefaultView' => 'Varchar', // Отображение товаров по-умолчанию             
 21                 'ProductShowInTree' => 'Boolean', // флаг показывать товары в дереве (для ручной сортировки) - требует наличия варианта ручной сортировки в Catalog::$sort_options
 22                 'ShowProductsFromSubCategories' => 'Boolean', // флаг Показывать товары из подкатегорий
 23                 'UseOnlyAllowPurchaseVariations' => 'Boolean', // Использовть на сайте только доступные вариации (Available == 1)
 24             ),
 25             'defaults' => array(
 26                 'ProductPerPage' => 20,
 27                 'CatalogCurrency' => 'руб.',
 28                 'CatalogDiscountCeil' => true,
 29                 'CatalogDefaultSort' => 'title',
 30                 'CatalogDefaultView' => 'table',
 31                 'CatalogDefaultFilter' => 'Title,Price',
 32                 'ProductShowInTree' => false,
 33                 'ShowProductsFromSubCategories' => false,
 34                 'UseOnlyAllowPurchaseVariations' => false,
 35             ),
 36             'has_one' => array(
 37                 'DefaultVAT' => 'VAT', // Ставка НДС всего каталога
 38             )
 39         );
 40     }
 41 
 42     public function updateCMSFields(FieldSet &$fields) {
 43         $tab = self::get_config_tab($fields, 'Catalog.Settings');
 44         
 45         if (count(Catalog::pagesize_dropdown_map()) > 1) {
 46             $tab->push(new DropdownField('ProductPerPage', $this->owner->FieldLabel('ProductPerPage'), Catalog::pagesize_dropdown_map()));
 47         }
 48         else {
 49             $tab->push(new NumericField('ProductPerPage', $this->owner->FieldLabel('ProductPerPage')));
 50         }
 51         $tab->push(new TextField('CatalogCurrency', $this->owner->FieldLabel('CatalogCurrency')));
 52         $tab->push(new CheckboxField('CatalogDiscountCeil', $this->owner->FieldLabel('CatalogDiscountCeil')));
 53         $tab->push(new CheckboxField('ShowProductsFromSubCategories', $this->owner->FieldLabel('ShowProductsFromSubCategories')));
 54         if (Catalog::$use_variations) {
 55             $tab->push(new CheckboxField('UseOnlyAllowPurchaseVariations', $this->owner->FieldLabel('UseOnlyAllowPurchaseVariations')));            
 56         }
 57         $tab->push(new DropDownField('CatalogDefaultSort', $this->owner->FieldLabel('CatalogDefaultSort'), Product::sort_options_dropdown_map()));
 58         $tab->push(new DropDownField('CatalogDefaultView', $this->owner->FieldLabel('CatalogDefaultView'), Catalog::view_options_dropdown_map()));
 59         if ($allVATs = DataObject::get('VAT')) {
 60             $tab->push(new DropDownField('DefaultVATID', $this->owner->FieldLabel('DefaultVAT'), $allVATs->map('ID', 'Title', _t('VAT.SelectVAT'))));
 61         }
 62             
 63         if (Director::IsDev())
 64             $tab->push(new CheckboxField('ProductShowInTree', $this->owner->FieldLabel('ProductShowInTree')));
 65             
 66         $this->hideUnselectedFields($fields);
 67         
 68         if (Catalog::$use_additional_params) {
 69             $tab = self::get_config_tab($fields, 'Catalog.Params');
 70             $ctf = new ComplexTableField(
 71                 $this,
 72                 'ProductParams',
 73                 'ProductParam',
 74                 null,
 75                 null,
 76                 'ParentCatalogID = 0'
 77             );
 78             $ctf->setRelationAutoSetting(true); 
 79             $ctf->setPagesize(20);
 80             $tab->push($ctf);
 81         }
 82         
 83         if (Catalog::$use_additional_filters) {
 84             $tab = self::get_config_tab($fields, 'Catalog.Filters');
 85             $ctf = new ComplexTableField(
 86                 $this,
 87                 'CatalogFilters',
 88                 'CatalogFilter',
 89                 null,
 90                 null,
 91                 'ParentCatalogID = 0'
 92             );
 93             $ctf->setRelationAutoSetting(true); 
 94             $ctf->setPagesize(20);
 95             $tab->push($ctf);
 96         }       
 97     }
 98     
 99     /**
100      * Проверка изменения галочки 'Показывать товары как страницы сайта' и обновление товаров в соответствии с ней
101      */
102     public function onBeforeWrite() {
103         parent::onBeforeWrite();
104         if ($this->owner->isChanged('ProductShowInTree')) {
105             $state = (1 - $this->owner->ProductShowInTree);
106             // черновые версии товаров
107             DB::query("UPDATE `Page` SET `ShowOnlyInTab` = {$state} WHERE `ID` in (SELECT `ID` FROM `Product`)");           
108             // опубликованные товары
109             DB::query("UPDATE `Page_Live` SET `ShowOnlyInTab` = {$state} WHERE `ID` in (SELECT `ID` FROM `Product_Live`)");         
110         }       
111     }
112 }
113 
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the Silverstripe Forums to ask development related questions. -
Webylon 3.2 API Docs API documentation generated by ApiGen 2.8.0