Вход • Регистрация

Всего найдено: 1412

  • 09 октября 2016 г. , редакция: 1476044726
  • Не совсем понятен вопрос (т.е. непонятно что нужно), т.к. ответ и так на поверхности: исключать варианты комбинаций с количеством 0.
    Это можно делать еще на стадии формирования массива значений при запросе к базе данных. Можно сделать в shop.model.php после запроса к базе данных. Можно сделать и во вьюшке.
    Т.е. все зависит от фантазии. Возможно я не правильно понял обращения, поэтому приведу пример решения Вашего вопроса как я его понимаю.
    Вот демонстрационный пример (перейдя по ссылке просто нажмите кнопку Создать демо-сайт).
  • 15 ноября 2016 г.
  • Цитата
    Какую еще кнопку ))

    Это я взял из этой инструкции:
    Цитата
    Нажми на кнопку, — получишь результат,
    И твоя мечта осуществится
    Нажми на кнопку, но что же ты не рад, —
    Тебе больше не к чему стремиться...
  • 08 октября 2016 г.
  • Во время импорта алгоритм считает, что если указано только одна картинка, значит остальные имеющиеся он стирает. Если необходимо иное действо, то необходимо поколдавать над алгоритмом импорта. Например, расширить функционал. Допустим в описании импорта для изображений добавить пункт: Удалять все изображения, неописанные в файле импорта.

    Вообще я думал сделать плагин для diafan.cms, который бы расширел функциональность cms, но пока не до этого. Вся проблема в ограниченности часов в сутках.
  • 11 октября 2016 г.
  • Цитата
    Если у товара загружена 1-2 фотографии, то после повторного импорта они затираются 1 фотографией из 1С.
    Цитата
    Как быть?
    Не думаю, что есть необходимость заморачиваться. Просто передавайте во время импорта полный набор изображений, а не частичный.
  • 12 октября 2016 г.
  • Берем файл shop.admin.import.php и находим функцию
    Код
    public function set_images(){ ... }
    Практически в самом начале кода функции есть строчка
    Код
    $this->diafan->_images->delete($this->id, 'shop', $this->import["element_type"], 0);
    Найдя указанную строчку просто комментируем ее вот так
    Код
    //$this->diafan->_images->delete($this->id, 'shop', $this->import["element_type"], 0);
    Что получим в результате: во время импорта картинок не будут удалятся ранее загруженные изображения.
    Как-то так. Успехов.
  • 12 октября 2016 г.
  • Да, забыл. Чуть выше мой ответ касался обычного импорта. Аналогично можно поступить и с импортом 1С.
    Берем файл shop.1c.php и находим функцию
    Код
    private function import_img($xml_product, $id, $site_id){ ... }
    Там, в начале кода функции, есть строчка
    Код
    $this->diafan->_images->delete($id, 'shop');
    Соответственно комментируем ее вот так
    Код
    //$this->diafan->_images->delete($id, 'shop');


    И так, а в чем минус такого подхода? Минус в том, что при каждом импорте изображения будут только количественно расти, т.е. возможны дубликаты изображений, если грузить одни и те же картинки.
    Поэтому я бы добавил пункт в описании импорта: когда перезаписывать картинки, а когда их дополнять.

    Успехов, коллеги.
  • 12 октября 2016 г. , редакция: 1476280483
  • Решение: берем файл shop.model.php. Далее в нем ищем функцию
    Код
    private function list_elements_query($time, $cat_ids){...}
    В самом начале кода функции есть такие строки
    Код
    switch($this->diafan->configmodules("sort"))
    {
    case 1:
    $order = 's.id DESC';
    break;
    case 2:
    $order = 's.id ASC';
    break;
    case 3:
    $order = 's.name'._LANG.' ASC';
    break;
    default:
    $order = 's.sort DESC, s.id DESC';
    }
    Соответственно заменим найденный код на следующий
    Код
    switch($this->diafan->configmodules("sort"))
    {
    case 1:
    $order = 's.id DESC';
    break;
    case 2:
    $order = 's.id ASC';
    break;
    case 3:
    $order = 's.name'._LANG.' ASC';
    break;
    default:
    $order = 's.sort ASC, s.id ASC';
    }
    Жирным курсивом выделил то, что изменилось.
    Далее аналогично поступаем с другой функцией в том же файле
    Код
    private function first_page_elements_query($time, $cat_ids){...}
    В начале кода функции находим следующий текст
    Код
    switch($this->diafan->configmodules("sort"))
    {
    case 1:
    $order = 'e.id DESC';
    break;
    case 2:
    $order = 'e.id ASC';
    break;
    case 3:
    $order = 'e.name'._LANG.' ASC';
    break;
    default:
    $order = 'e.sort DESC, e.id DESC';
    }
    И меняем его на следующий
    Код
    switch($this->diafan->configmodules("sort"))
    {
    case 1:
    $order = 'e.id DESC';
    break;
    case 2:
    $order = 'e.id ASC';
    break;
    case 3:
    $order = 'e.name'._LANG.' ASC';
    break;
    default:
    $order = 'e.sort ASC, e.id ASC';
    }
    Жирным курсивом выделил то, что изменилось.

    Как-то так. Успехов.
  • 08 октября 2016 г. , редакция: 1475881166
  • Все зависит от фантазии. Думаю правильнее в таблице категорий товаров создать дополнительное поле (допустим, логическое). Вывести соответствующую галочку в админке, в разделе категории товара. Такое действо есть в документации - пошагово расписан пример, как для самых - самых. Т.е. здесь трудностей ни у кого не возникнет. Можно и импорт/экспорт под это дело заточить. Затем через запрос к базе данных выводить список категорий фильтруя по созданному полю. Получив категории, получим и ссылки на них (можно все это в один запрос уложить для быстродействия в зоне кеширования).
    Т.е. все же прийдется немного попрограммировать, расширяя интерфейс. В принципе это займет минуты три.
    Как-то так. Успехов.
  • 07 октября 2016 г.
  • В файле shop.model.php корректируете сортировку при обращении к базе данных (это если делать по уму) в следующих функциях:
    Код
    private function first_page_elements_query($time, $cat_ids){ ... }

    Код
    private function list_elements_query_count($time, $cat_ids){ ... }

    Есле не по уму, то можно сортировать во вьюшке.

    Успехов.
  • 07 октября 2016 г. , редакция: 1475850296
  • М-да, чего-то Вас не туда несет. Ну, например, берем функцию
    Код
    private function list_elements_query_count($time, $cat_ids){ ... }
    и излагаем ее вот так
    Код
    /**
    * Получает из базы данных элементы для списка элементов
    *
    * @param integer $time текущее время, округленное до минут, в формате UNIX
    * @param array $cat_ids номера категорий, элементы из которых выбираются
    * @return array
    */
    private function list_elements_query($time, $cat_ids)
    {
    switch($this->diafan->configmodules("sort"))
    {
    case 1:
    $order = 's.id DESC';
    break;
    case 2:
    $order = 's.id ASC';
    break;
    case 3:
    $order = 's.name'._LANG.' ASC';
    break;
    default:
    $order = 's.sort DESC, s.id DESC';
    }
    $rows = DB::query_range_fetch_all(
    "SELECT s.id, s.[name], s.timeedit, s.[anons], s.site_id, s.brand_id, s.no_buy, s.article, s.[measure_unit], "
    ." s.hit, s.new, s.action, s.is_file, pr.count_goods FROM {shop} AS s"
    .($this->diafan->_route->sort == 1 || $this->diafan->_route->sort == 2 ?
    " LEFT JOIN {shop_price} AS pr ON pr.good_id=s.id AND pr.trash='0'"
    ." AND pr.date_start<=".time()." AND (pr.date_start=0 OR pr.date_finish>=".time().")"
    ." AND pr.currency_id=0"
    ." AND pr.role_id".($this->diafan->_users->role_id ? " IN (0,".$this->diafan->_users->role_id.")" : "=0")
    ." AND (pr.person='0'".($this->person_discount_ids ? " OR pr.discount_id IN(".implode(",", $this->person_discount_ids).")" : "").")"
    : '')
    .($this->sort_config['use_params_for_sort'] ? " LEFT JOIN {shop_param_element} AS sp ON sp.element_id=s.id AND sp.trash='0' AND sp.param_id=".$this->sort_config['param_ids'][$this->diafan->_route->sort] : '')
    .($this->diafan->configmodules('where_access_element') ? " LEFT JOIN {access} AS a ON a.element_id=s.id AND a.module_name='shop' AND a.element_type='element'" : "")
    .($this->diafan->configmodules('hide_missing_goods') && $this->diafan->configmodules('use_count_goods') ? " INNER JOIN {shop_price} AS prh ON prh.good_id=s.id AND prh.count_goods>0" : "")
    .($cat_ids ? " INNER JOIN {shop_category_rel} AS r ON s.id=r.element_id" : '')
    ." WHERE s.[act]='1' AND s.trash='0' "
    .($cat_ids ? "AND r.cat_id IN (".implode(',', $cat_ids).")" : 'AND s.site_id='.$this->diafan->_site->id)
    .($this->diafan->configmodules('where_period_element') ? " AND s.date_start<=".$time." AND (s.date_finish=0 OR s.date_finish>=".$time.")" : '')
    .($this->diafan->_route->brand ? " AND s.brand_id=".$this->diafan->_route->brand : '')
    .($this->diafan->configmodules('where_access_element') ? " AND (s.access='0' OR s.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
    .($this->diafan->configmodules('hide_missing_goods') ? " AND s.no_buy='0'" : "")
    ." GROUP BY s.id ORDER BY "."pr.count_goods ASC, "
    .($this->diafan->_route->sort ? $this->sort_config['sort_directions'][$this->diafan->_route->sort].',' : '')
    ."s.no_buy ASC, ".$order,
    $this->diafan->_paginator->polog, $this->diafan->_paginator->nastr
    );
    return $rows;
    }

    Жирным шрифтом выделил то, что добавил. Т.е. то, что необходимо добавить в данной функции для решения поставленной задачи. Тоже самое для функции
    Код
    private function first_page_elements_query($time, $cat_ids){ ... }
    Конечно, если это нужно.
    Код
    /**
    * Получает из базы данных элементы для первой страницы модуля, если категории используются
    *
    * @param integer $time текущее время, округленное до минут, в формате UNIX
    * @param array $cat_ids номера категорий, элементы из которых выбираются
    * @return array
    */
    private function first_page_elements_query($time, $cat_ids)
    {
    switch($this->diafan->configmodules("sort"))
    {
    case 1:
    $order = 'e.id DESC';
    break;
    case 2:
    $order = 'e.id ASC';
    break;
    case 3:
    $order = 'e.name'._LANG.' ASC';
    break;
    default:
    $order = 'e.sort DESC, e.id DESC';
    }
    $rows = DB::query_range_fetch_all(
    "SELECT e.id, e.[name], e.timeedit, e.[anons], e.site_id, e.brand_id, e.no_buy, e.article, e.hit,"
    ." e.[measure_unit], e.new, e.action, e.is_file, prh.count_goods FROM {shop} AS e"
    ." INNER JOIN {shop_category_rel} AS r ON e.id=r.element_id"
    .($this->diafan->configmodules('where_access_element') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='shop' AND a.element_type='element'" : "")
    .($this->diafan->configmodules('hide_missing_goods') && $this->diafan->configmodules('use_count_goods') ? " INNER JOIN {shop_price} AS prh ON prh.good_id=e.id AND prh.count_goods>0" : "")
    ." WHERE r.cat_id IN (%s) AND e.[act]='1' AND e.trash='0'"
    .($this->diafan->configmodules('where_period_element') ? " AND e.date_start<=".$time." AND (e.date_finish=0 OR e.date_finish>=".$time.")" : '')
    .($this->diafan->configmodules('where_access_element') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
    .($this->diafan->configmodules('hide_missing_goods') ? " AND e.no_buy='0'" : "")
    ." GROUP BY e.id ORDER BY "."prh.count_goods ASC, "."e.no_buy ASC, ".$order,
    implode(',', $cat_ids),
    0, $this->diafan->configmodules("count_list")
    );
    return $rows;
    }


    Проверяйте :)
  • 07 октября 2016 г. , редакция: 1475853455
  • Как обещал, вот правильный код
    Код
    /**
    * Получает из базы данных элементы для первой страницы модуля, если категории используются
    *
    * @param integer $time текущее время, округленное до минут, в формате UNIX
    * @param array $cat_ids номера категорий, элементы из которых выбираются
    * @return array
    */
    private function first_page_elements_query($time, $cat_ids)
    {
    switch($this->diafan->configmodules("sort"))
    {
    case 1:
    $order = 'e.id DESC';
    break;
    case 2:
    $order = 'e.id ASC';
    break;
    case 3:
    $order = 'e.name'._LANG.' ASC';
    break;
    default:
    $order = 'e.sort DESC, e.id DESC';
    }
    $rows = DB::query_range_fetch_all(
    "SELECT e.id, e.[name], e.timeedit, e.[anons], e.site_id, e.brand_id, e.no_buy, e.article, e.hit,"
    ." e.[measure_unit], e.new, e.action, e.is_file, prh.count_goods FROM {shop} AS e"
    ." INNER JOIN {shop_category_rel} AS r ON e.id=r.element_id"
    .($this->diafan->configmodules('where_access_element') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='shop' AND a.element_type='element'" : "")
    .($this->diafan->configmodules('hide_missing_goods') && $this->diafan->configmodules('use_count_goods') ? " INNER JOIN {shop_price} AS prh ON prh.good_id=e.id AND prh.count_goods>0" : "")
    ." WHERE r.cat_id IN (%s) AND e.[act]='1' AND e.trash='0'"
    .($this->diafan->configmodules('where_period_element') ? " AND e.date_start<=".$time." AND (e.date_finish=0 OR e.date_finish>=".$time.")" : '')
    .($this->diafan->configmodules('where_access_element') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
    .($this->diafan->configmodules('hide_missing_goods') ? " AND e.no_buy='0'" : "")
    ." GROUP BY e.id ORDER BY ".($this->diafan->configmodules('hide_missing_goods') && $this->diafan->configmodules('use_count_goods') ? "prh.count_goods ASC, " : "")."e.no_buy ASC, ".$order,
    implode(',', $cat_ids),
    0, $this->diafan->configmodules("count_list")
    );
    return $rows;
    }

    Код
    /**
    * Получает из базы данных элементы для списка элементов
    *
    * @param integer $time текущее время, округленное до минут, в формате UNIX
    * @param array $cat_ids номера категорий, элементы из которых выбираются
    * @return array
    */
    private function list_elements_query($time, $cat_ids)
    {
    switch($this->diafan->configmodules("sort"))
    {
    case 1:
    $order = 's.id DESC';
    break;
    case 2:
    $order = 's.id ASC';
    break;
    case 3:
    $order = 's.name'._LANG.' ASC';
    break;
    default:
    $order = 's.sort DESC, s.id DESC';
    }
    $rows = DB::query_range_fetch_all(
    "SELECT s.id, s.[name], s.timeedit, s.[anons], s.site_id, s.brand_id, s.no_buy, s.article, s.[measure_unit], "
    ." s.hit, s.new, s.action, s.is_file, pr.count_goods FROM {shop} AS s"
    .($this->diafan->_route->sort == 1 || $this->diafan->_route->sort == 2 ?
    " LEFT JOIN {shop_price} AS pr ON pr.good_id=s.id AND pr.trash='0'"
    ." AND pr.date_start<=".time()." AND (pr.date_start=0 OR pr.date_finish>=".time().")"
    ." AND pr.currency_id=0"
    ." AND pr.role_id".($this->diafan->_users->role_id ? " IN (0,".$this->diafan->_users->role_id.")" : "=0")
    ." AND (pr.person='0'".($this->person_discount_ids ? " OR pr.discount_id IN(".implode(",", $this->person_discount_ids).")" : "").")"
    : '')
    .($this->sort_config['use_params_for_sort'] ? " LEFT JOIN {shop_param_element} AS sp ON sp.element_id=s.id AND sp.trash='0' AND sp.param_id=".$this->sort_config['param_ids'][$this->diafan->_route->sort] : '')
    .($this->diafan->configmodules('where_access_element') ? " LEFT JOIN {access} AS a ON a.element_id=s.id AND a.module_name='shop' AND a.element_type='element'" : "")
    .($this->diafan->configmodules('hide_missing_goods') && $this->diafan->configmodules('use_count_goods') ? " INNER JOIN {shop_price} AS prh ON prh.good_id=s.id AND prh.count_goods>0" : "")
    .($cat_ids ? " INNER JOIN {shop_category_rel} AS r ON s.id=r.element_id" : '')
    ." WHERE s.[act]='1' AND s.trash='0' "
    .($cat_ids ? "AND r.cat_id IN (".implode(',', $cat_ids).")" : 'AND s.site_id='.$this->diafan->_site->id)
    .($this->diafan->configmodules('where_period_element') ? " AND s.date_start<=".$time." AND (s.date_finish=0 OR s.date_finish>=".$time.")" : '')
    .($this->diafan->_route->brand ? " AND s.brand_id=".$this->diafan->_route->brand : '')
    .($this->diafan->configmodules('where_access_element') ? " AND (s.access='0' OR s.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
    .($this->diafan->configmodules('hide_missing_goods') ? " AND s.no_buy='0'" : "")
    ." GROUP BY s.id ORDER BY ".($this->diafan->configmodules('hide_missing_goods') && $this->diafan->configmodules('use_count_goods') ? "prh.count_goods ASC, " : "")
    .($this->diafan->_route->sort ? $this->sort_config['sort_directions'][$this->diafan->_route->sort].',' : '')
    ."s.no_buy ASC, ".$order,
    $this->diafan->_paginator->polog, $this->diafan->_paginator->nastr
    );
    return $rows;
    }

    Поясняю, чтобы увидеть результат такой сортировки, необходимо, чтобы параметры hide_missing_goods (не показывать отсутствующие товары) и use_count_goods (использовать количество товаров) были включены

    ИЛИ другой вариант этих функций (без использования параметров hide_missing_goods и use_count_goods)
    Код
    /**
    * Получает из базы данных элементы для первой страницы модуля, если категории используются
    *
    * @param integer $time текущее время, округленное до минут, в формате UNIX
    * @param array $cat_ids номера категорий, элементы из которых выбираются
    * @return array
    */
    private function first_page_elements_query($time, $cat_ids)
    {
    switch($this->diafan->configmodules("sort"))
    {
    case 1:
    $order = 'e.id DESC';
    break;
    case 2:
    $order = 'e.id ASC';
    break;
    case 3:
    $order = 'e.name'._LANG.' ASC';
    break;
    default:
    $order = 'e.sort DESC, e.id DESC';
    }
    $rows = DB::query_range_fetch_all(
    "SELECT e.id, e.[name], e.timeedit, e.[anons], e.site_id, e.brand_id, e.no_buy, e.article, e.hit,"
    ." e.[measure_unit], e.new, e.action, e.is_file, prh.count_goods FROM {shop} AS e"
    ." INNER JOIN {shop_category_rel} AS r ON e.id=r.element_id"
    .($this->diafan->configmodules('where_access_element') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='shop' AND a.element_type='element'" : "")
    ." INNER JOIN {shop_price} AS prh ON prh.good_id=e.id AND prh.count_goods>0"
    ." WHERE r.cat_id IN (%s) AND e.[act]='1' AND e.trash='0'"
    .($this->diafan->configmodules('where_period_element') ? " AND e.date_start<=".$time." AND (e.date_finish=0 OR e.date_finish>=".$time.")" : '')
    .($this->diafan->configmodules('where_access_element') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
    .($this->diafan->configmodules('hide_missing_goods') ? " AND e.no_buy='0'" : "")
    ." GROUP BY e.id ORDER BY ".($this->diafan->configmodules('hide_missing_goods') && $this->diafan->configmodules('use_count_goods') ? "prh.count_goods ASC, " : "")."e.no_buy ASC, ".$order,
    implode(',', $cat_ids),
    0, $this->diafan->configmodules("count_list")
    );
    return $rows;
    }

    Код
    /**
    * Получает из базы данных элементы для списка элементов
    *
    * @param integer $time текущее время, округленное до минут, в формате UNIX
    * @param array $cat_ids номера категорий, элементы из которых выбираются
    * @return array
    */
    private function list_elements_query($time, $cat_ids)
    {
    switch($this->diafan->configmodules("sort"))
    {
    case 1:
    $order = 's.id DESC';
    break;
    case 2:
    $order = 's.id ASC';
    break;
    case 3:
    $order = 's.name'._LANG.' ASC';
    break;
    default:
    $order = 's.sort DESC, s.id DESC';
    }
    $rows = DB::query_range_fetch_all(
    "SELECT s.id, s.[name], s.timeedit, s.[anons], s.site_id, s.brand_id, s.no_buy, s.article, s.[measure_unit], "
    ." s.hit, s.new, s.action, s.is_file, pr.count_goods FROM {shop} AS s"
    .($this->diafan->_route->sort == 1 || $this->diafan->_route->sort == 2 ?
    " LEFT JOIN {shop_price} AS pr ON pr.good_id=s.id AND pr.trash='0'"
    ." AND pr.date_start<=".time()." AND (pr.date_start=0 OR pr.date_finish>=".time().")"
    ." AND pr.currency_id=0"
    ." AND pr.role_id".($this->diafan->_users->role_id ? " IN (0,".$this->diafan->_users->role_id.")" : "=0")
    ." AND (pr.person='0'".($this->person_discount_ids ? " OR pr.discount_id IN(".implode(",", $this->person_discount_ids).")" : "").")"
    : '')
    .($this->sort_config['use_params_for_sort'] ? " LEFT JOIN {shop_param_element} AS sp ON sp.element_id=s.id AND sp.trash='0' AND sp.param_id=".$this->sort_config['param_ids'][$this->diafan->_route->sort] : '')
    .($this->diafan->configmodules('where_access_element') ? " LEFT JOIN {access} AS a ON a.element_id=s.id AND a.module_name='shop' AND a.element_type='element'" : "")
    ." INNER JOIN {shop_price} AS prh ON prh.good_id=s.id AND prh.count_goods>0"
    .($cat_ids ? " INNER JOIN {shop_category_rel} AS r ON s.id=r.element_id" : '')
    ." WHERE s.[act]='1' AND s.trash='0' "
    .($cat_ids ? "AND r.cat_id IN (".implode(',', $cat_ids).")" : 'AND s.site_id='.$this->diafan->_site->id)
    .($this->diafan->configmodules('where_period_element') ? " AND s.date_start<=".$time." AND (s.date_finish=0 OR s.date_finish>=".$time.")" : '')
    .($this->diafan->_route->brand ? " AND s.brand_id=".$this->diafan->_route->brand : '')
    .($this->diafan->configmodules('where_access_element') ? " AND (s.access='0' OR s.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
    .($this->diafan->configmodules('hide_missing_goods') ? " AND s.no_buy='0'" : "")
    ." GROUP BY s.id ORDER BY ".($this->diafan->configmodules('hide_missing_goods') && $this->diafan->configmodules('use_count_goods') ? "prh.count_goods ASC, " : "")
    .($this->diafan->_route->sort ? $this->sort_config['sort_directions'][$this->diafan->_route->sort].',' : '')
    ."s.no_buy ASC, ".$order,
    $this->diafan->_paginator->polog, $this->diafan->_paginator->nastr
    );
    return $rows;
    }

    Здесь жирным шрифтом то, что добавлено, а подчеркнуто то, что изменено.

    Успехов, коллега.
  • 16 февраля 2017 г. , редакция: 1487267169
  • К сожалению на текущий момент очень занят. Постараюсь кратко.
    Цитата
    1. Функция которая делает подсчет элементов для пагинации - делала подсчет по умолчанию т.е. кол-во элементов в выдаче и в пагинации разное.
    Обратите внимание на функцию
    Код
    private function list_elements_query_count($time, $cat_ids){ ... }
    В этой и приведенных выше функциях, запросы должны быть аналогичными, так как одни функции выводят список (то что выше приведено), а эта функция определяет количество элементов, которые используются в пагинации.
    Цитата
    2. Обе кастомизации кода фактически исключают из выборки товары которых нет в наличии, но как сделать чтобы те что в наличии просто шли за теми что в наличии т.е. 1й порядок сортировки по наличию (кол-ву), 2й по параметру сортировки указанному в настройках.
    Обратите внимание в приведенном выше коде вот на это
    Код
    private function list_elements_query_count($time, $cat_ids)

    Да и не забывайте сбрасывать кеш, так как эти функции находятся в его зоне.
    Все это очень просто, но нет времени расписывать.
    Успехов.
  • 07 октября 2016 г.
  • У Вас в одном случае стоит блок вывода навигации, а в другом стоит блок вывода фильтра. Выставите в шаблоне страницы те блоки, которые Вам требуются - они и будут выведены при загрузке страницы.
  • 07 октября 2016 г. , редакция: 1475847681
  • По дефолту используются следующие шаблоны страниц:
    site_start.php
    site_catalog.php
    site.php
    Вот там и выставляются шаблонные теги вывода информации. Но учитывая, что Вы используете облако, то необходимо, чтобы к таким файлам у Вас был доступ.
    Определить какой шаблон страницы используется для вывода можно через административную часть сайта.
  • 22 сентября 2016 г.
  • Обратитесь к разработчику данного дополнения, т.к. не видя код сложно, что-либо подсказать.
    Возможная причина ошибки: нарушена связь меню настройки оформления с разметкой css или что-то в этом духе.
  • 19 сентября 2016 г. , редакция: 1474280591
  • В административной части сайта, в разделе "Каталог", на закладке "Характеристики" создаете новую характеристику с типом "строка". В админке, в карточке товара, в поле созданной характеристики пишите
    Код
    <a href="demo.diafan.ru">Демоверсия diafan.cms</a>
    Все. На странице товара в поле характеристики будет выведена соответствующая ссылка.
    Успехов.
  • 19 сентября 2016 г. , редакция: 1474280993
  • Цитата
    1. Где в модельке формируется запрос который делает выборку данной хар-ки - хотел бы делать выборку тех параметров у которых кол-во товара не равно 0?
    Не совсем в shop.model.php, а в shop.inc.price.php.
    Цитата
    2. Где в модельке можно указать порядок сортировки для выборки данной хар-ки, чтобы сортирнуть ко кол-ву и нулевые остатки оказались в конце списка?
    в shop.inc.price.php или в shop.view.buy_form.php / shop.view.buy_form_list.php (в зависимости от того, что используете). Думаю для Вас второй вариант (вариантов реально много - зависит от фантазии) будет проще. Например в shop.view.buy_form.php перед строчкой
    Код
    if ($result["row"]["price_arr"])
    пересортируйте массив так, как вам надо.
    Успехов.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум