Класс Design.php

 

Класс Design

В нем  подключается Smarty и добавляются глобальные модификаторы для работы с переменными

Функция assign()

Код функции (спойлер)
 
  /*Подключение переменной в шаблон*/
    public function assign($var, $value) {
        return $this->smarty->assign($var, $value);
    }

Подключение переменной в шаблон

Функция принимает аргументы$var, $value

Параметры которые содержит функция:

  • $var- название переменной в шаблон
  • $value - значение переменной

Функция fetch()

Код функции (спойлер)
    /*Отображение конкретного шаблона*/
    public function fetch($template) {
        // Передаем в дизайн то, что может понадобиться в нем
        $this->assign('config',        $this->config);
        $this->assign('settings',    $this->settings);

        return $this->smarty->fetch($template);
    }

Функция отображения (рендеринга) шаблона

Функция принимает один аргумент $template

Параметры которые содержит функция:

  • $template - название файла для отображения. Например product.tpl

Функция set_templates_dir()

Код функции (спойлер)
     /*Установка директории файлов шаблона(отображения)*/
    public function set_templates_dir($dir) {
        $this->smarty->template_dir = $dir;
    }

Установка директории файлов шаблона(отображения)

Функция принимает один аргумент $dir

Параметры которые содержит функция:

  • $dir - директория с файлами шаблона

Функция set_compiled_dir()

Код функции (спойлер)
   /*Установка директории для готовых файлов для отображения*/
    public function set_compiled_dir($dir) {
        $this->smarty->compile_dir = $dir;
    }

Установка директории для готовых файлов для отображения

Функция принимает один аргумент $dir

Параметры которые содержит функция:

  • $dir- директория с файлами, обработанными самим Smarty

Функция get_var()

Код функции (спойлер)
     /*Выборка переменой*/
    public function get_var($name) {
        return $this->smarty->getTemplateVars($name);
    }

Функция выборки (взятия) переменной

Функция принимает аргумент $name

Параметры которые содержит функция:

  • $name - название переменной

Функция resize_modifier()

Код функции (спойлер)
  /*Функция ресайза для изображений*/
    public function resize_modifier($filename, $width=0, $height=0, $set_watermark=false, $resized_dir = null) {
        $resized_filename = $this->image->add_resize_params($filename, $width, $height, $set_watermark);
        $resized_filename_encoded = $resized_filename;

        $size = $width.'x'.$height;
        $image_sizes = array();
        if ($this->settings->image_sizes) {
            $image_sizes = explode('|', $this->settings->image_sizes);
        }
        if (!in_array($size, $image_sizes)) {
            $image_sizes[] = $size;
            $this->settings->image_sizes = implode('|', $image_sizes);
        }

        if(substr($resized_filename_encoded, 0, 7) == 'http://') {
            $resized_filename_encoded = rawurlencode($resized_filename_encoded);
        }

        $resized_filename_encoded = rawurlencode($resized_filename_encoded);

        if (!$resized_dir) {
            $resized_dir = $this->config->resized_images_dir;
        }
        return $this->config->root_url.'/'.$resized_dir.$resized_filename_encoded;
    }

Функция вызова ресайза изображений

Функция принимает аргументы $filename, $width=0, $height=0, $set_watermark, $resized_dir

Параметры которые содержит функция:

  • $filename- имя файла
  • $width- ширина в пикселях
  • $height- высота в пикселях
  • $set_watermark- установка водяного знака (true/false)
  • $resized_dir- конечная директория

Функция url_modifier()

Код функции (спойлер)
   /*Функция для построения ссылки в шаблоне*/
    public function url_modifier($params) {
        if(is_array(reset($params))) {
            return $this->request->url(reset($params));
        } else {
            return $this->request->url($params);
        }
    }

Функция построения ссылки в шаблоне, включая параметры

Функция принимает аргумент $params

Параметры которые содержит функция:

  • $params- параметры для построения ссылки (get параметры)

Функция plural_modifier()

Код функции (спойлер)
   /*Функция для создания окончаний слов в зависимости от количества чего-либо*/
    public function plural_modifier($number, $singular, $plural1, $plural2=null) {
        $number = abs($number);
        if(!empty($plural2)) {
            $p1 = $number%10;
            $p2 = $number%100;
            if($number == 0) {
                return $plural1;
            }
            if($p1==1 && !($p2>=11 && $p2<=19)) {
                return $singular;
            } elseif($p1>=2 && $p1<=4 && !($p2>=11 && $p2<=19)) {
                return $plural2;
            } else {
                return $plural1;
            }
        } else {
            if($number == 1) {
                return $singular;
            } else {
                return $plural1;
            }
        }
    }

Функция для создания окончаний слов в зависимости от количества чего-либо


Функция first_modifier()

Код функции (спойлер)
  /*Возвращение первого элемента в цикле*/
    public function first_modifier($params = array()) {
        if(!is_array($params)) {
            return false;
        }
        return reset($params);
    }

Функция возвращает первый элемент массива

Функция принимает аргумент $params

Параметры которые содержит функция:

  • $params - входной массив

Функция cut_modifier()

Код функции (спойлер)
   /*Функция для среза массива данных*/
    public function cut_modifier($array, $num=1) {
        if($num>=0) {
            return array_slice($array, $num, count($array)-$num, true);
        } else {
            return array_slice($array, 0, count($array)+$num, true);
        }
    }

Функция для среза элементов массива (например для вывода доп изображений товара, начиная со второго)

Функция принимает аргументы $array, $num

Параметры которые содержит функция:

  • $array - входной массив
  • $num - номер элемента, с которой надо начать

Функция date_modifier()

Код функции (спойлер)
   /*Функция для отображения даты в разных видах*/
    public function date_modifier($date, $format = null) {
        if(empty($date)) {
            $date = date("Y-m-d");
        }
        return date(empty($format)?$this->settings->date_format:$format, strtotime($date));
    }

Функция для отображения даты в разных видах

Функция принимает аргументы $date, $format

Параметры которые содержит функция:

  • $date - входная дата
  • $format - форматы отображения даты

Функция time_modifier()

Код функции (спойлер)
   /*Функция отображения времени в разных видах*/
    public function time_modifier($date, $format = null) {
        return date(empty($format)?'H:i':$format, strtotime($date));
    }

Функция отображения времени в разных видах

Функция принимает аргументы $date, $format 

Параметры которые содержит функция:

  • $date - входная дата
  • $format - формат времени, для отображения

Функция api_plugin()

Код функции (спойлер)
    /*Функция вызова методов внутри шаблонов клиента*/
    public function api_plugin($params, &$smarty) {
        if(!isset($params['module'])) {
            return false;
        }
        if(!isset($params['method'])) {
            return false;
        }

        $module = $params['module'];
        $method = $params['method'];
        $var = $params['var'];
        unset($params['module']);
        unset($params['method']);
        unset($params['var']);
        $res = $this->$module->$method($params);
        $smarty->assign($var, $res);
    }

Функция вызова методов внутри шаблонов клиента

Функция принимает аргументы $params, &$smarty 

Параметры которые содержит функция:

  • $params - массив с параметрами вызова

Функция is_mobile() и функция is_tablet()

Код функции (спойлер)
    /*Определение мобильного устройства*/
    public function is_mobile(){
        $res = $this->detect->isMobile();
        return $res;
    }

    /*Определение планшетного устройства*/
    public function is_tablet(){
        $res = $this->detect->isTablet();
        return $res;
    }

Функции для определения типа устройства клиента, возвращают TRUE или FALSE