Оставьте пустое поле "папка сайта", адрес - http://ВАШ_ДОМЕН/sitemap-1.xml - корректный.

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

http://site.ru - основной сайт
http://site.ru/en - другой сайт в рамках мультисайтовости.

Для построения абсолютных адресов на сайте используется "Главный домен сайта".
Главный домен сайта - это первый домен, указанный в поле Доменные имена в разделе Управление->Сайты->Ваш сайт.

Проверьте, что у вас указано в данном поле. Должно быть доменное имя без http://

Вы можете сделать простейший контроллер.

<?php
namespace ВАШ МОДУЛЬ\Controller\Front;

class Compare extends \RS\Controller\Front
{
    function actionIndex()
    {
           $compare = \Catalog\Model\Compare::currentCompare();
           $compare->removeAll();

           return $this->result->setSuccess(true);
    }
    
}     

Задать маршрут для контроллера

<?
namespace ВАШ МОДУЛЬ\Config;

class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this
            ->bind('getroute');
    }
    
    public static function getRoute($routes) 
    {
        $routes[] = new \RS\Router\Route('ВАШ МОДУЛЬ-front-compare', array(
            '/resetcompare/',
        ), null, t('Удаление всех товаров из сравнения'));
        return $routes;
    }

}

после этого дернуть URL /resetcompare/ из jQuery, чтобы удалить все товары из сравнения одним запросом к серверу.

Ну либо в JavaScript просто последовательно эмитировать click на крестики у товаров в сравнении, если не хотите создавать простой контроллер.

