Работа с файлом конфигурации (config)

Данный файл содержит настройки движка, и позволяет получить быстрый доступ к настройкам в шаблоне сайта и если нужно в любом другом месте используя include вы легко можете подключить файл настроек который находиться /engine/settings/config.php

Структура config.php
В данном файле находиться массив $config. Внутри шаблона чтобы вывести настройки используйте идентификатор $this->config Общие настройки
  • $this->config['lang']
  • $this->config['currency'] - это массив содержащий список данных установленных валют для работы с ним удобней использовать функцию $this->getCurrency
Остальные настройки находятся под ключами для каждого языка системы ['ru', 'en'], используя print_r( $this->config['ru'] ); можно посмотреть все настройки для языка ru - Русский.

Пример $this->config['ru']['metatitle'] - содержит три элемента под индексами 0, 1, 2

  • $this->config['ru']['metatitle'][0] - Значение
  • $this->config['ru']['metatitle'][1] - Название
  • $this->config['ru']['metatitle'][2] - Описание

API: Constants (константы)

<?=ROOT_DIR?> - путь к корневому каталогу

<?=ENGINE_DIR?> - путь к основной папке движка

<?=THEME?> - путь к шаблону сайта

<?=LANG?> - возвращает язык страницы, если он не равен языку сайта по умолчанию. Пример /en, /ru

<?=CURLANG?> - возвращает текущий язык страницы. Пример en, ru

API: Static ( статическая страница )

Для вывода информации на статической странице используйте массив <?=$this->dataPage['key']?>

Список ключей: [ incr, incr_lang, user_id, tpl, login, name, lang, title, template, status, date, files[] ]
files[] массив хранящий спиcок файлов, ключи доступа: [ name, dir, title, description ]


API: Tags (вывод новостей по тегам)

Имеет тот же формат вывода что и short_post.

API: short post (вывод раздела сайта)

Массив, содержащий список данных <?=$this->dataPage['listPost']['индекс массива']?>

Список ключей: [ incr, incr_cat, catName, title, chpu, count, price, user_id, login, lang, tags, short_post, status, date]

Для полного вывода данных используйте $_callback функцию <?=$this->listPosts(function($data){ print_r($data) } );?>
Список ключей: [ incr, incr_cat, catName, title, chpu, count, price, user_id, login, lang, tags, short_post, status, date, 
files[], fields[], dopFields[], category ]


files[] массив, хранящий спиcок файлов, ключи доступа: [ name, dir ]

dopFields[] массив, хранящий спиcки значений дополнительных полей, ключи доступа: [ incr, incr_extra, incr_post, name, description, extra_name, extra_description ]

category[] массив, хранящий категорию поста исходя и URL


Если вам внутри рздела не нужно делать забор данных вы сами это сделаете например настроив фильтр поиска внутри раздела для этого установите значение в Список категорий -> Редактирование категории -> [Количество постов на страницу] = 0

API: Full Post (вывод страницы целиком)

Для вывода информации в шаблоне полной новости используйте массив <?=$this->dataPage['key']?>

Список ключей: [ incr, chpu, count, price, incr_lang, user_id, login, lang, incr_cats, catName, cats, title, tags, short_post, full_post, 
status, date, files[], dopFields[], tpl ]


files[] массив, хранящий спиcок файлов, ключи доступа: [ name, dir, title, description ]

dopFields[] массив, хранящий спиcки значений дополнительных полей, ключи доступа: [ incr, incr_extra, incr_post, name, description, extra_name, extra_description ]

incr - идентификатор основного поля < названия списка >

incr_extra - идентификатор элемента списка

Функции:

$this->chain_post('next', $_callback) - служит для вывода следующего или предыдущего поста используя параметры next, prev

Пример использования
<?php
    $this
->chain_post('prev', function($data){
        echo 
'<a href="'.$data['full-link'].'">'.$data['title'].'</a>';
    });
