$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): ?>
<?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'); ?>
$this->moreData($options) - возвращает набор данных используя Ajax запрос по указанному шаблону добавляя их в указанный блок без перезагрузки страницы, используя массив настроек $options
Пример использования:
<?=$this->moreData(['tpl'=>'more', 'selectorData'=>'#content_more', 'selectorEvent'=>'#objEvent', 'begin'=>0, 'category'=>[2, 37, 171, 446], 'limit'=>[0, 5], '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]
Спец. ключ для работы по таблице файлов
$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'=>[474, 477, 461]]);?>
- 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 = массив фильтр
<?=$_data['title']?>-<?=$_data['date']?>