• На рассмотрении

    +2

    Перевод сайта. Интернационализация контента

    Поло Арт Обновлен 4 года назад в категории CMS Общий функционал 7

    Всем привет!

    Создаём новый проект и столкнулись со следующей проблемой

    https://readyscript.ru/dev-manual/dev_lang.html#dev_lang_initialization
    Идентификатором языка является двухсимвольное обозначение языка. Например: en,de,ru. Идентификатор языка получается с помощью метода RS::Language::getCurrentLang. Метод возвращает текущий язык системы по следующему правилу:

    Если это административная зона:
    попытка использовать язык, установленный в cookie
    попытка использовать язык браузера
    возвращается базовый язык

    Если это клиентская часть:
    попытка использовать язык, установленный в cookie
    попытка использовать язык текущего сайта
    возвращается базовый язык

    Вопрос. Для чего и зачем именно так сделано?!
    Если сайт на английском, то всё должно быть на английском по дефолту. Заходит в админку, допустим, наёмный сотрудник, у которого локаль польская - и что он получит? Админку на русском!

    Условие задано в файле /core/rs/language/core.inc.php в функции getCurrentLang() как:
    if (\RS\Router\Manager::obj()->isAdminZone()) {
    //Если это административная панель
    $sysLangs = self::getSystemLanguages();

    if ($request->cookie(self::COOKIE_ADMIN_LANG, TYPE_STRING)) {
    //Ищем установленный язык в cookie
    $current_lang = $request->cookie(self::COOKIE_ADMIN_LANG, TYPE_STRING);
    } else {
    //Ищем предпочтительный язык у браузера
    $accept_langs = explode(',', $request->server('Accept-Language'));

    ЗАЧЕМ?!

    Я создаю core.my.inc.php, где убираю это условие, оставляю лишь:
    if ($request->cookie(self::COOKIE_CUSTOMER_LANG, TYPE_STRING)) {
    //Читаем параметр из cookie
    $current_lang = $request->cookie(self::COOKIE_CUSTOMER_LANG, TYPE_STRING);
    } else {
    $site = \Setup::$INSTALLED ? \RS\Site\Manager::getSite() : null;
    $current_lang = ($site) ? $site->language : $request->cookie(self::COOKIE_CUSTOMER_LANG, TYPE_STRING, \Setup::$DEFAULT_LANG);
    }

    Но все эти my в ядре это так, на время... пока не обновится что-то. А с второй версии очень многое обновилось.

    Второй вопрос. Где взять полные файлы messages.lng.php и messages.js.php ?
    Сидеть по строчке выковыривать очень и очень долго.

    Третий вопрос. Что делать с тем, что строковые значения постоянно вместе с апдейтами, чуть-чуть, да изменяются?
  • На рассмотрении

    +2

    Вариант доставки самовывоз с оплатой

    Дмитрий Петухов Обновлен 8 лет назад в категории CMS Общий функционал 6

    Добавить в вариант доставки самовывоз возможность платного самовывоза, т.е. от определенной суммы заказа, потому что сейчас только "Не предполагает взимание оплаты".

    А у меня сейчас именно такой вариант что самовывоз должен быть платный, от определенной суммы заказа.
  • На рассмотрении

    +2

    Многомерные комплектации. Добавление CSS класса к характеристикам с 0 остатком.

    Денис Ефремов Обновлен 8 лет назад в категории CMS Общий функционал 0

    Вопрос уже поднимался. Суть его в том, чтобы добавлять к характеристикам многомерных комплектаций на карточке товара класс .empty

    Ждал я долго, думал что вы напишете, но клиент потребовал реализации и пришлось писать. Заморочка, конечно, была та еще.

    В общем, вот 2 метода, которые нужно добавить в jquery.changeoffer.js, а затем вызвать первый метод в конце changeMultiOffer таким образом - checkEmptyOffers(selected):


    /**
    * Вычисляем характеристики, для которых нет в наличии товаров
    * @param {obj} selected Массив выбранных характеристик checkEmptyOffers
    */
    checkEmptyOffers = function(selected) {
    // Из массива выбранного делаем объекты данных для каждой хар-ки отдельно
    selected.forEach(function(el, i) {
    // Исключаем выбранное значение из возможных
    var t = selected.filter(function(v, idx) {
    return idx != i;
    });
    disableOptions({ // готовим объект и передаем его метод для изменения DOM
    name: el.title, // имя хар-ки по которой проходим
    activeValue: el.value, // выбранное значение хар-ки
    disabled: [], // сюда отфильтруются только нулевые остатки из всех siblings (ниже)
    // фильтруем компл, оставим только актуальные для выбранных значений
    siblings: data.options.multiOffersInfo.filter(function(v) {
    // здесь ишем чтобы не совпадало с выбранной по которой проходим но совпадало с
    return v.info.every(function(a) { // выбранными остальными
    return (a[0] == el.title && a[1] != el.value) || t.some(function(o) {
    return JSON.stringify(o) === JSON.stringify({ // объекты только так сравнивать)))
    title: a[0],
    value: a[1]
    });
    });
    });
    })
    });
    });
    },
    // @TODO перенести формирование disabled в метод checkEmptyOffers, тк disableOptions должен только DOM заниматься
    // @TODO избавиться от промежуточного siblings.


    /**
    * Зачеркиваем характеристики
    * @param {obj} data Массив данных
    */
    disableOptions = function(d) {
    var $listEl = $('[data-prop-title="' + d.name + '"]'),
    $items,
    getValueByName = function(name, info) { // хелпер. @TODO вынести объявление рядом с in_array()
    return info.filter(function(ar) {
    return ar[0] == name;
    })[0][1];
    };
    d.disabled = d.siblings.filter(function(s) { // сюда фильтруем только остатки 0
    s.title = d.name;
    s.value = getValueByName(s.title, s.info);
    return s.num < 1;
    }); // @TODO этот фильтр в checkEmptyOffers вместо siblings

    // Далее нужно получить набор $items $(jQuery(obj))
    $items = getItems

    // И само зачеркивание
    $items.removeClass('empty');
    d.disabled.forEach(function(val) {
    $items.each(function(i, el) {
    var _this = $(this);
    if (_this.text().trim() == val.value) {
    _this.addClass('empty');
    }
    });
    });
    },


    Конечно не круто, то что вложенных циклов много, но другого я не придумал пока. Что-то не лезет в голову ничего изящнее)
    Думаю, что после доработок, неплохо было бы его включить в коробку.
  • На рассмотрении

    +2

    Привязка купонов в том числе к брендам

    Андрей Левченко Обновлен 4 года назад в категории CMS Общий функционал 0

    С учётом скупости функционала скидок в коробке была бы не лишней возможность привязки купонов не только к товарам или категориям, а также и к брендам.
  • На рассмотрении

    +1

    Расширить функционал экспорта товаров

    Сергей Токарев Обновлен 6 лет назад в категории CMS Общий функционал 0

    Предлагаю расширить функционал экспорта товаров. Сейчас при открытии фильтра есть возможность только выбрать товары по одному или целыми категориями. Было бы очень удобно делать подборки, например, по бренду или по любой другой характеристике.
  • На рассмотрении

    +1

    Поля, которые должны войти в поисковый индекс товара (помимо названия). ?

    Андрей Викторов Обновлен 3 года назад в категории CMS Общий функционал 3

    Добавить возможность добавления в поисковой индекс значений полей созданных для категорий и(или) товаров через модуль "Редактор ORM объектов"
  • На рассмотрении

    +1

    Измените поля "Минимальное количество товара для заказа" и "Максимальное количество товара для заказа"

    Ольга Филатова Обновлен 4 года назад в категории CMS Общий функционал 0

    Здравствуйте! Поля "Минимальное количество товара для заказа" и "Максимальное количество товара для заказа" имеют тип Integer соответственно при весовом товаре, если нужно поставить 0.1 кг. данные не сохраняются
  • На рассмотрении

    +1

    Сделать интеграцию с сервисом liveinform

    Сергей Токарев Обновлен 6 лет назад в категории CMS Общий функционал 1

    Здравствуйте. Было бы здорово реализовать интеграцию с сервисом http://www.liveinform.ru/ - в нем есть api, можно рассылать уведомления о посылках, отправленных СДЭКом и почтой, плюс настраивать автоматические напоминания или автозвонки. Пользуемся пока добавлением треков вручную. Плюс прозрачно можно фильтровать посылки, которые в пути, еще не выкуплены и завершенные.
  • На рассмотрении

    +1

    Алфавитный порядок брендов и.....

    Александр Малкин Обновлен 4 года назад в категории CMS Общий функционал 0

    День добрый.
    При добавление на сайт брендов они выстраиваются в хаотичном порядке, что создает трудности.
    Постоянно приходится в ручную это менять - это создает не удобства.
    Можно сделать по умолчанию, что бы все бренды добавлялись в алфавитном порядке и вообще и не только бренды но и многие другие характеристики.
    Например: Есть фильтре параметр высота, от 60 мм до 350 мм и вот приходиться постоянно в ручную сортировать данные по возрастанию.
    Очень не удобно. Прошу добавить данный функционал на вашу платформу.
  • На рассмотрении

    +1

    Доработать блок контроллер логотип

    Дмитрий Петухов Обновлен 8 лет назад в категории CMS Общий функционал 1

    Ссылка в логотипе не должна ссылаться на саму себя, то есть на главной это должна быть не ссылка.