Можно через конструктор сайтов добавить блок с произвольным HTML на странице по умолчанию.

1,502

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

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

Ну Вы скорее всего вынесли Ваш checkbox за рамки

{foreach from=$prop_list item=item}
            {foreach from=$item.properties item=prop}

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

1,503

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

503 обычно возникает когда у Вас есть ошибки например в шаблоне, или в разрабатываемом Вами модуле. Чтобы получить подробное описание, что к чему, нужно включить отображение ошибок.
https://readyscript.ru/faq/#faq-errors
Если облачный сервис у Вас, то нужно в разделе Управление->Настройки системы и на первой вкладке включить первые две галочки и сохранить.
Или на этом видео
https://www.youtube.com/watch?v=KoF2IyG … L4X2UTC6Aw
Начиная с 8:20

1,504

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

Подскажите, хочу попробовать сделать модуль.
RS ставить на local можно или на хостинге демо работает?

Разрабатывать однозначно нужно на локальной машине. Если у доменного имени зона будет .local или .test. То разрабатывать можно бесконечно, лицензия истекать не будет.

Есть ли скелет модуля?

http://marketplace.readyscript.ru/addons/codegen/

P.S. Мой видеокурс
https://www.youtube.com/watch?v=KoF2IyG … L4X2UTC6Aw

1,505

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

Всё просто. Есть модуль 301 редирект. Там нужно просто проимпортировать, что на что должно ссылаться.
http://marketplace.readyscript.ru/addons/redirector/

1,506

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

Здравствуйте.
Подскажите, есть ли возможность загрузки файлов в корневую папку?

Нет. Только через FTP, если у Вас свой хостинг. Если Вы у нас в облаке то нельзя.

Например для подтверждения прав или файла .htaccess?

Если Вам нужно подтвердить права на домен в Яндексе или Google, то там обычно всё решается добавлением мета тега и модулем http://marketplace.readyscript.ru/addon … alidation/

.htaccess в облаке пока нельзя редактировать. На своём хостинге без проблем. Но если уж сильно нужно внести изменения в htaccess, то это можно сделать через нашу поддержку (support@readyscript.ru).

А то у меня сейчас проблема настройки 404 страницы и куда загрузить вышеуказанный файл не знаю...

Что за проблема у Вас?

1,507

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

По умолчанию будет текст, если тип поля не определён. Поменяйте

<input type=['checkbox']

На

<input type='checkbox'

Это опечатка у меня. Я надеялся что заметите smile

1,508

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

Спасибо, буду пробовать.
Единственное, я не понял, в вашем случае пагинация активируется кнопкой "Показать еще" или же прокруткой содержимого вниз?
Или clickOnScroll именно за это и отвечает?

Кнопка есть всегда, но благодаря clickOnScroll, её нажатие происходит автоматически при прокрутке вниз. Кнопка нужна. Т.к. если не будет интернета. Ничего не подгрузить, но кнопка останется.

1,509

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

Напишите пожалуйста в поддержку.

1,510

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

Ну во первых в layout.tpl Вашей темы нужно добавить скрипт jquery.ajaxpagination.js

{addjs file="jquery.ajaxpagination.js"}

Потом убедиться что у Вас есть js файл в папке /templates/Ваша тема/resourse/js/jquery.ajaxpagination.js
Если нет, то переносим из /templates/.default/resourse/js/jquery.ajaxpagination.js

Теперь дело за инициализацией в шаблоне. Открываем list_products.tpl в Вашей теме.
Убираем строку с пагинацией.

{include file="%THEME%/paginator.tpl"}

Вместо неё создаёт кнопку "Показать ещё" с настройками:

{if $paginator->total_pages > $paginator->page}
        <div class="wrapper-space"></div>
        <div data-pagination-options='{ "appendElement":".products-list" , "clickOnScroll":true }' href="{$router->getUrl('catalog-front-listproducts', ['query'=>$query, 'category'=>$category.alias,'p' => $paginator->page+1])}" data-href="{$router->getUrl('catalog-front-listproducts', ['query'=>$query, 'category'=>$category.alias,'p' => $paginator->page+1])}" class="more onemoreEmpty margin-top ajaxPaginator">
            <div class="icon"></div>
            еще
        </div>
    {/if}

Ключевым здесь является класс ajaxPaginator. Т.к. именно по нему отрабатывает пагин.
У самой кнопки есть настройки 

 "appendElement":".products-list" , "clickOnScroll":true

где appendElement - это класс который будет заменять внутреннее содержимое подгруженной страницы. Т.к. возвращается вся страница, а заменена будет только 1 часть.  Например

<div class="products-list">
//Здесь элементы каталога товаров.

</div>
//А здесь пагинация кнопкой

clickOnScroll - использовать автопрокрутку или нет (true/false).

1,511

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

Попробуйте вместо:

<select class="yesno" name="pf[{$prop.id}]" data-start-value="">
        <option value="">{t} Не выбрано {/t}</option>
        <option value="1" {if $filters[$prop.id] == '1'}selected{/if}>{t}Есть{/t}</option>
        <option value="0" {if $filters[$prop.id] == '0'}selected{/if}>{t}Нет{/t}</option>
    </select>

Поставить:

<input type=['checkbox'] name="pf[{$prop.id}]" data-start-value="" value=1 {if $filters[$prop.id] == '1'}checked{/if}/>

1,512

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

Более подробно распишите, а лучше по таким вопросам в поддержку писать на support@readyscript.

1,513

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

Олег пишет:

Подскажите, планируется ли сделать подгрузку каталога товаров с помощью Lazy loading, то есть, когда каталог товаров размещается на одной странице, а при перемотке вниз автоматически подгружается контент из следующей страницы. Делается, видимо, это с помощью AJAX и используется на множестве современных сайтов, начиная от facebook и vk и заканчивая магазинами на shop-script. User Experience от этого сильно вырос бы, а  нагрузка на сервер снизилась.

Пока не планируется. Но это легко сделать у нас. Есть плагин ajaxPagination, который можно внедрить, например как здесь http://instrument-krasnodar.ru/catalog/ … nstrument/

Сам плагин лежит в теме по умолчанию /templates/.default/resourse/js/jquery.ajaxpagination.js
Если нужно могу технически подсказать как сделать. Там ничего сложного.

Владимир пишет:

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

Это я все про то же поле ввода.

Посетителю всё равно на точку и запятую. Он просто перемещает ползунок. Или Вам пришло гневное письмо от посетителя с требованием ввести запятую? smile
Просто из-за этой запятой, потом возникает куча проблем связанное с тем, что если вы заводите с запятой, то и везде дожна быть запятая, а где-то точка, если вы ввели точку. Ведь есть ещё отображение, реакция на ползунок, импорт экспорт. А если у Вас часть данных для ползунка и с запятой, а часть без? Т.е. везде в системе, нужно лишний раз проверять, а где там пользователь ввёл запятую, а где нет и конвертировать для машинного  счёта. Это порождает нестабильность. Скорее здесь если сильно нужно, то должна быть настройка, что либо понимаем запятую, либо понимаем точку. Слишком много лишних проблем появляется с запятой.

в мобильном клиенте Альфа-Банка сделали так, что без разницы, точка или запятая, работает в любом варианте.

Банк и интернет-магазин разные вещи их сравнивать нельзя. В банке цифру вы вводите один раз и навсегда. Он потому понимает запятую, потому, что дальше её нигде не использует и при нажатии далее сразу конвертирует в точку для машинного понимания.

Если установить значение, допустим до 6 дюйм, а потом это значение удалить (очистить поле), то результат подбора будет пустой. И окончание url страницы [to]= То есть до нуля. Это не правильно.


Т.е. получается, Вы в поле где нужно указать значение, стёрли цифру оставили его пустым, ничего не введя? И предлагаете, чтобы пустое поле понималось как максимальное значение?


P.S. Мы обсудим вопрос с запятой, но я прошу Вас, чтобы не осталось без внимания Вы можете на helpdesk.readyscript.ru оставить пожелание.

Данные не бывают из неоткуда

1,516

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

Спасибо, а в шаблон только встроен стик "новинка"? если да, то как можно сделать  новый?

Да. Так и есть:

    {foreach $products as $product}
        <li {$product->getDebugAttributes()} data-id="{$product.id}">
            {$main_image=$product->getMainImage()}
            <a href="{$product->getUrl()}" class="image">{if $product->inDir('new')}<i class="new"></i>{/if}<img src="{$main_image->getUrl(188,258)}" alt="{$main_image.title|default:"{$product.title}"}"/></a>
            <a href="{$product->getUrl()}" class="title">{$product.title}</a>
            <p class="price">{$product->getCost()} {$product->getCurrency()} 
                {$last_price=$product->getOldCost()}
                {if $last_price>0}<span class="last">{$last_price} {$product->getCurrency()}</span>{/if}</p>
        </li>                   
    {/foreach}

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

{foreach $product->getSpecDirs() as $spec_dir} {* Перебираем спец категории товара *}
    {if $spec_dir.image} {* Если есть фото *}
         <img src="{$spec_dir.__image->getLink()}"/>
         {* или для определённых размеров нужно обрезать *}
         <img src="{$spec_dir.__image->getUrl(50, 50, 'xy')}"/>
    {/if}
{/foreach}

Ой. Прошу прощения, точно. orm.init.users-user, что-то перепутал под конец дня smile

1,518

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

Вы в облаке настраиваете, просто добавив свой домен?

Да

В данном видеоролике рассматривается вопрос создания фильтров в админ панели для фильтрации выводящихся элементов.
Видео урок есть у нас в разделе видео уроков поддержки
и доступен здесь:
https://www.youtube.com/watch?v=1VExSZ4 … L4X2UTC6Aw

