Лучшие каталоги в шаблоне Demomarket
1. Добавить или изменить языковые константы в /templates/demomarket/php/i18n/i18n.ru.php например такую:
'best_catalog' => 'Лучшие каталоги',
2. В файле /templates/demomarket/php/content/home/catalog.phtml внести изменения соответствующие языковым константам в строке 24, чтобы получилось во так:
<?= $this->translate('best_catalog') ?>
3. В 32 строке этого же файла заменяем best_items на best_catalog чтоб получилось вот так:
<?= $this->render($variables, 'content/home/catalog/best_catalog') ?>
4. В директории /templates/demomarket/php/content/home/catalog создаем новый файл best_catalog.phtml в который помещаем следующий код:
<?php
/**
* Каталог лучших категорий.
*
* @var umiTemplaterPHP|ViewPhpExtension|DemomarketPhpExtension $this
* @var array $variables
*/
?>
<div id="bestItems" class="tab-pane fade in">
<div class="row subsection_container">
<div class="subsection">
<?php foreach ($this->getBestCategory() as $category): ?>
<?= $this->render($category, 'catalog/category/preview') ?>
<?php endforeach; ?>
</div>
</div>
</div>
5. В файл /templates/demomarket/php/library/DemomarketPhpExtension.php добавить метод:
/**
* Возвращает категории для вкладки "Лучшие каталоги"
* @return iUmiHierarchyElement[]
*/
public function getBestCategory() {
$category = new selector('pages');
$category->types('hierarchy-type')->name('catalog', 'category');
$category->where('best_catalog')->equals(true);
$category->limit(0, self::MAX_BEST_OFFERS_COUNT);
$category->order('id')->rand();
$category->group('obj_id');
$category->option('load-all-props')->value(true);
$category->option('no-length', true);
return $category->result();
}
6. В тип данных Раздел каталога добавляем поле "Лучший каталог" с идендификатором best_catalog с типом "Кнопка флажок", видимое.
7. Устанавливаем для выбранных разделов красивые картинки и получаем следующий результат: