admin пишет:

Если вы уберете уникальный префикс маршрута, как система поймет, что это категория постов?
А если вы сделаете категорию постов с alias'ом /admin/ или /catalog/ или ...., как решать конфликт?

Спасибо за беспокойство, понятно что никто не будет такие алиас делать, сейчас то тоже можно станичнику в меню создать с любым алиасом)

Но всё же задача стоит убрать text- перед алиас категории постов)

Подскажите как убрать приставку text- у категории постов?

3

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

Закусило Александр пишет:

Ну чтож теоретически можно сделать следующим образом.
Сам блок контроллер для пагинации принимает параметр p из GET запроса.

Для отображения пагинации нужен сам объект пагинации. А именно:
\RS\Helper\Pagination
Можно воспользоваться функцией static_call (http://readyscript.ru/dev-manual/dev_sm … tatic_call) и помощью неё заполнить объект пагинации из своего модуля, передав нужные переменные в публичную статическую функцию своего апи. Например вызовом в шаблоне:

{static_call var=paginator callback=['\Custom\Model\Api','myPagination'] params=[$this_controller->article_api, $this_controller->getParam('pageSize')]}

В самой функции, надо сделать примерно следующее:

/**
* 
* @param \Article\Model\Api $article_api - объект АПИ статей
* @param integer $limit - по сколько резульататов выводить.
*/
public static function myPagination($article_api, $limit)
{
      $page        = \RS\Http\Request::commonInstance()->get('p', TYPE_INTEGER, 1); //Получаем из GET текущую страницу
      $total         = $article_api->getListCount(); //Получим общее количество статей
      $paginator = new \RS\Helper\Paginator($page, $total, $limit); 
      retrun $paginator;
}

В самом шаблоне чуть ниже static_call можно вызвать теперь шаблон пагинатора:

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

Подскажите как это интегрировать в тему flatlines?

4

(3 ответов, оставленных в Вопросы по созданию тем оформления)

Закусило Александр пишет:

Сделать свой модуль.

А как то проще возможно?) Может кто уже себе реализовывал, подскажите как)

5

(3 ответов, оставленных в Вопросы по созданию тем оформления)

Привет, как реализовать google AMP для ReadyScript?

Закусило Александр пишет:

Вставить в шаблон самого товара.

{if $smarty.get.dialogWrap}
   То что для диалогового окна
{else}
   То что на отдельной странице
{/if}

Вставить свой шаблон можно через

{include file="Путь к файлу"}

Например

{include file="%catalog%/my_template.tpl"}

Спасибо за подробный ответ!

Закусило Александр пишет:

Когда происходит запрос, то окно вызывается с параметром в запросе dialogWrap=1
Соответственно в шаблоне можно проверить

{if $smarty.get.dialogWrap}
   Самое место для кнопки
{/if}

Сори не понял как это вставить.

Как задать отдельный шаблон на вывод этого всплывающего окна?

Закусило Александр пишет:

Вам нужно вызвать диалоговое окно с адресом товара. Т.е. добавить класс inDialog или rs-in-dialog (в зависимости от темы), тогда в диалоговое окно уйдет тот контент который вы запросили. Единственное, что, позаботьтесь о том, чтобы js-ки которые вы подключаете на самой странице товара в списке были подгружены.

Супер, то что нужно.
А как отредактировать содержимое вызванного окна, например добавить кнопку "перейти на страничку товара", и задать стиль этого всплывающего окна?

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

Покажите сайт.

Закусило Александр пишет:

Вы картинки грузине в $imagelist, а проверки у Вас для $images

Спасибо)

Закусило Александр пишет:

Полный код файла предоставьте.

{* Список товаров в блочном виде *}
{$imagelist = $product->getImages(false)}
{$product->fillProperty()|devnull}
<div {$product->getDebugAttributes()} data-id="{$product.id}"
        class="rs-product-item card card-product {if count($imagelist)>1}rs-photo-view{/if}
        {if $product->isOffersUse() || $product->isMultiOffersUse()} rs-show-offer-select{/if}">
    <div class="card-product_ticket">
        {foreach $product->getMySpecDir() as $spec}
            {if $spec.is_label}
                <span class="ticket-new">{$spec.name}</span>
            {/if}
        {/foreach}

    </div>
    <div class="card-image{if $images.1} hover-two{/if}">
        <a href="{$product->getUrl()}">
            <img src="{$product->getMainImage()->getUrl(280, 280, 'cxy')}" alt="{$product.title}">
            {if $images.1} {* Проверяем есть ли 2-вторая *}
               {$image=$images.1} {* Присваиваем картинку в переменную *}
               <img src="{$image->getUrl(280,280,'cxy')}" alt="{$product.title}">
            {/if}
        </a>
        
        {if $product->getPropertyValueById(331)}
            <div class="country-made">{$product->getPropertyValueById(331)}</div>
        {/if}
    </div>
    <div class="card-text">
        <div class="card-product_info">
            <div class="card-product_title">
                {hook name="catalog-list_products:blockview-title" title="{t}Просмотр категории продукции:название товара, блочный вид{/t}"}
                    <a href="{$product->getUrl()}"><span>{$product.title}</span></a>
                {/hook}
            </div>
            <div class="card-product_brand-name">
                {if $product.brand_id}
                    <a href="{$product->getBrand()->getUrl()}">{$product->getBrand()->title}</a>
                {/if}
            </div>
        </div>
        <div class="card-product_price">
            <span class="card-price">{$product->getCost()} {$product->getCurrency()}{if $product->getUnit()->stitle}/{$product->getUnit()->stitle}{/if}</span>
            {if $old_cost = $product->getCost('Зачеркнутая')}
                <span class="card-price_old"><span class="rs-price-old lastPrice">{$old_cost} </span><span class="card-price_currency">{$product->getCurrency()}{if $product->getUnit()->stitle}/{$product->getUnit()->stitle}{/if}</span></span>
            {/if}
        </div>
        <div class="card-product_button">
            <div class="pull-left">
                {hook name="catalog-list_products:blockview-buttons" product=$product title="{t}Просмотр категории продукции:кнопки, блочный вид{/t}"}
                {if $shop_config}
                    {if $product->shouldReserve()}
                        {if $product->isOffersUse() || $product->isMultiOffersUse()}
                            <a data-url="{$router->getUrl('shop-front-multioffers', ["product_id" => $product.id])}" class="link link-more pull-right rs-in-dialog">{t}Заказать{/t}</a>
                        {else}
                            <a data-url="{$router->getUrl('shop-front-reservation', ["product_id" => $product.id])}" class="link link-more pull-right rs-in-dialog">{t}Заказать{/t}</a>
                        {/if}
                    {else}
                        {if $check_quantity && $product->getNum()<1}
                            <span class="unobt pull-right" title="{t}Нет в наличии{/t}">{t}Нет в наличии{/t}</span>
                        {else}
                            {$product.dynamic_num}
                            {if $product->isOffersUse() || $product->isMultiOffersUse()}
                                <a data-url="{$router->getUrl('shop-front-multioffers', ["product_id" => $product.id])}" class="link link-more pull-right rs-in-dialog">{t}В корзину{/t}</a>
                            {else}
                                <a data-url="{$router->getUrl('shop-front-cartpage', ["add" => $product.id])}" class="link link-more pull-right rs-to-cart rs-no-show-cart" data-add-text="{t}Добавлено{/t}">{t}В корзину{/t}</a>
                            {/if}
                        {/if}
                    {/if}
                {/if}
                {/hook}
            </div>
            
            <div class="pull-right">
                <a class="ticket-favorite rs-favorite {if $product->inFavorite()}rs-in-favorite{/if}" data-title="{t}В избранное{/t}" data-already-title="{t}В избранном{/t}"></a>
                <!-- <a data-url="{$router->getUrl('catalog-front-oneclick',["product_id"=>$product.id])}" title="{t}В 1 клик{/t}" class="rs-buy-one-click rs-in-dialog">{t}В 1 клик{/t}</a> -->
            </div>
        </div>
    </div>