Ну тогда Вам надо вешаться на orm.init.shop-order и добавить там поле паспорта.
А в самих шаблонах address.tpl и profile.tpl Вашей темы добавить поле как и все остальные там выводятся.
Видео урок по добавлению полей есть у меня в видео уроках:
https://www.youtube.com/watch?v=KoF2IyG … mp;index=1

Там стоит проверка в самом шаблоне если элементов меньше 5, то выводится радио кнопками. Потому, что комплектаций может быть и 500 и радиокнопками они не будут смотреться. Это в файле product.tpl или product_offers.tpl, если у Вас последняя версия шаблонов.
И выглядит это так:

<div class="values">
                {if count($product.offers.items)>5}
                    {* Если комплектаций много, то отобразим их в виде списка *}
                    <select name="offer">
                        {foreach from=$product.offers.items key=key item=offer name=offers}
                        <option value="{$key}" {if $smarty.foreach.offers.first}checked{/if} {if $check_quantity}data-num="{$offer.num}"{/if} {if $catalog_config.use_offer_unit}data-unit="{$offer->getUnit()->stitle}"{/if} data-change-cost='{ ".offerBarcode": "{$offer.barcode|default:$product.barcode}", ".myCost": "{$product->getCost(null, $key)}", ".lastPrice": "{$product->getOldCost($key)}"}' data-images='{$offer->getPhotosJson()}' data-offer-id='{$offer.id}' data-sticks='{$offer->getStickJson()}'>{$offer.title}</option>
                        {/foreach}
                    </select>
                {else}
                    {* Если комплектаци мало, то отобразим их в виде радиокнопок *}
                    {foreach from=$product.offers.items key=key item=offer name=offers}
                        <div class="packageItem">
                            <input value="{$key}" type="radio" name="offer" {if $smarty.foreach.offers.first}checked{/if} id="offer_{$key}" {if $check_quantity}data-num="{$offer.num}"{/if} {if $catalog_config.use_offer_unit}data-unit="{$offer->getUnit()->stitle}"{/if} data-change-cost='{ ".offerBarcode": "{$offer.barcode|default:$product.barcode}", ".myCost": "{$product->getCost(null, $key)}", ".lastPrice": "{$product->getOldCost($key)}"}' data-images='{$offer->getPhotosJson()}' data-offer-id='{$offer.id}' data-sticks='{$offer->getStickJson()}'>
                            <label for="offer_{$key}">{$offer.title}</label>
                        </div>
                    {/foreach}
                {/if}
</div>

Соответственно Вам нужно выдрать из этого контекста тот код, который Вы хотите использовать.

Вам надо, чтобы и у него в профиле было обязательно?

В шаблоне с фильтрами (/templates/perfume/moduleview/catalog/blocks/sidefilters/filters.tpl) у фильтров, которые идут с ползулком всегда есть и физическое представление в виде друх полей ввода от и до. У оборачивающего контейнера стоит класс fromToLine
Наример:

<div class="filter typeInterval">
                <h4>{t}Цена{/t}:</h4>
                <table class="fullwidth fromToLine">
                    <tr>
                        <td>{t}от{/t}</td>
                        <td class="p50"><input type="text" class="textinp fromto" name="bfilter[cost][from]" value="{if !$catalog_config.price_like_slider}{$basefilters.cost.from}{else}{$basefilters.cost.from|default:$moneyArray.interval_from}{/if}" data-start-value="{if $catalog_config.price_like_slider}{$moneyArray.interval_from|intval}{/if}"></td>
                        <td>{t}до{/t}</td>
                        <td class="p50"><input type="text" class="textinp fromto" name="bfilter[cost][to]" value="{if !$catalog_config.price_like_slider}{$basefilters.cost.to}{else}{$basefilters.cost.to|default:$moneyArray.interval_to}{/if}" data-start-value="{if $catalog_config.price_like_slider}{$moneyArray.interval_to|intval}{/if}"></td>
                        <td>{$prop.unit}</td>
                    </tr>
                </table>
                {if $catalog_config.price_like_slider && ($moneyArray.interval_to>$moneyArray.interval_from)} {* Если нужно показать как слайдер*}
                    <input type="hidden" data-slider='{ "from":{$moneyArray.interval_from}, "to":{$moneyArray.interval_to}, "step": "{$moneyArray.step}", "round": {$moneyArray.round}, "dimension": " {$moneyArray.unit}", "heterogeneity": [{$moneyArray.heterogeneity}]  }' value="{$basefilters.cost.from|default:$moneyArray.interval_from};{$basefilters.cost.to|default:$moneyArray.interval_to}" class="pluginInput" data-closest=".fromToPrice" data-start-value="{$basefilters.cost.from|default:$moneyArray.interval_from};{$basefilters.cost.to|default:$moneyArray.interval_to}"/>
                {/if}
            </div>

В JS ниже в этом файле  прописано физическое скрытие этого котейнера по классу fromToLine. Поэтому если его убрать, а лучше просто заменить на fromto. То у Вас поля появятся. Правда в CSS надо будет подогнать контейнер, чтобы на него ползунок не налазил. Но я думаю Вы с этим разберётесь.

Спасибо!