miniShop 1.7.3

Вышла очередная версия моего интернет магазина. Не сама, конечно, вышла — выпустил. Что новенького?

Прямые ссылки

Добавлена поддержка прямых ссылок на некоторые действия компонента. Например, /manager/?a=78&act=edit&item=15.
Всего действия 3: edit, tab, create, передаются через параметр act. То есть: изменение товара, создание и переключение вкладки.

Первые два требуют параметра item (id товара или индекс вкладки, начиная с нуля). Это продолжение идеи плагина editButton, который скоро войдет в комплект магазина.

Параметр ?a= — это номер действия с вызовом компонента, смотрите его в строке браузера.

Очередные улучшения UI админки

В основном поработал с окошками. Теперь они прибиты к верхнему краю экрана и нет проблемы с позицией при переключении вкладок.
Поясню: так как вкладки в окнах запоминаются, бывало, что вы переключились на, например вкладку с ТВ параметрами, а там всего одна строка. Закрываете окно, открываете другой товар — окно позиционируется по центру, с открытой низкой ТВ вкладкой. Переключаете вкладку — окно увеличивается вниз и поллучается, что оно расположено в нижней части экрана, по центру только заголовок.
Короче, теперь такой фигни не будет.

Добавлен чанк tpl.msPayment.row

У многих были проблемы с указанием чанка для платежей — теперь он в комплекте. Содержимое идентично tpl.msDelivery.row.

Добавлено действие getMiniCart

У сниппета miniShop появилось новое действие для вывода миникорзины при загрузке страницы. Да, наконец-то корзину можно вызывать родным методом и не городить велосипеды. Заодно закомментировал действие getCartStatus, ибо все равно возвращало только строку «Array» при вызове через сниппет. Для нормальной работы нужно было обращаться к методу в классе miniShop, и при его инициализации без параметров у людей пропадала большая корзина, или еще что-то.
В общем, такой фигни теперь тоже нет.

Добавлен чанк tpl.msCart.mini

Тут понятно — это и есть миникорзина, вернее, ее оформление. Состоит из двух блоков, один показывается, когда корзину пуста, второй — когда не. Менять по вкусу, идентификаторы в блоках нужны для работы обновления через Ajax. Если будете их переименовывать — не забывайте про функцию cartStatus в minishop.js.

Изменил minishop.js

Переделал функцию cartStatus для чанка из комплекта и удалил кое-какой мусор. Исследования показали (ха-ха), что разработчикам магазинов больше нравится сразу выводить готовую корзину на странице, а не обновлять ее после загрузки.
Апдейт корзины при загрузке закомментированн — вдруг кому новшество не по душе, можно изменить как было.

Обновлен сниппет msGetResources

Cпасибо thedarki за его коммит с обновлением до getResources 1.5.0. Если что-то не так — не спасибо, я проверял код только визуально.

Лог изменений
Для версии 1.8.0 запланирован плагин с выводом меню на фронтенде и удалением свойств товаров в админке только при очистке корзины, а не сразу, как сейчас — при удалении товара.
Ну и, наверняка, правки сегодняшней версии.

Советую перед апдейтом бэкапиться, это очень хорошая привычка.

В качестве бонуса: небольшая переделка editButton для действий miniShop (поменяйте параметр $action).
<?php
if ($modx->event->name == 'OnWebPagePrerender') {
    if (!$modx->user->isAuthenticated('mgr')) {return;}
    $action = 78;   // id действия менеджера для компонента miniShop
    $id = $modx->resource->id;
    $tpl = $modx->resource->template;
    $goods_tpls = explode(',',$modx->getOption('minishop.goods_tpl'));
    
    if (in_array($tpl, $goods_tpls)) {
        $add = '
<a href="/manager/?a='.$action.'&act=edit&item='.$id.'" target="_blank">Изменить этот товар</a>';
    }
    else {
        $add = '
<a href="/manager/?a='.$action.'&act=tab&item=1" target="_blank">Управление товарами</a>';
    }
    
    $html = '
        <div id="editButton" style="position:absolute;z-index:10;left:5px;top:5px;">
            <a href="/manager/index.php?a=30&id='.$id.'" target="_blank">Редактировать эту страницу</a>
            '.$add.'
        </div>';
    $modx->resource->_output .= $html;
}

Предыдущая заметка
Модификация getPage


Комментарии ()

  1. Иван Брежнев 02 июля 2012, 08:05 # 0
    Это хорошо)
    1. Andrew Vakulenko 02 июля 2012, 11:52 # 0
      Отлично! Спасибо за подробный гайд!
      1. Вячеслав Косарев 02 июля 2012, 12:48 # 0
        Давно ломаю голову, на чем сделать e-магазин. CMS накладывают тучу ограничений, поэтому в поиске чего-то, что с одной стороны сильно упрощает разработку, а с другой не накладывает ограничений. На modx наткнулся буквально вчера и уже попробовал его в действии. Пока впечатления на 5+. Возможно это именно то, что я искал.
        1. Василий Наумкин 02 июля 2012, 13:03 # 0
          Как магазин мое решение, конечно, не самое лучше. Зато как CMS MODX рвет просто всех.

          Поэтому, выбирайте, что вам нужно — крутой магазин или крутой сайт. Хотя, конечно, мы и крутые магазины делаем на MODX, но это не просто =)
          1. Вячеслав Косарев 02 июля 2012, 13:32 # 0
            Василий, у меня к cms только одно пожелание — чтобы можно было легко внедрять свои модули без лишних мостиков. А здесь это все вроде как присутствует ))
            Можете привести пример крутого магазина на основе modx?
            1. Василий Наумкин 02 июля 2012, 13:40 # 0
              Конечно, круче моего магазина на MODX ничего нет.
              Вы ожидали другого ответа?

              А внедрять свое можно сколько угодно — bezumkin.ru/blog/2012/06/30/methods_change/
            2. Максим Франц 02 июля 2012, 16:12 # 0
              А если не секрет какие решения Вы считаете лучше и чем?
              1. Василий Наумкин 02 июля 2012, 16:23 # 0
                Специализированные решения, типа Shop-script, CS-cart и ­подобные.

                Но честно, как CMS — это просто убожество. Против MODX ­шансов нет. Оценочное суждение, ясен пончик.

                Лучше MODX нет ­ничего, и крутота сайта (и магазина) ограничивается только той суммой, которую вы ­готовы на него потратить.

                Других ограничений нет.

          Добавление новых комментариев отключено.