?>

API: Functions (список функций)

$this->outputHTML - используется для вывода основной информации в шаблоне [main] точка вывода основного контента.

<?=$this->outputHTML(function($tpl){$this->get($tpl);})?>

$this->listPosts - используется для вывода информации в шаблонах [short_post, tags], дополняет первоначальный массив полными данными о посте.

<?php
    $this
->listPosts(function($_data){
        
#$_data['files']['индекс массива']      - хранит список файлов;
        #$_data['dopFileds']['индекс массива']  - хранит спиcок дополнительных полей
        #$_data['cat-link']                     - содержит ссылку на категорию
        #$_data['full-link']                    - содержит ссылку на пост 
    
});
?>

<?php foreach( $this->listPosts() as $key=>$value ){ /* do sumthing */ }    ?>

$this->tags - используется для вывода тегов в шаблоне [full_post]

<?php
    $this
->tags(function($tag){
        
#$tag - тег
    
});
?>

$this->files - используется для вывода файлов в шаблоне [static, full_post]

<?php
    $this
->files(function($file){
        
#$file->name - имя файла
        #$file->dir - путь к файлу
    
});
?>

$this->is_home() - возвращает TRUE если главная страница, также возможно использовать $_callback в качестве аргумента функции

<?php
    $this
->is_home(function(){
        
#... do something
    
});
?>

$this->custom($options, $_callback) - возвращает набор данных по указанному шаблону, используя массив настроек $options

Пример использования:
$this->custom(['tpl'=>'custom', 'category'=>[5,3], 'lang'=>'ru', 'limit'=>5, 'order'=>['incr'=>'DESC']])

  • tpl = шаблон для вывода
  • category = список категорий
  • lang = язык страници
  • where = фильтр, пример параметра where=>['status'=>'active']
    Доступные ключи [incr, user_id, count, price, views, rating, status, post_date, date]
  • limit = лимит вывода данных
  • order = сортировка (в случайном порядке Medoo::raw('RAND()') )
  • group = группировка данных
  • return = ВОЗВРАЩАЕТ НАБОР ДАННЫХ В СЛУЧАЕ ЕСЛИ [ return=>true ] УКАЗЫВАТЬ ШАБЛОН tpl НЕ НУЖНО
  • view = указывает представление для запроса данных с бд ( работает только при активированном кешировании систему) Пример: 'view'=>'cache_post' виртуальная таблица содержит минимальные данные о посте
В шаблоне tpl для вывода полученных данных используется массив $this->_custom[]
Чтобы посмотреть ключи массива используйте print_r($this->_custom)
    $this->_custom['cat-link']     - содержит ссылку на категорию
    $this->_custom['full-link']     - содержит ссылку на пост 
    $this->_custom['i']             - счетчик итераций 


$_callback = используется для обработки полученных данных по шаблону $this->custom($options, function(&$data){} ) ;

$this->pagination($options) - используется для вывода нумерации страниц в шаблоне [short_post]

Аргумент $options может быть массивом или же функцией обратного вызова.
Список ключей: $options[selector, total, page, maxVisible]

Примеры использования: <?=$this->pagination(['selector'=>'.short_post'])?>

<?php $this->pagination(function($paging){
        
#$paging['total']
        #$paging['page']
        #$paging['maxVisible']});
?>

$this->autocomplete($options) - используется для автозаполнения формы поиска, используя tags

массив $options имеет следующие параметры.

  • selector = основной элемент в форме заполнения
  • minLength = задает минимальное значение введенных символов, при котором активируеться автозаполнение формы
  • limit = лимит найденных совпадений для автозаполнения
Примеры использования: <?=$this->autocomplete(['selector'=>'#autocomplete''minLength'=>1])?>

$this->Breadcrumb($_callback, $_callbackLast) - Навигационная цепочка

Примеры использования: <?=$this->Breadcrumb(function($chain){
  
# chain - Раздел
})?>


Альтернативный способ ( возврат массива ячеек для обработки в цикле ):
<?php foreach($this->Breadcrumb() as $chain ?>

$_callbackLast = функция обратного вызова для последнего элемента.

$this->chain_post($direction = '', $_callback = null) - Навигационная цепочка постов предыдущий / следующий

Примеры использования:
        <?php
            $this
->chain_post('prev', function($data){
                echo 
'<a href="'.$data['full-link'].'">PREV</a>';
            });
        
?>
        
<?php
            $this
->chain_post('next', function($data){
                echo 
'<a href="'.$data['full-link'].'">NEXT</a>';
            });
        
?>

$direction = направление перемещения.
$_callbackLast = функция обратного вызова для последнего элемента.

$this->StaticPage($options) - получает и возвращает набор данных статической страници, используя массив настроек $options

Пример использования:
<?php $dataPage $this->StaticPage(['name'=>'about''lang'=>'ru'])); ?>

  • name = название страници
  • lang = язык страници
  • in_buffer = в случае указание данного ключа массива, возврата данных не будет они будут храниться в:
    $this->_buffer[ $key=>$options['in_buffer'] ]
Список ключей в массиве $dataPage: [ incr, incr_lang, user_id, tpl, login, name, lang, title, template, status, date, files[] ]

$this->is_cat($cat, $option = null) - возвращает True или другое указанное значение если открытый раздел (категория сайта) = $cat

Пример использования:
<?php $this->is_cat('game''class="active"'?>

  • $cat[] = может испольтзоваться в качестве массива для поиска совпадения $cat['cat1','cat2']
  • $option = не указан = вернет True
  • $option = $val = вернет $val
  • $option = callback = также может выступать в качестве callback функции
  • <?php $this->is_cat() ?> = вернет true если открыт любой раздел сайта
На практике удобно применять для подсветки выбранного раздела.

$this->is_page($page, $option = null) - полный аналог функции $this->is_cat только для статических страниц.

$this->is_fullPost() - Возращает true если ( $this->chpu->options['section'] == 'full_post') Внутренняя страница

$this->is_static() - Возращает true если ( $this->chpu->options['section'] == 'static') Статическая страница

$this->getPostData($option) - возвращает данные post используя в качестве идентификатора incr

Пример использования:
<?php $this->getPostData(['incr'=>1'lang'=>'ru']) ?>

  • incr = уникальный идентификатор для post
  • lang = язык (данный параметр можно не заполнять при этом язык будет взят автоматически)

$this->is_cats_post($option) - возвращает true если указанные категории установлены на данный post в противном случае вернет false

Пример использования:
<?php $this->is_cats_post(['incr'=>1'incr_cats'=>['1','2']]) ?>

  • incr = уникальный идентификатор для post
  • incr_cats = массив категорий

$this->findSubCat($options) - поиск дочерной категории. В случае совпадения вернет массив с дочерними категориями.

Пример использования:
<?php $this->findSubCat(['incr_cats'=>[2,3,4], 'incr_parent'=>1]]) ?>

  • incr_parent = индекс категории родителя для поиска
  • incr_cats = список индексов категорий

$this->friends($options, $_callback = null) - вывод друзей.

Пример использования:
<?php $this->friends(['user_id'=>1'status'=>'active']]) ?>

  • user_id = идентификатор основного пользователя
  • friend_id = идентификатор пользователя друга
  • status = имеет три возможных параметра 'active', 'banned', 'wait'
В данном примере использования функции мы получим массив друзей пользователя user_id котрого равен 1. Также данный массив можно обработать с помощью $_callback функции.

$this->TextMessages($options, $_callback) - вывод текстовых сообщений (коментарии, переписка, сообщения на профиле)

Пример использования:
<?php $this->TextMessages'type'=>'post''pkey'=>1'tpl'=>'comments'
                            
'selector-data'=>'.data-messages''limit'=>20'order'=>'incr DESC',
                            [
'pagination'=>['selector'=>'.text_messages',  'limit_output'=>5],
                                    
'done'=>'$("._showText").click(function(){
                                                $(this).parent().find("._textHide").show();
                                                $(this).hide();
                                            });'
                                    
]);  ?>


$_callback = функция обратного вызова для обработки сообщений, работает только если пагинация не активирована.

  • type = тип сообщения (post, profile, correspondence)
  • pkey = идентификатор для (type) например для post будет incr, для user id
  • tpl = шаблон для вывод
  • selector-data = селектор для вывода данных
  • limit = лимит вывода сообщений, работает в том случае если пагинация не активирована
  • order = сортировка данных
  • pagination = активация Ajax Pagination
  • pagination[selector] = селектор для вывода нумерации страниц
  • pagination[limit_output] = лимит вывода данных на страницу
  • pagination[done] = происходит когда данные от ajax получены

$this->postFullSearch($options, $_callback) - абсолютный поиск постов используя все фильтры (столбцы, доп. поля)

Параметры:
<?php
        $this
->postFullSearch([
                 
'pagination'=>[
                 
'selector'=>'.post-search'
                 
'limit_output'=>10
                
], 
                
                
'fields'=>['incr','title''date'],
                
'conf'=>'_conf',
                
'func'=>'setPostFilter',
                
'data-selector'  =>'.dataFind',
                
'inner-selector' =>'.num_rows',
                
'tpl'=>'dataFind'
                
'limit'=>40,
                
'order'=>['incr'=>'DESC'],
                
'group'=>'incr',
                
'where'=> ['_name'=>'dev']
                
'debug'=>'1'
                'done'
=>''
        
]); 
    
?>


$_callback = функция обратного вызова для обработки сообщений, работает только если пагинация не активирована.

  • pagination = активация Ajax Pagination
  • pagination[selector] = селектор для вывода нумерации страниц
  • pagination[limit_output] = лимит вывода данных на страницу
  • pagination[done] = происходит когда данные от ajax получены
  • fields = поля данных, по умолчанию выводятся все (*)
  • conf = переменная хранящая настройки поиска
  • func = имя функции для установки нового фильтра вывода данных
  • data-selector = селектор для вывода данных
  • inner-selector = селектор для вывода данных внутри блока родителем которого являеться верхний блок [data-selector]
  • limit = лимит вывода данных
  • order = сортировка данных
  • group = группировка данных
  • where = критерии поиска
  • debug = отладка
  • done = срабатывает когда данные получены, для того чтобы можно было навесить javascript обработчики на полученные данные
  • view = указывает представление для запроса данных с бд Пример: 'view'=>'cache_post_full_search' виртуальная таблица содержит минимальные данные о посте
Пример использования:

<div class="dataFind">
<?php
        $this
->postFullSearch([
                 
'pagination'=>[
                 
'selector'=>'.post-search'
                 
'limit_output'=>10
                
], 
                
                
'conf'=>'_conf',
                
'func'=>'setPostFilter',
                
'data-selector'  =>'.dataFind',
                
'inner-selector' =>'.num_rows',
                
'tpl'=>'dataFind',
                
'order'=>'incr DESC',
                
'group'=>'incr',
        ]); 
?>
</div>

Шаблон [dataFind.tpl]

<div class="<?=$options['innerClass']?>" data-total="<?=$options['total']?>">
<?php foreach($options['data'] as $_data): ?>
<?=$_data['title']?>-<?=$_data['date']?>
<?php endforeach; ?>
</div>


Управление фильтром происходит по принципу передачи переменной [conf] значений данных по типу ключ значение, после установки фильтра необходимо вызвать функцию [func]

Пример

Назовем переменную хранящую конфигурацию фильтра [conf] - _conf и функцию для вывода данных по фимльтру [func] - setPostFilter
    <script>
        _conf['where'] = { 'title[~]': 'test' };
        setPostFilter();
    </script>


Это будет в запросе title LIKE '%test%', не пугайтесь ключика [~] это все работает на уровне фреймовка medoo.in для работы с бд, все ключи вы сможете посмотреть в документации данного фрейморка, основные таковы [>] [<] [>=] [<=] [!] [=] . Все просто, вы делаете набор фильтра пример еще раз _conf['where'] = { 'title[~]': 'test', 'incr_cat': [1, 2, 3] } после чего вызываете функцию setPostFilter()

Посмотреть все имена полей можно в представлении v_wst_post_full_search

Поиск используя поля [incr_cats, incr_generals, incr_extras, extra_values]
Структура данных - [ {'AND': [ { '[~]': 101 }, { '[~]': 102 } ] }, {'OR': [ { '[~]': 103 }, { '[~]': 104 } ]} ]
Объект массива - {'AND': [ { '[~]': 101 }, { '[~]': 102 } ] } Разделим его на детали чтобы было понятно,
1: { AND: [] } объект хранящий критерий отбора AND и массив с фильтром.
2: { AND: [ { '[~]': 101 } ] } - элемент массива хранит ключ [~] который указывать по документации фреймворка medoo.in LIKE '%data%', второй вариант ключа [!~] - NOT LIKE '%data%'
PHP example for multi cats: [ 'incr_cats'=> [ 0=>[ 'AND'=>[ 0=>['[~]'=>$cat['incr'] ] ] ] ]
Структура
[incr_extras] => Array ( [0] => Array ( [OR] => Array ( [0] => Array ( [[~]] => 1262 ) ) )

$this->subPosts($options) - возвращает массив ключей подчиненных постов.

Пример использования:
<?php $this->subPosts(['incr_post'=>1'lang'=>'ru']]); ?>

  • incr_post = идентификатор основного поста
  • lang = язык, данный параметр можно не указывать тогда языке будет взят автоматически

$this->retranslate($lang) - формирует и возвращает линк перевода данной страницы на указанной язык.

Пример использования:
<?php $this->retranslate('ru'); ?>

  • lang = язык перевода

$this->moreData($options) - возвращает набор данных используя Ajax запрос по указанному шаблону добавляя их в указанный блок без перезагрузки страницы, используя массив настроек $options

Пример использования:
<?=$this->moreData(['tpl'=>'more''selectorData'=>'#content_more''selectorEvent'=>'#objEvent''begin'=>0'category'=>[237171446], 'limit'=>[05], 'order'=>['incr'=>'DESC'],
                        
'before'=>function(){
                            
// do sumhing
                        
}, 
                        
'after'=>function(){
                            echo 
'if(_status == "no-data"){
                                // do sumhing
                            }'
;
                        }
                    ])
?>


  • selectorData = идентификатор для добавления данных методом append
  • selectorEvent = идентификатор для активация события добавления данных (также примнимает строковое значение - scroll в этом случае загрузка данных будет производиться когда скролл будет находиться в самом нижнем положении)
  • begin = автоматически выполнит при инициализация загрузку данных (данный параметр не обязательный) /li>
  • before, after = обработчики событий до загрузки и после (данные параметры не обязательны)
  • tpl = шаблон для вывода
  • limit = лимит может принимать чсиловое значение указывающее сколько данных подгружать при каждом запросе, в случая использования массива как показано в данном примере можно указать с какого номере начинать загрузку данных
  • category = список категорий
  • lang = язык страницы
  • where = фильтр, пример параметра where=>['status'=>'active']
    Доступные ключи [incr, user_id, count, price, views, rating, status, post_date, date]
  • order = сортировка
  • return=>true = вернет массив в шаблон tpl данные которые храняться в $options['data']
В шаблоне tpl для вывода полученных данных используется массив $this->_custom[]
Чтобы посмотреть ключи массива используйте print_r($this->_custom)
    $this->_custom['cat-link']     - содержит ссылку на категорию
    $this->_custom['full-link']     - содержит ссылку на пост 
    $this->_custom['i']             - счетчик итераций 


Добавления эффектов вывода данных

  • 'effect'=>['selector'=>'.col-md-3', 'fadeIn'=>'slow']
  • 'effect'=>['selector'=>'.col-md-3', 'fadeIn'=>5000]
  • 'effect'=>['selector'=>'.col-md-3', 'show'=>'slow']
  • 'effect'=>['selector'=>'.col-md-3', 'show'=>5000]
Спец. ключ для работы по таблице файлов

  • 'table'=>'post_files'

$this->getFile($optins, bool) - возвращает объект данных файла используя $options['type'], в случае если bool = true вернет массив данных файла.

Пример использования ($arr['files'] должен содержать массив с ключом dir для каждого элемента):
<?=$this->getFile(['files'=>$arr['files'], 'type'=>'big'])->dir?>

  • type = принимает два типа big - самый большей файл, small - маленький
  • imgsize = принимает два ключа width - ширина картинки, height - высота картинки
  • bool = если true то функция вернет массив с ключами ['name', 'dir']
  • position = возвращает файл по номеру позиции файла

Альтернативный пример использования:
<?=$this->getFile(['files'=>$arr['files'], 'type'=>'big'], true)['dir']?>

$this->getCurrency($sign) - возвращает массив данных указанной валюты.

Пример использования:
<?=$this->getCurrency($sign)['Доступный ключ данных']?>

  • sign = для вывода основной валюты используйте значение main
  • Ключи данных [sign, name, rate, main]

$this->getPrice($options) - возвращает цену исходя из курса к основной валюте.

Пример использования:
<?=$this->getCurrency(['sign'=>'$''money'=>28'round'=>2])?>

  • sign = знак валюты
  • money = сумма
  • round = округление

$this->is_chpu($options) - возвращает значение если ЧПУ соответствует заданным критериям.

Пример использования:
<?=$this->is_chpu(['chpu'=>['contect''about'], 'val'=>'<h1>WORK WORK Value</h1>''do'=>'<h1>DONT FIND!</h1>' ]);?>

  • chpu = принимает массив ЧПУ для сверки
  • home = устанавливает значение для главной страницы
  • val = возвращаемое значение в случае нахождения ЧПУ
  • do = выполняется в случае если ни одного совпадения по ЧПУ не найдено ( данный параметр можно не использовать )

Второй пример использования:
<?=$this->is_chpu(['chpu'=>['contect'=>'<h1>YES GOOD</h1>''about'=>'ITS WORK'], 'do'=>'<h1>DONT FIND!</h1>' ]);?>

В данном примере значение устанавливается непосредственно на ЧПУ без использования ключа [ val ]

$this->getSubCats($incrParent) - возвращает массив номеров подчинённых категорий

Пример использования:
<?php $this->getSubCats($incrParent); ?>

  • incrParent = номер родительской категории

$this->getLink($options) - возвращает ЧПУ исходя из родительской категории

Пример использования:
<?=$this->getLink(['incr_parent'=>40'incr_cats'=>[474477461]]);?>

  • incr_parent = номер родительской категории
  • incr_cats = массив категорий

$this->getCatData($options)) - возвращает данные категории

Пример использования:
<?=$this->getCatData(['incr_cats'=>[1,2,3]]));?>

  • incr_cats = массив категорий

$this->is_groupPage($options) - возвращает true или false при проверки группы на статической странице

Пример использования:
<?php if($this->is_groupPage(['incr'=>1])) { /* do sumthing */ ?>

  • incr = номер группы
  • incr[] = принимает массив и ищет совпадение в массиве номеров
  • name = имя группы

$this->getCatTree($options) - возвращает дерево категорий

Пример использования:
<?=$this->getCatTree(['parent'=>function($key$cat$next){
        return 
'<li>'.$key.'<ul>'.$next.'</ul> </li>';
    }, 
    
'child'=>function($key$cat){
        return 
'<li>'.$key.'</li>';
    }
'from'=>'catName''to'=>'catName']); ?>


  • parent = калбек функция для обработки вывода родителя
  • child = калбек функция для обработки дочернего элемента
  • from (не обязательный параметр) = вывод категории начиная с текущей
  • to (не обязательный параметр) = вывод категории до текущей

$this->hasGroupPostAccess($incrGroup, $user_id) - возвращает true если у пользователя есть группа доступка к файлу

Пример использования:
<?=$this->hasGroupPostAccess($incrGroup$_SESSION['id']);?>

  • incrGroup = группа доступа к файлу
  • user_id = ID пользователя

$this->genPagination($opt) - возвращает массив страниц

Пример использования:
<?=$this->genPagination(['prev'=>2'count'=>10]) ;?>

  • prev = Количестве предыдущих страниц
  • count = Количество страниц на вывод включая (prev - страницы)

$this->groupFiles($files, $typeArray = false) - возвращает сгруппированные файлы по расширению, отдельно собирая картинки в [image]

Пример использования:
<?=$this->groupFiles($this->dataPage['files']) ;?>

  • files = Массив файлов в посте
  • typeArray = Вывод данных в массиве

$this->filterDopFields($data, $filter = []) - возращает массив доп полей по фильтру

Пример использования:
<?=$this->filterDopFields($data['dopFields'], ['incr_general'=>1]) ;?>

  • data = массив доп. полей
  • filter = массив фильтр

API: Ajax

Вывод любой информации с любой таблици в формате JSON, доступно группам (Супер пользователь, администратор, контент менеджер)

$.post('/ajax-data-handler', { 'ajaxKeyActions': 'selectData', 
            'data': JSON.stringify({
                    'table': 'v_wst_short_posts', 
                    'fields': ['incr', 'chpu', 'status'], 
                    'condition': { 'where': { 'title[~]': _title } } 
                }),
            },
            function(data){
                var _data = JSON.parse(data);
                console.log(_data);
            }
        );    

table - имя таблици бд
fields - массив столбцов бд
condition - позволяет задать все возможные условия для выбора данных например ORDER, GROUP, LIMIT, забор данных идет с помощю medoo.in. На выходе мы получем масив данных data.
Пользователь в группе (контент менеджер) - имеет ограниченный доступ к запросу данных.

Вывод всех городов используя идентификатор страны [incr_country] в формате JSON, доступно всем

$.post('/ajax/index.php', { 'keyActions': 'get-cities', 'incr_country': 1 },
                    function(data){
                        var _data = JSON.parse(data);
                        // do something
                    }
            );    

incr_country - уникальный идентификатор страны

Вывод всех отделений доставки используя идентификатор города [incr_city] в формате JSON, доступно всем

$.post('/ajax/index.php', { 'keyActions': 'get-delivery-department', 'incr_city': 1 },
                function(data){
                    var _data = JSON.parse(data);
                    // do something
                }
            );    

incr_city - уникальный идентификатор горада


API: Database (Работа с базой данных)

Для работы с базой данных используется Framework - Medoo

Документация по работе с данным Framework http://medoo.in/doc
Чтобы работать с БД в модулях используйте эклампляр класа $db, для работы в шаблоне используйте $this->db

Корзина

Работа с корзиной

Для работы корзины нужно подключить jquery.cookie.js путь к файлу /includes/js/jquery.cookie.js. Вы можете скопировать его в папку шаблона и после подключить так будет удобней. Сам шаблон корзины shipping_cart.tpl лежит почти там же путь /includes/shipping_cart.tpl его тоже лучше скопировать в папку с шаблоном сайта. В шаблоне внутри указан style который для удобства будет лучше перенести в общий файл со стилями но решать вам, обработка событий javascript находиться в самом низу файла. Страничку с корзиной удобней всего сделать через статическую страницу указав ей нужный шаблон например shipping_cart.tpl, хотя шаблон вы можете переименовать как хотите.

Обработчик добавления товара в корзину

		$('.add-to-cart').click(function(){
			var keyProduct = 'product_'+$(this).attr('data-product'),
				keyCount   = 'countProduct';
			$(this).text('');
			$(this).addClass('icon-check');
			if(!$.cookie(keyProduct)){
				$.cookie(keyProduct, 1, { path: '/' });
				if(!$.cookie(keyCount)){
					$.cookie(keyCount, 1, { path: '/' });
				}else {
					$.cookie(keyCount, (parseInt($.cookie(keyCount))+1), { path: '/' });
				}
				$('.shipping-cart__counter').html($.cookie(keyCount));
			}
		});
	

Элемент с классом add-to-cart

<a data-product="552" class="btn btn-blue add-to-cart">В корзину</a>

data-product - уникальный идентификатор товара (порядковый номер)

Разбираем обработчик по частям

Перемнные [keyProduct - идентификатор продукта, keyCount - количество товаров в корзине] их лучше не менять поскольку потом прийдеться переписывать настройки во всех местах.

$(this).text(''); 
$(this).addClass('icon-check');  
Данное действие заменяет слово [В корзину] и добавляет на элемент класс icon-check это создано чтобы пользователь мог видеть какой товар он добавил в корзину на текущей странице. К примеру на класс icon-check можно применить с помощью стиля картинку информирующею что товар уже добавлен в корзину.

$('.shipping-cart__counter').html($.cookie(keyCount));
Добавляет номерок количества товаров в корзине к элементу с классом shipping-cart__counter

Обязательно подключить инициализаторы кнопок
	$('.shipping__total-wrap .btn').click(function(){
            $('.shipping').hide();
            $('.shipping-form').show();
            return false;
        });
        $('#back.back').click(function(){
            $('.shipping').show();
            $('.shipping-form').hide();
            return false;
        });
	

Регистрация нового пользователя

Регистрация нового пользователя

Для вывода формы регистрации нужно в шаблоне в нужном месте вызвать функцию <?=$this->get('{registration-form}')?> Сам шаблон регистрации находиться по пути /includes/registration-form.tpl

Два дополнительных шаблона

В системе должно быть создано два дополнительных шаблона для регистрации пользователя если активирована система активации аккаунта.

  • user-activation.tpl - пользователь успешно активирован
  • error-user-activation.tpl - ошибка активации

Настройка: HTML редактора summernote

Сайт разработчика - Summernote

Для настройки редакторы создайте в корне шаблона вашего сайта файл с имененм wst-summernote-config.js

Пример кода настройки для файла wst-summernote-config.js, более подробные настройки смотрите на сайте разработчика.
let _summernoteConfig_ = {
	lineHeights: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.8', '1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'],
	toolbar: [
			['style', ['style']],
			['font', ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear']],
			['fontname', ['fontname']],
			['fontsize', ['fontsize']],
			['color', ['color']],
			['para', ['ul', 'ol', 'paragraph']],
			['height', ['height']],
			['table', ['table']],
			['insert', ['link', 'video', /*'picture',*/ 'hr']],
			['view', ['fullscreen', 'codeview']],
			['help', ['help']]
		],

 	fontNames: ['Arial', 'Arial Black', 'Tahoma', 'Violet'],
	fontSizes: ['8','9','10','11','12','13','14','16','18','20','22','24','26','28','36','48','72'],
    height: 400,
    tabsize: 2,
    codemirror: { theme: 'monokai' },
	
	callbacks: {
		onInit: function() {
			$(this).summernote('lineHeight', 0.2);
			$(this).summernote('fontSize', 14);
		}
    }
}