Version: current

# Class Catalog

Раздел каталога, содержит товары и другие разделы

  Object
  ViewableData implements IteratorAggregate
  DataObject implements DataObjectInterface, i18nEntityProvider
  SiteTree implements PermissionProvider, i18nEntityProvider
  Page
  Catalog

### Direct known subclasses

`MonumentForm`, `Socle`, `SpecialCatalog`, `StartCatalog`

### Indirect known subclasses

`MonumentCatalog`

Package: Catalog
Author: inxo, dvp, menedem
Located at catalog/code/Catalog.php

## Methods summary

`public static array` | # `get_sort_options( )` Проброс возможных вариантов сортировки от товара Проброс возможных вариантов сортировки от товара #### Returns `array` array
`public static` | # `set_view_options( array $data )` Изменяет список отображений товаров. Используется в _00config.php для настройки параметров каталога Изменяет список отображений товаров. Используется в _00config.php для настройки параметров каталога #### Parameters $data array $data - новый список отображений
`public static array` | # `get_view_options( )` Возвращает текущий список отображений товаров Возвращает текущий список отображений товаров #### Returns `array` - текущий список отображений
`public static array` | # `view_options_dropdown_map( boolean $addDefault = false )` Возвращает локализованный список отображений для использования в селектах Возвращает локализованный список отображений для использования в селектах #### Parameters $addDefault bool $addDefault - добавлять ли пункт "по-умолчанию" #### Returns `array` - список для селектов
`public static` | # `allow_user_change_view( boolean $val = true )` Устанавливает флаг $user_can_change_view Устанавливает флаг $user_can_change_view #### Parameters $val bool $val
`public static` | # `set_pagesize_options( array $list )` Устанавливает варианты размера страницы каталога Устанавливает варианты размера страницы каталога #### Parameters $list array $list
`public static` | # `get_pagesize_options( )` Возвращает список вариантов размера страницы каталога Возвращает список вариантов размера страницы каталога
`public static array` | # `pagesize_dropdown_map( boolean $addDefault = false )` Возвращает локализованный список вариантов размера страницы каталога Возвращает локализованный список вариантов размера страницы каталога #### Parameters $addDefault bool $addDefault - добавлять ли пункт "по-умолчанию" #### Returns `array` - список для селектов
`public static` | # `allow_user_change_pagesize( boolean $val = true )` Устанавливает флаг $user_can_change_pagesize Устанавливает флаг $user_can_change_pagesize #### Parameters $val bool $val
`public static` | # `disable_additional_params( )` Устанавливает флаг использования доп.параметров каталога Устанавливает флаг использования доп.параметров каталога
`public static` | # `disable_additional_filters( )` Устанавливает флаг использования доп.фильтров каталога Устанавливает флаг использования доп.фильтров каталога
`public static` | # `enable_reduce_filters( )` Устанавливает флаг сужения фильтров каталога Устанавливает флаг сужения фильтров каталога
`public static` | # `enable_variations( )` Включение вариаций Включение вариаций
`public static` | # `hide_allow_purchase_products( boolean $val )` Устанавливает флаг показа в каталога товаров с AllowPurchase == 0 Устанавливает флаг показа в каталога товаров с AllowPurchase == 0 #### Parameters $val bool $val
`public static` | # `set_filter_calc_suitable_products_mode( string $val )` Устанавливает режим подсчета возможных значений с выводом в фильтре каталога Возможные значения: false, one_filter, all_filters false - подсчет отключен; one_filter - считать кол-во товаров с этим значением фильтра (не зависит от других фильтров); all_filters - считать кол-во товаров с учетом других фильтров (зависит от других фильтров, надо пересчитывать при каждом применении фильтров) Устанавливает режим подсчета возможных значений с выводом в фильтре каталога Возможные значения: false, one_filter, all_filters false - подсчет отключен; one_filter - считать кол-во товаров с этим значением фильтра (не зависит от других фильтров); all_filters - считать кол-во товаров с учетом других фильтров (зависит от других фильтров, надо пересчитывать при каждом применении фильтров) #### Parameters $val string $val
`public static `DataObjectSet`` | # `CatalogSearch( mixed $text, mixed $neededCount )` Поиск каталога по вводу пользователя (для автодополнения) Поиск каталога по вводу пользователя (для автодополнения) #### Returns ``DataObjectSet`` DataObjectSet
`public static` | # `get_cache( )` Получение адаптера для кеширования Получение адаптера для кеширования
`public static` | # `get_cached_data( mixed $key )` Получение данных из кеша Получение данных из кеша #### Parameters $key $key - название кеша
`public static` | # `set_cached_data( mixed $key, mixed $data )` Сохранение данных в кеш Сохранение данных в кеш #### Parameters $key $key - название кеша $data $data - данные, для сохранения в кеш
`public static` | # `clean_cache( )` Очистка кеша Очистка кеша
`public static` | # `addPossibleFields( array $fields )` Добавление полей, которые могут быть в данных импорта Добавление полей, которые могут быть в данных импорта #### Parameters $fields array $fields
`public static `DataObject`||null` | # `import_find( mixed $importID )` Возвращает объект по его ImportID Возвращает объект по его ImportID #### Returns ``DataObject`||null` DataObject||null
`public boolean` | # `importUpdate( mixed $importLog, mixed $data )` Обновляет объект Обновляет объект #### Parameters $importLog $importLog - объект для протоколиорвания импорта (или сама задача), для возможности записать сообщения об ошибках $data $data - массив с данными для импорта #### Returns `boolean` - флаг можно ли продолжать импорт
`public boolean` | # `importValidate( mixed $importLog, mixed $data )` Проверяет данные полей объекта на соответствие типам Проверяет данные полей объекта на соответствие типам #### Parameters $importLog $importLog - объект для протоколиорвания импорта (или сама задача), для возможности записать сообщения об ошибках $data #### Returns `boolean` - флаг можно ли продолжать импорт
`public` | # `importClearAll( mixed $importLog )` Выполняет удаление всех объектов перед импортом Выполняет удаление всех объектов перед импортом
`public static array` | # `get_unique_values( `CatalogFilter` $filter, string $productsSQL )` Получение уникальных значений поля по фильтру (с учетом ограничений в $productsSQL - текущая рубрика и параметры фильтра) Получение уникальных значений поля по фильтру (с учетом ограничений в $productsSQL - текущая рубрика и параметры фильтра) #### Parameters $filter CatalogFilter $filter $productsSQL string $productsSQL #### Returns `array` array
`public static `SS_Query`` | # `get_min_max_values( `CatalogFilter` $filter, string $productsSQL )` Получение мин/макс значений поля по фильтру (с учетом ограничений в $productsSQL - текущая рубрика и параметры фильтра) Получение мин/макс значений поля по фильтру (с учетом ограничений в $productsSQL - текущая рубрика и параметры фильтра) #### Parameters $filter CatalogFilter $filter $productsSQL string $productsSQL #### Returns ``SS_Query`` SS_Query
`public `FieldSet`` | # `getCMSFields( )` Returns a FieldSet with which to create the CMS editing form. Returns a FieldSet with which to create the CMS editing form. You can override this in your child classes to add extra fields - first get the parent fields using parent::getCMSFields(), then use addFieldToTab() on the FieldSet. #### Returns ``FieldSet`` The fields to be displayed in the CMS. #### Overrides `Page::getCMSFields`
`public` | # `onAfterWrite( )` Event handler called after writing to the database. You can overload this to act upon changes made to the data after it is written. $this->changed will have a record database. Don't forget to call parent::onAfterWrite(), though! Event handler called after writing to the database. You can overload this to act upon changes made to the data after it is written. $this->changed will have a record database. Don't forget to call parent::onAfterWrite(), though! #### Uses ``DataObjectDecorator::onAfterWrite()`` #### Overrides `Page::onAfterWrite`
`public` | # `onAfterDelete( )` #### Overrides `Page::onAfterDelete`
`public` | # `getVAT( )`
`public boolean` | # `AllowChangeView( )` Метод для шаблонов для проверки флага $user_can_change_view Метод для шаблонов для проверки флага $user_can_change_view #### Returns `boolean` bool
`public boolean` | # `AllowChangePageSize( )` Метод для шаблонов для проверки возможности смены размера страницы Метод для шаблонов для проверки возможности смены размера страницы #### Returns `boolean` bool
`public `DataObjectSet`` | # `Subcats( )` Возвращает список подрубрик Возвращает список подрубрик #### Returns ``DataObjectSet`` DataObjectSet
`public integer` | # `CountItems( )` Число товаров в рубрике Число товаров в рубрике #### Returns `integer` int
`public string` | # `defaultSort( )` Возвращает режим сортировки без учета выбора пользователя Возвращает режим сортировки без учета выбора пользователя #### Returns `string` string
`public string` | # `defaultView( )` Возвращает режим отображения без учета выбора пользователя Возвращает режим отображения без учета выбора пользователя #### Returns `string` string
`public string` | # `defaultPageSize( )` Возвращает количество товаров на странице без учета выбора пользователя Возвращает количество товаров на странице без учета выбора пользователя #### Returns `string` string
`public array` | # `catalogFilterFields( )` Возвращает список разрешенных полей для фильтра Возвращает список разрешенных полей для фильтра #### Returns `array` список полей товара для фильтра в текущей рубрике
`public` | # `getAllCatalogFilters( )`
`public array` | # `catalogParams( )` Возвращает список разрешенных параметров Возвращает список разрешенных параметров #### Returns `array` список параметров товара в текущей рубрике
`public` | # `getAllCatalogParams( )`
`public` | # `getVariationCatalogParams( )`
`public` | # `getNonVariationCatalogParams( )`
`public static` | # `productFieldTable( mixed $field )`
`public `DataObjectSet`` | # `filteredProducts( string $order = null, array $filters = null, string $limit = null )` Возвращает список товаров с учетом фильтрации и сортировки Возвращает список товаров с учетом фильтрации и сортировки #### Parameters $order string $order - текущая сортировка $filters array $filters - массив условий фильтрации (из формы) $limit string $limit - строка для sql limit #### Returns ``DataObjectSet`` - текущая страница выборки товаров
`public` | # `getProductsListQuery( mixed $orderby = null, mixed $limit = null )`
`public` | # `getProductsListWhere( mixed $forceShowProductsFromSubCategories = false )`
`public` | # `updateQueryByProductParamFilters( mixed $filters, mixed $query )`
`public` | # `getProductsListForFiltersSQL( )`

### Methods inherited from Page

`AdminEmail()`, `DevMode()`, `FinalParent()`, `Lang()`, `Locale()`, `MetaTags()`, `NestedValue()`, `allowComments()`, `canAddChildren()`, `canDelete()`, `canDeleteFromLive()`, `canEdit()`, `canPublish()`, `checkDevPermisson()`, `hiddenCMSFields()`, `hide_cms_fields()`, `onBeforeWrite()`, `populateDefaults()`, `set_hidden_cms_fields()`

### Methods inherited from SiteTree

`AbsoluteLink()`, `Breadcrumbs()`, `CMSTreeClasses()`, `Comments()`, `ContentSource()`, `DependentPages()`, `DependentPagesCount()`, `ElementName()`, `InSection()`, `Level()`, `Link()`, `LinkOrCurrent()`, `LinkOrSection()`, `LinkingMode()`, `NestedTitle()`, `RelativeLink()`, `TreeTitle()`, `VirtualPages()`, `allowedChildren()`, `batch_permission_check()`, `can()`, `canCreate()`, `canView()`, `can_delete_multiple()`, `can_edit_multiple()`, `cmsCleanup_parentChanged()`, `collateDescendants()`, `defaultChild()`, `defaultParent()`, `disableCMSFieldsExtensions()`, `disable_nested_urls()`, `doDeleteFromLive()`, `doPublish()`, `doRestoreToStage()`, `doRevertToLive()`, `doRollbackTo()`, `doUnpublish()`, `duplicate()`, `duplicateAsChild()`, `duplicateWithChildren()`, `enableCMSFieldsExtensions()`, `enable_nested_urls()`, `fieldLabels()`, `generateURLSegment()`, `generate_homepage_domain_map()`, `getAbsoluteLiveLink()`, `getCMSActions()`, `getClassDropdown()`, `getExistsOnLive()`, `getIsAddedToStage()`, `getIsDeletedFromStage()`, `getIsModifiedOnStage()`, `getMenuTitle()`, `getParent()`, `getParentType()`, `getSiteConfig()`, `get_by_link()`, `get_enforce_strict_hierarchy()`, `i18n_singular_name()`, `isCurrent()`, `isNew()`, `isPublished()`, `isSection()`, `link_shortcode_handler()`, `nested_urls()`, `onBeforeDelete()`, `page_type_classes()`, `prepopuplate_permission_cache()`, `provideI18nEntities()`, `providePermissions()`, `requireDefaultRecords()`, `reset()`, `rewriteFileURL()`, `setMenuTitle()`, `setParent()`, `set_enforce_strict_hierarchy()`, `syncLinkTracking()`, `validURLSegment()`

### Methods inherited from DataObject

`Aggregate()`, `RelationshipAggregate()`, `__construct()`, `baseTable()`, `belongs_to()`, `buildDataObjectSet()`, `buildSQL()`, `castedUpdate()`, `composite_fields()`, `context_obj()`, `customDatabaseFields()`, `custom_database_fields()`, `data()`, `databaseFields()`, `databaseIndexes()`, `database_extensions()`, `database_fields()`, `db()`, `dbObject()`, `debug()`, `defaultSearchFilters()`, `defineMethods()`, `delete()`, `delete_by_id()`, `destroy()`, `disable_subclass_access()`, `enable_subclass_access()`, `exists()`, `extendedSQL()`, `fieldLabel()`, `flushCache()`, `flush_and_destroy_cache()`, `forceChange()`, `get()`, `getAllFields()`, `getChangedFields()`, `getClassAncestry()`, `getComponent()`, `getComponents()`, `getComponentsQuery()`, `getDefaultSearchContext()`, `getField()`, `getFrontEndFields()`, `getManyManyComponents()`, `getManyManyComponentsQuery()`, `getManyManyFilter()`, `getManyManyJoin()`, `getRemoteJoinField()`, `getReverseAssociation()`, `getTitle()`, `get_by_id()`, `get_one()`, `get_validation_enabled()`, `hasDatabaseField()`, `hasField()`, `hasOwnTableDatabaseField()`, `hasValue()`, `has_many()`, `has_one()`, `has_own_table()`, `i18n_plural_name()`, `inheritedDatabaseFields()`, `instance_get()`, `instance_get_one()`, `isChanged()`, `isEmpty()`, `isInDB()`, `is_composite_field()`, `many_many()`, `many_many_extraFields()`, `merge()`, `newClassInstance()`, `plural_name()`, `relObject()`, `requireTable()`, `scaffoldFormFields()`, `scaffoldSearchFields()`, `searchableFields()`, `setCastedField()`, `setClassName()`, `setComponent()`, `setField()`, `set_context_obj()`, `set_validation_enabled()`, `singular_name()`, `summaryFields()`, `toMap()`, `update()`, `validate()`, `write()`, `writeComponents()`, `writeWithoutVersion()`

### Methods inherited from ViewableData

`ATT_val()`, `BaseHref()`, `CSSClasses()`, `ColumnBreak()`, `ColumnCalc()`, `ColumnNumber()`, `ColumnPad()`, `ColumnPos()`, `CurrentMember()`, `CurrentPage()`, `Debug()`, `Even()`, `EvenOdd()`, `First()`, `FirstLast()`, `HasPerm()`, `IsAjax()`, `JS_val()`, `Last()`, `Me()`, `Middle()`, `MiddleString()`, `Modulus()`, `MultipleOf()`, `Odd()`, `Pos()`, `RAW_val()`, `SQL_val()`, `ThemeDir()`, `ThemeName()`, `Top()`, `TotalItems()`, `XML_val()`, `__get()`, `__isset()`, `__set()`, `buildCastingCache()`, `cachedCall()`, `castingClass()`, `castingHelper()`, `castingHelperPair()`, `castingObjectCreator()`, `castingObjectCreatorPair()`, `customise()`, `escapeTypeForField()`, `getIterator()`, `getSecurityID()`, `getXMLValues()`, `i18nLocale()`, `iteratorProperties()`, `obj()`, `renderWith()`, `setCustomisedObj()`

### Methods inherited from Object

`__call()`, `__toString()`, `__wakeup()`, `addMethodsFrom()`, `addStaticVars()`, `addWrapperMethod()`, `add_extension()`, `add_static_var()`, `allMethodNames()`, `cacheToFile()`, `cacheToFileWithArgs()`, `clearCache()`, `combined_static()`, `create()`, `createMethod()`, `create_from_string()`, `extInstance()`, `extend()`, `getCustomClass()`, `getExtensionInstance()`, `getExtensionInstances()`, `get_extensions()`, `get_static()`, `hasExtension()`, `hasMethod()`, `has_extension()`, `invokeWithExtensions()`, `is_a()`, `loadCache()`, `parentClass()`, `parse_class_spec()`, `remove_extension()`, `sanitiseCachename()`, `saveCache()`, `set_stat()`, `set_static()`, `set_uninherited()`, `stat()`, `strong_create()`, `uninherited()`, `uninherited_static()`, `useCustomClass()`

### Magic methods summary

## Properties summary

`public static string|array` | $icon | # Icon to use in the CMS Icon to use in the CMS This should be the base filename. The suffixes -file.gif, openfolder.gif and -closedfolder.gif will be appended to the base name that you provide there. If you prefer, you can pass an array: array("sapphire\thirdparty\tree\images\page", $option). $option can be either "file" or "folder" to force the icon to always be a file or folder, regardless of whether the page has children or not
`public static array` | $allowed_children | # Indicates what kind of children this page type can have. This can be an array of allowed child classes, or the string "none" - indicating that this page type can't have children. If a classname is prefixed by "*", such as "*Page", then only that class is allowed - no subclasses. Otherwise, the class and all its subclasses are allowed. Indicates what kind of children this page type can have. This can be an array of allowed child classes, or the string "none" - indicating that this page type can't have children. If a classname is prefixed by "*", such as "*Page", then only that class is allowed - no subclasses. Otherwise, the class and all its subclasses are allowed.
`public static string` | $default_child | # The default child class for this page. The default child class for this page.
`public static string` | $default_sort | # The default sort expression. This will be inserted in the ORDER BY clause of a SQL query if no other sort expression is provided. The default sort expression. This will be inserted in the ORDER BY clause of a SQL query if no other sort expression is provided.
`public static array` | $db | # Database field definitions. This is a map from field names to field type. The field type should be a class that extends . Database field definitions. This is a map from field names to field type. The field type should be a class that extends .
`public static array` | $defaults | # Inserts standard column-values when a DataObject is instanciated. Does not insert default records `DataObject::$default_records`. This is a map from fieldname to default value. Inserts standard column-values when a DataObject is instanciated. Does not insert default records `DataObject::$default_records`. This is a map from fieldname to default value. If you would like to change a default value in a sub-class, just specify it. - If you would like to disable the default value given by a parent class, set the default value to 0,'',or false in your subclass. Setting it to null won't work.
`public static array` | $has_one | # One-to-zero relationship defintion. This is a map of component name to data type. In order to turn this into a true one-to-one relationship you can add a `DataObject::$belongs_to` relationship on the child class. One-to-zero relationship defintion. This is a map of component name to data type. In order to turn this into a true one-to-one relationship you can add a `DataObject::$belongs_to` relationship on the child class. Note that you cannot have a has_one and belongs_to relationship with the same name.
`public static array` | $has_many | # This defines a one-to-many relationship. It is a map of component name to the remote data class. This defines a one-to-many relationship. It is a map of component name to the remote data class. This relationship type does not actually create a data structure itself - you need to define a matching $has_one relationship on the child class. Also, if the $has_one relationship on the child class has multiple links to this class you can use the syntax "ClassName.HasOneRelationshipName" in the remote data class definition to show which foreign key to use.
`public static array` | $many_many | # many-many relationship definitions. This is a map from component name to data type. many-many relationship definitions. This is a map from component name to data type.
`public static array` | $indexes | # If a field is in this array, then create a database index on that field. This is a map from fieldname to index type. See SS_Database->requireIndex() and custom subclasses for details on the array notation. If a field is in this array, then create a database index on that field. This is a map from fieldname to index type. See SS_Database->requireIndex() and custom subclasses for details on the array notation.
`public static string` | $subpage_children | #
`public static array` | $pagesize_options | # варианты размера страницы каталога значения: число или 'all' варианты размера страницы каталога значения: число или 'all'
`public static boolean` | $use_additional_params | # Флаг использования доп.параметров каталога Флаг использования доп.параметров каталога
`public static boolean` | $use_additional_filters | # Флаг использования доп.фильтров каталога Флаг использования доп.фильтров каталога
`public static boolean` | $reduce_filters | # Флаг сужения фильтров каталога (выбрасывание опций фильтра, которых нет в текущей выборке) Флаг сужения фильтров каталога (выбрасывание опций фильтра, которых нет в текущей выборке)
`public static boolean` | $use_variations | # Флаг использования вариаций каталога Флаг использования вариаций каталога
`public static boolean` | $hide_allow_purchase_products | # Флаг скрытия в каталоге товаров с AllowPurchase == 0 FIXME перенести в SiteConfig Флаг скрытия в каталоге товаров с AllowPurchase == 0 FIXME перенести в SiteConfig
`public static boolean` | $filter_calc_suitable_products_mode | # Режим подсчета возможных значений с выводом в фильтре каталога Режим подсчета возможных значений с выводом в фильтре каталога
`public static boolean` | $cache | #
`public static array` | $possibleFields | # Список полей, которые могут быть в данных импорта Список полей, которые могут быть в данных импорта

### Properties inherited from Page

`$hidden_cms_fields`, `$summary_fields`

### Properties inherited from SiteTree

`$belongs_many_many`, `$breadcrumbs_delimiter`, `$cache_permissions`, `$can_be_root`, `$can_create`, `$casting`, `$default_parent`, `$extensions`, `$hide_ancestor`, `$many_many_extraFields`, `$need_permission`, `$searchable_fields`, `$versioning`, `$write_homepage_map`

### Properties inherited from DataObject

`$allowed_actions`, `$ancestry`, `$api_access`, `$belongs_to`, `$brokenOnDelete`, `$brokenOnWrite`, `$cache_get_one`, `$cache_has_own_table`, `$cache_has_own_table_field`, `$componentCache`, `$components`, `$create_table_options`, `$default_records`, `$destroyed`, `$field_labels`, `$original`, `$plural_name`, `$record`, `$singular_name`

### Properties inherited from ViewableData

`$customisedObject`, `$default_cast`, `$failover`, `$iteratorPos`, `$iteratorTotalItems`

### Properties inherited from Object

`$class`, `$extension_instances`

[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. -