т.к. блоки вертикальные, то более оптимально конечно будут смотреться вертикальные фото. Но а в случае, если у вас фото только квадратные, то возможно вам подойдет другой тип масштабирования (с cropping'ом).

в шаблоне list_products.tpl вместо этой строки:

<img src="{$product->getMainImage()->getUrl(141, 185, 'xy')}" class="middlePreview">

вы можете использовать например такую:

<img src="{$product->getMainImage()->getUrl(181, 185, 'cxy')}" class="middlePreview">

Познакомиться  с типами масштабирования можно здесь

805

(3 ответов, оставленных в Предложения по улучшению системы)

Мы отказались от такого варианта, по многим причинам:

Учитывая то что пропускная способность загружающего обычно ограничена, то нет смысла загружать 10 фото в параллельно за 5 мин, или загрузить те же 10 фото последовательно за 5 мин.

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

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

806

(3 ответов, оставленных в Предложения по улучшению системы)

Так у нас и есть ассинхронная загрузка изображений к товарам. Вы можете поставить на загрузку изображения, в то время пока будете заполнять другие параметры товара в другой вкладке. Браузер на фоне будет их грузить.

Либо вообще можете сперва создать все товаров, а потом в конце разом загрузить фото ко всем товарам.
http://readyscript.ru/text-blog/zagruzk … dyscript-/

Попробуйте отключить опцию в разделе Управление->Настройка системы "Отображать администратору спецблок на сайте в режиме отладки". т.к. шапка администрирования подключает собственную версию jquery.

Краткое описание у товара можно получить двумя способами:

Можно так: {$product.short_description} - будет возвращать исключительно поле "Короткое описание"

А можно так: {$product->getShortDescription(300)} //где 300 - это требуемое количество символов. Данный метод вернет значение поля short_description, а если оно не задано, то вырежет заданное количество символов из обычного описания.

809

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

В настоящее время есть только скидки по купонам. Индивидуальные скидки, т.е. вы определенному пользователю можете поставить отдельный тип цен со скидкой. Напишите, пожалуйста, развернутое пожелание (с описанием всех деталей, которые вам бы хотелось видеть) в наш сервис, мы обязательно сделаем такой модуль.

А попробуйте просто добавить необходимую вам версию jQuery в файле layout.tpl (вместо подключаемой стандартной 1.8.x) вашей темы оформления, вполне вероятно, что все пройдет успешно.

Обновление версий всех сторонних компонентов(Smarty, jQuery, плагины jQuery) есть в планах.

Да, для данной задачи в ReadyScript есть уникальное решение. Разработчику - никогда не нужно лезть в базу, чтобы добавлять или обновлять какие-либо поля в базе.

Вы просто изменяете описание Orm объектов.
Например с помощью обработки необходимого события в вашем модуле
http://readyscript.ru/dev-manual/dev_or … orm_events

Потом заходите в раздел Веб-сайт->Настройка модулей. Выбираете ваш модуль и нажимаете "Переустановить модуль". Установщик сам найдет все ORM объекты модуля и приведет структуру БД в соответствие с описанием ORM объекта.

То есть для синхронизации локальной версии сайта и удаленного сайта,
нужно просто перекинуть файл с классом ORM объекта, например product.inc.php на боевой сервер и "Переустановить модуль", описанным выше образом.

Для переноса данных с другого магазина, можно воспользоваться внешними инструментами, доступными в админ. панели (CSV). Если вы хотите произвести перенос данных на низком уровне (БД), то вам необходимо написать скрипт переноса данных. В фреймворке ReadyScript есть 2 уровня, на котором можно работать со вставками - БД:

1. Это уровень SQL запросов - класс \RS\Db\Adapter

\RS\Db\Adapter::sqlExec("INSERT INTO table(a,b) VALUES('#a', '#b')", array('a' => 'значение А', 'b' => 'значение B'));

2. Это уровень ORM объектов.(рекомендуемый уровень). в данном случае вы будете оперировать понятием объект.
Например, если необходимо вставить товар, то вставка должна происходить так:

$product = new \Catalog\Model\Orm\Product;
$product['title'] = 'Название товара';
$product['alias'] = 'URL имя товара';
$product['xdir'] = array('ID категории', 'ID другой категории, если нужно');
$product['xcost'] = array(
   'ID типа цен' => 'Цена',
   'ID типа цен2' => 'Цена2'
);
$product['maindir'] = 'ID главной категории';
//...
if ($product->insert()) {
     //Товар добавлен, ID товара - $product['id'];
}

Да, скорее всего именно из-за этого (что слова в индексе не встречаются именно в такой последовательности). Точно посмотреть всегда можно в таблице ..._search_index как составлен поисковый индекс для конкретного товара.

Вы можете обойти эту проблему, просто добавив точную фразу "Toyota Surf", например в ключевые слова товара, на вкладке мета-теги.

814

(2 ответов, оставленных в Лицензирование)

В данном случае речь идет о шапке со сведениями о лицензиаре внутри PHP файлов.

Ссылку "Работает на ReadyScript" из шаблонов - после покупки можно убирать, мы абсолютно не против, даже подсказываем всегда как это сделать, если поступают такие вопросы.

Инструкция по настройке обмена данными с 1С 11.1.9.x - находится здесь

Не понимаю, почему не найдет, у вас же фраза "Toyota Surf" присутствует в названии товара.
А наш like ищет по маске %фраза% простое вхождение строки.

Настроить минимальную длину индексируемого слова можно в конфигурационном файле MySQL переменная ft_min_word_len. http://www.mysql.ru/docs/man/SHOW_VARIABLES.html

Я понял, вы переключили в полнотекстовый режим поиска и поэтому у вас не находится по артикулу.
Я объясню почему, это связано с ограничениями полнотекстового поиска.

Плюс полнотекстового поиска

  • поиск ведется по словам, поэтому они не обязательно должны находиться рядом. (ищем: "Диван красный", находим - "Диван замечательный красный")

  • допустимы неточные окончания(это реализуется нашими средствами) (ищем: "Диваны красные", находим "Диван замечательный красный")

Минусы:

  • В настройках к MySQL устанавливается минимальная длина слова, попадающего в индекс.
    Значением по умолчанию является - 4.  Соответственно в полнотекстовый поиск не попадают слова менее 4х символов.

  • Спецсимволы (не буквы и цифры), являются разделителями слов.

То есть "TY-160/3R" - не попадет в поисковый индекс, т.к. MySQL разбивает его на 3 слова:
1. TY
2. 160
3. 3R

Все эти слова менее 4х символов, соответственно они не попадают в полнотекстовый индекс.

В вашем случае возможно использовать только поиск по like, чтобы искать по идентификаторам типа TY-160/3R

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

Соответственно поиск по %like% - будет искать точное вхождение по всем вышеперечисленным полям и артикул там есть. Попробуйте создать один товар в админ. панели и указать у него артикул "TESTAAA" и произведите поиск по фразе "TESTAAA", товар должен найтись. Вы можете убедиться, что поиск по артикулам работает и на нашем demo сайте.

Не совсем понял, почему "Тип поиска like не совсем подходит".

Нужно посмотреть на развернутый текст ошибки, чтобы понять ситуацию.
Включите опцию "Подробно отображать информацию об исключениях" в разделе Управление->Настройки системы в админ. панели.

МойСклад поддерживает импорт данных из Excel, YML.
Оба этих формата можно получить у ReadyScript (С помощью экспорта данных в CSV или экспорта данных в Яндекс.Маркет)
CSV - http://readyscript.ru/manual/catalog_cs … xport.html
YML - http://readyscript.ru/manual/catalog_export.html

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

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

Но если вам необходимо подгрузить комплектации в списке товаров, то необходимо добавить еще следующую конструкцию в начало шаблона list_products.tpl

{$list = $this_controller->api->addProductsOffers($list)}

Данная конструкция массово загрузит комплектации сразу ко всем товарам в списке.

Будет поддержка следующего синтаксиса:

<свойство товара>[<символ-разделитель><номер изображения>].<расширение файла>

т.е. можно будет назвать файлы, например так:
articul.jpg
articul.01.jpg
articul.02.jpg

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

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

Сейчас это можно сделать с помощью CSV, через колонку Фото. Т.е. необходимо залить папку с фото на сервер, и в CSV для каждого товара прописать путь к фотографиям относительно корня сайта. Вы можете увидеть эталонный CSV, если сделаете экспорт.

Но у нас сейчас на тестировании уже находится модуль, который будет позволять быстро загружать массово фото к товарам, для случая если имена файлов изображений точно равны одному из параметров товара (Артикул, Название, URL имя, Категория, Бренд, ID, XML_ID). Срок публикации данного функционала до 5ти дней.

Да, с категорий тоже нужно ставить редиректы. Готовьтесь к тому, что ваш старый сайт пропадет в скором времени из поиска и вы его сможете удалить. В помощь: https://help.yandex.ru/webmaster/yandex … g-site.xml

Первый вопрос очень абстрактный, соответственно могу лишь ответить на него так: За внешний вид шаблонов отвечают CSS, разметка HTML, шаблоны Smarty. Если у вас есть навыки работы с данными вещами, то однозначно вы сможете сделать абсолютно все-что захотите с шаблоном. Если - нет, придется обратиться к специалистам.


Насчет редиректа, его можно делать на разных уровнях (через htaccess) или на уровне PHP.
Если через htaccess, то верно все делаете, вот есть хороший материал на этот счет. Не забудьте только убедиться у вашего хостинга, что включен модуль mod_alias для apache, чтобы это работало.

Если через PHP, то можно составить примерно такого содержания файл

<?
$redirect_map = array (
  'ОТНОСИТЕЛЬЙ ПУТЬ НА СТАРОМ САЙТЕ' => 'ОТНОСИТЕЛЬНЫЙ ПУТЬ НА НОВОМ САЙТЕ',
  '/ventilyaciya/reshjotki/plastikovye' => '/ventilyaciya/reshjotki-plastikovye',
  '/ventilyaciya/reshjotki/welevye' => '/ventilyaciya/reshjotki-welevye',
  '/ventilyaciya/reshjotki/kruglye-diffuzory' => '/ventilyaciya/reshjotki-kruglye-diffuzory',
);

if (isset($redirect_map[$_SERVER['REQUEST_URI']])) {
    $domain = 'http://ВАШ_НОВЫЙ_ДОМЕН.RU';
    header('location: '.$domain.$redirect_map[$_SERVER['REQUEST_URI']], null, 301);
    exit;
}

Сохранить данный файл в корень, например с названием redirect.php, и подключить его в точке входа вашего старого движка (обычно index.php) с помощью конструкции require('redirect.php'); в самом начале файла.