-
-
Save FroggyWeb/64eeb298120e7f5a4709614e8331f891 to your computer and use it in GitHub Desktop.
Helper example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| namespace EvolutionCMS\Main; | |
| //положить файл в папку core/custom/packages/Main/src/ | |
| //для использования в любом другом месте добавить use EvolutionCMS\Main\Helper; | |
| use Illuminate\Support\Carbon; | |
| use Illuminate\Support\Facades\Cache; | |
| use Illuminate\Support\Facades\DB; | |
| use Illuminate\Support\Str; | |
| class Helper | |
| { | |
| public static function productTvList() | |
| { | |
| // для списков продуктов (в каталоге, в слайдере, в похожих продуктах, в новых продуктах) | |
| // в общем для каких угодно списков, чтобы не прописывать 100 раз одно и то же | |
| return 'image,price,oldprice,label'; | |
| } | |
| public static function prepareProductList($data, $modx, $DL, $extDL) | |
| { | |
| //ну тут что-то можно написать про prepare DocLister | |
| return $data; | |
| } | |
| public static function DocLister($key, $params, $lifetime = false) | |
| { | |
| //зачем писать api=1 в каждом вызове доклистера, если можно задать его один раз тут | |
| $params['api'] = 1; | |
| if($key) { | |
| //если есть ключ - кэшируем, иначе - не кэшируем | |
| if(empty($lifetime) || !is_numeric($lifetime)) { | |
| //если время кэширования не задано - кэшируем "навсегда" | |
| $arr = Cache::rememberForever($key, function() use($params){ | |
| $arr = []; | |
| $json = evo()->runSnippet("DocLister", $params); | |
| if(!empty($json)) { | |
| $arr = json_decode($json, 1); | |
| } | |
| return $arr; | |
| }); | |
| } else { | |
| //иначе кэшируем "на время" | |
| $arr = Cache::remember($key, $lifetime, function() use($params){ | |
| $arr = []; | |
| $json = evo()->runSnippet("DocLister", $params); | |
| if(!empty($json)) { | |
| $arr = json_decode($json, 1); | |
| } | |
| return $arr; | |
| }); | |
| } | |
| } else { | |
| //если ключа нет - не кэшируем | |
| $arr = []; | |
| $json = evo()->runSnippet("DocLister", $params); | |
| if(!empty($json)) { | |
| $arr = json_decode($json, 1); | |
| } | |
| } | |
| return $arr; | |
| } | |
| public static function DLMenu($key, $params) | |
| { | |
| //аналогично и для DLMenu | |
| $params['api'] = 1; | |
| $arr = []; | |
| if($key === false) {//не кэшируем | |
| $json = evo()->runSnippet("DLMenu", $params); | |
| if(!empty($json)) { | |
| $arr = json_decode($json, 1); | |
| if(!empty($arr[0]) && is_array($arr[0])) { | |
| $arr = $arr[0]; | |
| } else if(is_array($arr)) { | |
| $arr = $arr; | |
| } else { | |
| $arr = []; | |
| } | |
| } | |
| } else { | |
| $arr = Cache::rememberForever($key, function () use ($params) { | |
| $arr = []; | |
| $json = evo()->runSnippet("DLMenu", $params); | |
| if (!empty($json)) { | |
| $arr = json_decode($json, 1); | |
| if (!empty($arr[0]) && is_array($arr[0])) { | |
| $arr = $arr[0]; | |
| } else if (is_array($arr)) { | |
| $arr = $arr; | |
| } else { | |
| $arr = []; | |
| } | |
| } | |
| return $arr; | |
| }); | |
| } | |
| return $arr; | |
| } | |
| public static function plural($n, $forms = [ 'товар', 'товара', 'товаров' ]) { | |
| //склонение | |
| // Helper::plural($productCount) | |
| // Helper::plural($reviewsCount, ['отзыв', 'отзыва', 'отзывов']) | |
| $n = $n ?: 0; | |
| return $n%10==1&&$n%100!=11?$forms[0]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$forms[1]:$forms[2]); | |
| } | |
| public static function webp($image, $options = '') | |
| { | |
| // если вдруг понадобилось преобразовать изображение в формат webp без всяких обрезок и пребразований | |
| // сокращенная запись того же через thumb плюс фикс пустых options | |
| // Helper::webp($image); | |
| return !empty($image) ? evo()->runSnippet("phpthumb", [ 'input' => $image, 'options' => $options, 'webp' => 1 ]) : ''; | |
| } | |
| public static function thumb($image, $options = '', $webp = false) | |
| { | |
| // чтобы долго не писать $modx->runSnippet и всякие параметры не перечислять | |
| // плюс при желании можно быстро сменить со сниппета на хелпер Thumb | |
| $params = [ 'input'=> $image, 'options' => $options ]; | |
| if($webp) { | |
| $params['webp'] = 1; | |
| } | |
| return evo()->runSnippet("phpthumb", $params); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment