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

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

  • 03 сентября 2014 г. , редакция: 1409690423
  • Тема как вижу заглохла

    Но совсем недавно, нам довелось реализовать эту задачу на парочке сайтов, причем на разных версиях CMS, а именно версиях 5.3 и 5.4

    Поэтому спешу поделиться с вами данным решением.

    Для подсчета можно воспользоваться методом get_count_in_cat, определенном в Shop_model, только нужно предварительно изменить его модификатор доступа с private на public

    Теперь в Menu_model в методе Show_block ищем два вложенных цикла, в которых перебираются все пункты меню (строка 80):

    Код
    foreach ($this->result["rows"] as $parent_id => &$rows)
    {
    foreach ($rows as &$row)
    {


    перед циклами создаем модель магазина:

    Код

    $shopModel = new Shop_model($this->diafan);


    теперь во внутреннем цикле можно получить количество товаров для каждого пункта меню, в итоге вот как это выглядит:

    Код

    Custom::inc('modules/shop/shop.model.php');
    $shopModel = new Shop_model($this->diafan);
    foreach ($this->result["rows"] as $parent_id => &$rows)
    {
    foreach ($rows as &$row)
    {
    if($row['module_name']=='shop' && $row['element_type']=='cat') {
    $chn = $this->diafan->get_children($row["element_id"], "shop_category");
    $chn[] = $row["element_id"];
    $row["count"] = $shopModel->get_count_in_cat($chn, $time);
    }
    ...


    В шаблоне меню выводим:

    Код
    // название пункта меню
    if (! empty($row["name"]))
    {
    echo $row["name"].($row['module_name']=='shop' ? ' ('.$row['count'].')' : '');
    }


    Это было для версии 5.4.


    Для 5.3 код в Menu_model будет несколько отличаться. Здесь нам нужен цикл while на строке 90

    Код

    Customization::inc('modules/shop/shop.model.php');
    $shopModel = new Shop_model($this->diafan);
    while ($row = DB::fetch_array($result))
    {
    if ($row["module_name"] == "site")
    {
    $this->diafan->_route->prepare('site', $row["site_id"]);
    }
    else
    {
    if($row['module_name']=='shop') {
    $chn = $this->diafan->get_children($row["module_cat_id"], "shop_category");
    $chn[] = $row["module_cat_id"];
    $row["count"] = $shopModel->get_count_in_cat($chn, $time);
    }
  • 29 июня 2014 г. , редакция: 1404036861
  • В связи с внедрением новой кастомизации в версии 5.4 появился такой вопрос.

    Предположим, я установил чистую CMS и сделал, какие то доработки одного из модулей. Решил поделиться этой доработкой со всеми, нажал кнопочку «создать тему», выкачал сформированный архив с измененными файлами. Выложил его в сеть. Вроде все ок.

    И вот кто- то выкачивает этот архив и хочет внедрить эту доработку себе, но не на чистую CMS, а на рабочий сайт и у него уже там есть своя тема и в теме этой доработанные файлы те же что и у меня в архиве. И собственно с этого момента … как ему внедрить мою доработку? Если он ее внедрит, то потеряет свои доработки.

    По этой же причине, сохраненные файлы, насколько я понял, надо обновлять вручную – если в них добавлены какие то изменения со стороны разработчиков. В сущности, получается, кастомизация – это просто автоматическая защита файлов от замены при обновлении, тот же самый список, который в предыдущих версиях надо было заполнять вручную.
  • 30 июня 2014 г.
  • Меня это просто интересует с точки зрения "Магазина готовых решений". Получается можно будет полноценно распростронять только целые модули, а не доработки для текущих модулей.
  • 10 июля 2014 г. , редакция: 1404989873
  • Ну я так понял разработчики данный вопрос проигнорировали
    А суть вопроса собственно вот в чем: Будет ли развиваться кастомизация дальше? Раньше мы имели возможность защиты файлов от замены при обновлении и создание файлов кастомизации функций. Сейчас же осталась только защита файлов от замены. Таким образом, если у меня изменен файл shop.model.php и он сидит в кастомной папке - то при добавлении нового функционала в этот файл разработчиками CMS он не обновиться и обновление не произойдет, а что хуже еще и ошибка возникнет. Как с этим быть? Кастоизация функций этот вопрос худо бедно решала, но ее убрали как я понял. А сейчас разработчики заявляют что обновляться можно без проблем, а почему раньше нельзя было? В сущности же ничего не поменялось. Или без проблем это значит, если обновление не прошло - то я могу откатить все назад, но! новый функционал то я при это мне получу.

    Вот если взять например всеми так нелюбимую джумлу - то, там доработка компонентов без влезания в их код реализована посредствам системы плагинов, на основе шаблона проектирования "Наблюдатель" https://ru.wikipedia.org/wiki/Наблюдатель_(шаблон_проектирования)

    Почему бы что то подобное не внедрить в диафан?
  • 24 июня 2014 г.
  • В форме поиска по товарам, выводимой шаблонным тегом show_search, есть поля цена от ... до - надо только к этим полям прикрутить какой нибудь ползунок на js. И ajax подгрузка товаров тоже имеется, aтрибут ajax для шаблонного тега show_search – подгружать результаты поиска без перезагрузки страницы.
    Или я что то не так понял? )
  • 30 мая 2014 г.
  • Код
    if (count($result["img"])>1)
    {
    for($i=1;$i<count($result["img"]);$i++)
    {
    $img = $result['img'][$i];
    switch ($img["type"])
    {
    case 'animation':
    echo '<a href="' . BASE_PATH . $img["link"] . '" rel="prettyPhoto[gallery' . $result["id"] . 'shop]">';
    break;
    case 'big_image':
    echo '<a href="' . BASE_PATH . $img["link"] . '" rel="big_image" width="' . $img["link_width"] . '" height="' . $img["link_height"] . '">';
    break;
    default:
    echo '<a href="' . BASE_PATH_HREF . $img["link"] . '">';
    break;
    }
    echo '<img src="' . $img["src"] . '" alt="' . $img["alt"] . '" title="' . $img["title"] . '">'

    . '</a>';

    }
    }
  • 30 мая 2014 г.
  • А вот так можно выводить только первое изображение:

    Код
    if (!empty($result["img"]))
    {
    $img = $result['img'][0];
    switch ($img["type"])
    {
    case 'animation':
    echo '<a class="image" href="' . BASE_PATH . $img["link"] . '" rel="prettyPhoto[gallery' . $result["id"] . 'shop]">';
    break;
    case 'big_image':
    echo '<a href="' . BASE_PATH . $img["link"] . '" rel="big_image" width="' . $img["link_width"] . '" height="' . $img["link_height"] . '">';
    break;
    default:
    echo '<a href="' . BASE_PATH_HREF . $img["link"] . '">';
    break;
    }
    echo '<img src="' . $img["src"] . '" width="' . $img["width"] . '" height="' . $img["height"] . '" alt="' . $img["alt"] . '" title="' . $img["title"] . '">'
    . '</a> ';
    }
  • 12 июля 2014 г.
  • Я делаю так, в файле registration.view.show_login.php добавил строчку <input type="hidden" name="rewrite" value="страница куда попадает пользователь после авторизации.html" />

    Наверное в value можно подставить адрес текущей страницы.
  • 30 апреля 2014 г.
  • Мне надо реализовать подобный фильтр (иллюстрация в приложении) в версии 5.4

    В версии 5.3 такое легко можно было реализовать т.к. можно было фильтровать по содержимому заголовка и цене. В 5.4 фильтрацию по текстовым полям убрали (кому она мешала непонятно, кому не надо можно было просто отключить в админке).
    Насколько сложно будет реализовать это в 5.4 ? Потому как хочется реализовывать проект уже на новой версии - но пока останавливает только это.
Показывать по:

Новости

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

Форум