Если пользователь не авторизован, то у него всегда - тип цен "по-умолчанию".
Т.е. это будет работать и для не авторизованных.

777

(1 ответов, оставленных в Вопросы по работе с системой)

Размер изображения прописывается в разных шаблонах.  В конструкциях примерно такого вида:

<a href="{$image->getUrl(800,600,'xy')}">...

Вы можете поменять на любой размер, который желаете.

Привязка цен к складу тянет за собой огромную архитектурную задачу (по сути - полноценный складской учет, если еще точнее то нужно написать 1С N2).  Обычное управление товаром усложнится на порядок с таким количеством контекстов, в разрезе разных типов цен, комплектаций, складов.

К сожалению, мы пока не претендуем на данную нишу. Но когда мы переделаем все наши задачи, которые будут полезны 99% наших пользователей, вероятно мы будем искать очередные сложные  ниши, поэтому следите за обновлениями и нашими новостями. )

Да, если у пользователя в настройках установлен - тип цен: "по-умолчанию",
то можно воспользоваться этим методом - \Catalog\Model\CostApi::setSessionDefaultCost()

Можно реализовать если просто добавить характеристики , тогда можно так сделать , но если вам нужна будет выгрузка CSV тогда придется перебрать немного её под нужный вид.

Предположу, что Владимир имел ввиду, что можно использовать комплектации для вашего случая.
Например, создаете:

Товар1
-- "Комплектация 1 - Товар со склада 1" - 5 р
-- "Комплектация 2 - Товар со склада 2" - 10 р

В заказе вы будете видеть, заказанную комплектацию для каждого товара.

Непосредственно менять систему с целью добавить связь цен именно с сущностью склада - это ООчень большая доработка.

Внутри объекта товара $product - сохраняется идентификатор цены cost_id в поле _current_cost_id.
Именно закешированное значение _current_cost_id используется при вызове метода получения цены у товара $product->getCost(null), без явного указания id цены. Необходимо подменить значение _current_cost_id в кэш-поле товара.

Попробуйте выполнить следующий код для пересчета -

//Заменим закешированный _current_cost_id у объекта товара
foreach($cart->getProductItems() as $cartdata) {
    $cartdata['product']['_current_cost_id'] = ID новой цены;
}

//Очистим сведения для блока корзины
$cart->cleanInfoCache();

Насчет события для удаления элемента из корзины. Добавим в ближайшем обновлении.
Функция removeItem($uniq) будет выглядеть так: (можете заменить её прямо в файле cart.inc.php)

    function removeItem($uniq)
    {
        $eresult = \RS\Event\Manager::fire('cart.removeitem.before', array(
            'cart' => $this,
            'uniq' => $uniq
        ));    
        if ($eresult->getEvent()->isStopped()) return false;
                
        if (isset($this->items[$uniq])) {
            if ($this->mode == self::MODE_SESSION) {
                \RS\Orm\Request::make()
                    ->delete()
                    ->from($this->cartitem)
                    ->where($this->select_expression)
                    ->where(array(
                        'uniq' => $uniq
                    ))->exec();
            }
            
            $deleted_item = $this->items[$uniq];
            unset($this->items[$uniq]);
            unset($this->order_items[$uniq]);
            unset($this->cache_products[$uniq]);
            unset($this->cache_coupons[$uniq]);

            \RS\Event\Manager::fire('cart.removeitem.after', array(
                'cart' => $this,
                'uniq' => $uniq,
                'item' => $deleted_item
            ));            
        }
        return true;
    }

Настройки модуля могут быть только одни в рамках сайта, а одинаковых блоков может быть несколько даже на одной странице и каждому блоку нужно давать настроить разные параметры.  (поэтому данная настройка вынесена в параметры блок-контроллера).

В настройках блока "Поиск товаров по названию". Переведите сайт в режим отладки. Наведите мышь на форму поиска и нажмите на инструмент "Настроить блок"(иконка гаечного ключа). Там будет пункт "Количество результатов в выпадающем списке"

Надо увидеть точный текст ошибки, чтобы сказать в чем причина ошибки.  ( по скриншоту единственное что видно - это то что стили не подгрузились )
Включите display_errors в настройках PHP, можно с помощью .htaccess.  ( http://readyscript.ru/faq/#faq-errors )
И посмотрите на исходный код страницы в браузере. В конце страницы наверняка будет надпись Fatal error..........

Спасибо, что поделились решением. Огласите, пожалуйста, название хостинга. Ограничение на I/O на хостинге -это жестко. В php ведь нет команды "копировать файлы, но не быстро", чтобы уложиться в I/O лимит хостинга. ( вариант - читать побайтово и ставить слипы - считаю просто диким )

Включите display_errors ON (добавив строку ini_set('display_errors', 1); в setup.inc.php ), тогда непосредственно текст ошибки можно будет увидеть в графе response (ответ сервера) у запроса с кодом 500, в инструментах отладки браузера.

Перед началом обновления система копирует файлы модулей, которые предстоит обновить.

В случае, если будут обновляться абсолютно все модули, то копированию подлежит объем, приблизительно 60 Мб.
Такой небольшой объем система копирует за несколько секунд, что соответственно должно создавать кратковременный пик использования диска. Это нормально.

Чтобы точно узнать причину, по которой дальше данного шага не проходит установка, можно включить отображение ошибок. Способом, описанным здесь: http://readyscript.ru/faq/#faq-errors.
Далее посмотреть, с помощью инструментов отладки браузера, что возвращает система на ajax запрос Создания точки восстановления.

Наиболее вероятны те причины, о которых пишет Александр.

Когда 1С выполняет обмен либо по расписанию, либо с помощью ручного запуска,
движок сразу же обновляет все сведения в реальном времени.

Напишите абсолютный путь до sitemap-1.xml в robots.txt:

Sitemap: http://{ВАШ_ДОМЕН}/sitemap-1.xml

ReadyScript - платформа мультисайтовая, поэтому в конце подписывается ID сайта.
Но не понятно чем это мешает. Жесткое имя SITEMAP.XML - нигде не регламентировано. Файл sitemap.xml может называться абсолютно как угодно, хоть karta_saita.xml.

Путь к нему нужно прописывать в robots.txt в директиве
User-agent: *
Allow: /
Sitemap: /sitemap-1.xml

https://help.yandex.ru/webmaster/contro … ml#sitemap

Или если говорить о google, yandex, то там в кабинете вебмастера можно также указывать путь к sitemap на вашем сайте.

В конструкции, выводящей комплектации в файле product.tpl, вы можете добавить условие:

<select name="offer">
    {foreach from=$product.offers.items key=key item=offer name=offers}
         {if $offer.num} {* - это проверка общего остатка комплектации на всех складах  *}
               <option value="{$key}" ....>{$offer.title}</option>
         {/if}
    {/foreach}
</select>

Нет. Описанием служат названия файлов и их структура относительно корня темы. Этого вполне достаточно.
Крайний случай - вы всегда можете воспользоваться поиском по содержимому файлов, чтобы найти нужный шаблон в теме.

Обратите внимание, Александр пишет:

Если это тема "Классическая", то копируем файл ....

У вас судя по всему тема не классическая, а fashionzet,  наверное это ваша вариация темы - fashion ?
Если так, то в теме fashion - эта надпись в других файлах хранится.

/wrapper.tpl
/wrapper_checkout.tpl
/exception.tpl

Уточните, кэш очищали? (иконка стрелки в правой части верхней черной панели администратора)

В системе работает одинаковый принцип для подключения шаблонов из любого места.
%shop%/orderview.tpl - означает, что шаблон сперва будет искаться в папке с текущей темой, а лишь потом в модуле.

796

(1 ответов, оставленных в Вопросы по работе с системой)

Те показатели, что вы привели не дадут большую нагрузку, поэтому можете разместить сайт на любом шаред хостинге (очень желательно , чтобы там был PHP акселератор APC  или OpCache).

Выбирайте по месту на диске, чтобы у вас поместились фотографии для всех ваших товаров. На один товар ориентировочно нужно рассчитывать, что будет 500 Кб фото со всеми миниатюрами.

Вы можете добавить

<input type="text" name="amount" value="1"> 

в шаблон карточки товара /templates/{ВАША ТЕМА}/moduleview/catalog/product.tpl перед кнопкой "Заказать", JavaScript подхватит значение из данного поля.

В каждой теме оформления есть файл со стилями - \templates\ВАША_ТЕМА\resource\css\style.css

С помощью главного инструмента верстальщика - это плагина fireBug для браузера Mozilla FileFox или штатными средствами отладки любого браузера (появляются по нажатию на F12 в Chrome, IE9+), вам необходимо определить какой стиль задает отображение того или иного блока на странице. (шапка, подвал или любой другой блок)

Далее идете в CSS и правьте соответствующий стиль. За фон отвечает свойство background.

Да, папки moduleview/main/blocks/logo нужно создать, если речь идет о классической теме. Далее нужно сделать все, как написал Александр. Иначе изменения затрутся после обновления.

В админ. панели можно всегда включить колонку - Цены в разделе Каталог товаров. Отсортировать по цене и увидеть товары с нулевой ценой.