</div>

Подскажите пожалуйста как сделать вывод такого баннера чтоб он соответсвовал активной категории(наведённой). И из админки можно было менять эти картинки и ссылки.
https://s8.hostingkartinok.com/uploads/images/2019/08/717676b534bab374352f3c823bca411b.png

Спасибо.

Закусило Александр пишет:

Там возвращается массив картинок. Соответственно Вы можете проверить есть ли вторая:

{if $images.1} {* Проверяем есть ли 2-вторая *}
   {$image=$images.1} {* Присваиваем картинку в переменную *}
   <img src="{$image->getUrl(310,310,'xy')}" alt="">
{/if}

Не выводит ничего

Закусило Александр пишет:

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

Да это нужно

admin пишет:
{$product->fillProperty()|devnull}

Спасибо

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

{* Список категорий из 3-х уровней *}
{nocache}
{addjs file="libs/jquery.mmenu.min.js"}
{addcss file="libs/jquery.mmenu.css"}
{/nocache}

{if $dirlist}
<nav>
    <ul class="nav navbar-nav">
        {hook name="catalog-blocks-category-category:list-item" title="{t}Доплнительные пункты меню, в меню каталога{/t}"}
        {foreach $dirlist as $dir}
        <li class="{if $dir->getChildsCount()} t-dropdown{/if}" {$dir.fields->getDebugAttributes()}>
            {* Первый уровень *}
            <a {$dir.fields->getDebugAttributes()} href="{$dir.fields->getUrl()}">{$dir.fields.name}</a>

            {if $dir->getChildsCount()}
                {* Второй уровень *}
                <div class="t-dropdown-menu">
                    <div class="container-fluid">
                        <div class="t-nav-catalog-list__inner">
                            <div class="t-close"><i class="pe-2x pe-7s-close-circle"></i></div>
                            <div class="t-nav-catalog-list__scene">

                                {foreach $dir.child as $subdir}
                                    <div class="t-nav-catalog-list-block">
                                        <a {$subdir.fields->getDebugAttributes()} href="{$subdir.fields->getUrl()}" class="t-nav-catalog-list-block__header">{$subdir.fields.name}</a>

                                        {* Третий уровень *}
                                        {if $subdir->getChildsCount()}
                                        <ul class="t-nav-catalog-list-block__list">
                                            {foreach $subdir.child as $subdir2}
                                                <li><a {$subdir2.fields->getDebugAttributes()} href="{$subdir2.fields->getUrl()}" class="t-nav-catalog-list-block__link">{$subdir2.fields.name}</a></li>
                                            {/foreach}
                                        </ul>
                                        {/if}
                                    </div>
                                {/foreach}

                        </div>
                    </div>
                </div>
                </div>
            {/if}
        </li>
        {/foreach}
        {/hook}
    </ul>
</nav>


{* Мобильная версия каталога - 2 уровня *}
<nav id="mmenu" class="hidden">
    <ul>
        <li>
            {moduleinsert name="\Catalog\Controller\Block\SearchLine" hideAutoComplete=true}
        </li>
        {hook name="catalog-blocks-category-category:list-item-mobile" title="{t}Доплнительные пункты меню, в меню каталога - мобильная версия{/t}"}
        {foreach $dirlist as $dir}
            <li>
                <a href="{$dir.fields->getUrl()}">{$dir.fields.name}</a>
                {if $dir->getChildsCount()}
                    <ul>
                        {foreach $dir.child as $subdir}
                            <li>
                                <a href="{$subdir.fields->getUrl()}">{$subdir.fields.name}</a>
                            </li>
                        {/foreach}
                    </ul>
                {/if}
            </li>
        {/foreach}
        {/hook}
    </ul>
</nav>


{else}
    <div class="col-padding">
        {include file="%THEME%/block_stub.tpl"  class="text-center white block-category" do=[
            [
                'title' => t("Добавьте категории товаров"),
                'href' => {adminUrl do=false mod_controller="catalog-ctrl"}
            ]
        ]}
    </div>
{/if}
Закусило Александр пишет:
/modules/catalog/view/product_images.tpl

- должен быть

Да есть, там только выводит все картинки, а мне нужна только 2 если она есть в товаре

Закусило Александр пишет:

Посмотрите шаблон из модуль catalog - product_images.tpl.

Нет такого файла

Задача сделать такое меню, с выпадающими пунктами.
https://s8.hostingkartinok.com/uploads/images/2019/08/717676b534bab374352f3c823bca411b.png
При наведении должны отображаться также бренды выбранной основной категории.

Как такое реализовать?

Как вывести url второй картинки товара в шаблоне каталога?

Вставка этого кода

{$product->fillProperty()}

выводит надпись "Array", как от неё избавиться?

Подскажите как сделать чтобы на страницах которые находятся по адресу /catalog/* в хлебных крошках выводилась ссылка Каталог, ведущая на страничку /catalog/ ?

Подскажите как сделать чтобы на страницах которые находятся по адресу /catalog/* в хлебных крошках выводилась ссылка Каталог, ведущая на страничку /catalog/ ?

Спасибо. Подскажи как вывести в модуле вывода категорий моё меню? Пытаюсь вызвать {moduleinsert name="\Menu\Controller\Block\Menu" root="main-menu"} выводит только теги <nav>

Ярослав пишет:

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

{* Вставляет в шаблон блок Меню, в котором будут отображаться дочерние элементы от элемента с символьным идентификатором footmenu*}
{moduleinsert name="\Menu\Controller\Block\Menu" root="footmenu"}

2.В шаблон меню список категорий:

{* Вставляет в шаблон блок Список категорий *}
{moduleinsert name="\Catalog\Controller\Block\Category"}

Еще вариант:
3. просто решаете задачу в лоб, просто добавив ссылки, если их не очень много:

<ul class="topMenu" id="topMenu">
    {foreach $dirlist as $dir}
    <li class="item_{$dir@iteration}{if !empty($dir.child)} node{/if}" {$dir.fields->getDebugAttributes()}><a href="{$dir.fields->getUrl()}">{$dir.fields.name}</a>
        {if !empty($dir.child)}
            {$cnt=count($dir.child)}
            {$columns=1}
            {if $cnt>3}{$columns=2}{/if}
            {if $cnt>6}{$columns=3}{/if}
            {if $cnt>12}{$columns=4}{/if}
            {* Второй уровень *}
            <ul class="columns{$columns}">
                {foreach $dir.child as $subdir}
                <li><a href="{$subdir.fields->getUrl()}">{$subdir.fields.name}</a>
                    {if !empty($subdir.child)}
                    {* Третий уровень *}
                    <ul>
                        {foreach $subdir.child as $subdir2}
                        <li><a href="{$subdir2.fields->getUrl()}">{$subdir2.fields.name}</a></li>
                        {/foreach}
                    </ul>
                    {/if}
                </li>
                {/foreach}
            </ul>
        {/if}
    </li>
    {/foreach}
       <li class="second_item"><a href="/catalog/new/">Новинки <i class="fa fa-truck"></i></a>
       </li>
       <li class="second_item"><a href="/catalog/akcii/">Акции <i class="fa fa-gift"></i></a>
       </li>
       <li class="second_item"><a href="/catalog/last/">Последние поступления <i class="fa fa-clock-o "></i></a>
       </li>
       <li class="second_item"><a href="/feedback/">Отзывы <i class="fa fa-thumbs-o-up"></i></a>
       </li>
       
   </ul>