Всего 123 794 комментария

Артур Шевченко
04 сентября 2023, 21:13
0
В описании ошибки должна быть ссылка на файл и сроку в нём.
Dan
Dan
04 сентября 2023, 17:02
0
Это же страница товара, а не карточка. И я ведь написал в комменте, почему вы его не прочитали? Нужно выводить не [[+article]] в шаблоне, ибо это плейсхолдер, а {$_modx->resource.article}
Артур Шевченко
04 сентября 2023, 16:58
0
Вообще мне кажется, что правильнее показывать уведомление об успешной отправке не в «тосте», а в самой форме.
Дизайнеры зачастую даже стили для отображения ошибок не рисуют, что уж говорить об успешной отправке, а у всплывашек из коробки приятный дизайн.

Кстати, компонент сессии использует?
Нет, не использует, но использует куки.

Есть ли стандартный шаблон для писем?
Есть три шаблона писем: для обычных форм и опросов, для подтверждения email, для сброса пароля.
Константин
04 сентября 2023, 16:52
0
Товар выводим шаблоном
<!DOCTYPE html>
<html lang="ru">
  <head>
    {$_modx->getChunk('meta')}
  </head>
  <body class="common-home res layout-4">
    <div id="wrapper" class="wrapper-fluid banners-effect-5">
      <!-- Header Container  -->
      <header id="header" class=" typeheader-4">
        {$_modx->getChunk('header')}
      </header>
      <!-- //Header Container  -->
      <!-- Main Container  -->
      <div class="main-container container">
        {$_modx->runSnippet('!pdoCrumbs', [
        'showHome' => '0',
        'exclude' => '24',
        'tplWrapper' => '@INLINE 
        <ul class="breadcrumb" itemscope="" itemtype="http://schema.org/BreadcrumbList">{$output}</ul>
        ',
        'tplHome' => '@INLINE 
        <li itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
          <a itemprop="item" title="{ $menutitle }" href="{$link}">
            <i class="fa fa-home"></i> <span itemprop="name" class="crumb-item">{$menutitle}</span>
            <meta itemprop="position" content="{ $idx }">
          </a>
        </li>
        ',
        'tplCurrent' => '@INLINE 
        <li class="mr-2" itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
          <span itemprop="item" class="current">
            <span itemprop="name">{$menutitle}</span>
            <meta itemprop="position" content="{ $idx }">
          </span>
        </li>
        ',
        'tpl' => '@INLINE 
        <li itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
          <a itemprop="item" title="{ $menutitle }" href="{$link}">
            <span itemprop="name" class="crumb-item">{$menutitle}</span>
            <meta itemprop="position" content="{ $idx }">
          </a>
        </li>
        ',
        ])}
        
          {$_modx->runSnippet('!addLooked', [
          'templates' => '3',
          'limit' => '15',
          ])}
          <div class="row">
              
          <div id="content" class="col-md-9 col-sm-8">
            <div class="product-view row">
              <div class="left-content-product">
                <div class="content-product-left class-honizol col-md-5 col-sm-12 col-xs-12">
                  {$_modx->runSnippet('!msGallery', [
                  'tpl' => 'msGalleryProductTpl',
                  ])}
                  {if $_modx->resource.new?}
                  <span class="abel-product label-new">{'ms2_frontend_new' | lexicon}</span>
                  {/if}
                  {if $_modx->resource.popular?}
                  <span class="label-product label-sale">{'ms2_frontend_popular' | lexicon}</span>
                  {/if}
                  {if $_modx->resource.favorite?}
                  <span class="label-product label-new">{'ms2_frontend_favorite' | lexicon}</span>
                  {/if}
                </div>
                <div class="content-product-right col-md-7 col-sm-12 col-xs-12"  itemtype="http://schema.org/AggregateOffer" itemprop="offers" itemscope>
                  <meta itemprop="category" content="{$_modx->resource.parent | resource: "pagetitle"}">
                  <meta itemprop="offerCount" content="1">
                  <meta itemprop="price" content="{$price | replace:" ":""}">
                  <meta itemprop="lowPrice" content="{$price | replace:" ":""}">
                  <meta itemprop="priceCurrency" content="RUR">
                  <div class="title-product">
                    <h1>{$_modx->resource.introtext ?: $_modx->resource.pagetitle}</h1>
                  </div>
                  <!-- Review ---->
                  <form class="form-horizontal ms2_form" method="post">
                    <input type="hidden" name="id" value="[[*id]]"/>
                    <div class="product-label" itemprop="offerDetails" itemscope="" itemtype="http://data-vocabulary.org/Offer">
                      <div class="product_page_price price" itemprop="offers" itemscope="" itemtype="http://schema.org/Offer">
                        <span class="price-new product-price" itemprop="price">{$price} {'ms2_frontend_currency' | lexicon}</span>
                        {if $old_price != 0}
                        <span class="old_price price-old">[[+old_price]] [[%ms2_frontend_currency]]</span>
                        {/if}
                        <meta itemprop="price" content="[[+price]]">
                        <meta itemprop="priceCurrency" content="RUB">
                        <meta itemprop="priceValidUntil" content="[[!+nowdate:default=`now`:strtotime:date=`%Y-%m-%d`]]">
                        <link itemprop="availability" href="http://schema.org/InStock">
                      </div>
                      {if $_modx->resource.available == 1}
                      <div class="stock"><span class="status-stock">В наличии</span></div>
                      {/if}
                      {if $_modx->resource.available == 2}
                      <div class="stock"><span class="status-stock">Нет в наличии</span></div>
                      {/if}
                      {if $_modx->resource.available == 3}
                      <div class="stock"><span class="status-stock">Под заказ</span></div>
                      {/if}
                    </div>
                    <div class="product-box-desc">
                      <div class="inner-box-desc">
                        [[getMarksAndModels]]
  
                        [[*longtitle:notempty=`
                        <div class="price-tax"><span>Примечание:</span> <span class="article">[[*longtitle]]</span></div>
                        `:else=``]]

{if $parent != 31 && $id != 31 && $parent != 29 && $id != 29}
  <div class="reward"><span>Артикул:</span> <span class="item">[[+article]]</span></div>
{/if}

                        [[-*article:gt=`0`:then=`<span>Артикул:</span> <span class="item">[[*article]]</span>`:else=``]]
                        [[msProductOptions?tpl=`msProductOptionsTpl` &onlyOptions=`orign_n`]]
                        [[msProductOptions?tpl=`msProductOptionsTpl` &onlyOptions=`dop_n`]]
                        [[+vendor.name:gt=`0`:then=`
                        <div class="price-tax"><span>Производитель:</span> <span class="article">[[+vendor.name]]</span></div>
                        `:else=``]]
                        [[+vendor.country:gt=`0`:then=`
                        <div class="price-tax"><span>Страна производителя:</span> <span class="article">[[+vendor.country]]</span></div>
                        `:else=``]]
                        <div class="vendor-status">
                          <div class="price-tax">
                            <span>Статус производителя:</span>
                            <span class="article">
                            {if $_pls['vendor.description']?}{$_pls['vendor.description']}{else}Неоригинал{/if}
                            </span>
                          </div>
                          {if $_pls['vendor.logo']?}
                          <div class="vendor-logo">
                            <img src="{$_pls['vendor.logo']}" title="{$_pls['vendor.description']}" class="img-responsive" data-toggle="tooltip"/>
                          </div>
                          {else}
                          <div class="vendor-logo">
                            <img src="assets/images/vendors/no orign_2.png" title="Неоригинал" class="img-responsive" data-toggle="tooltip"/>
                          </div>
                          {/if}
                        </div>
                        [[msProductOptions?tpl=`msProductOptionsTpl` &onlyOptions=`synonym`]]
                      </div>
                    </div>
                    <div id="product">
                      <div class="box-info-product">
                        <button type="submit" class="btn btn-mega btn-lg" name="ms2_action" value="cart/add">
                        {'ms2_frontend_add_to_cart' | lexicon}
                        </button>
                        <div class="input-group">
                          <input type="number" name="count" id="product_price" class="form-control col-md-6" value="1"/>
                          <div class="input-group-append">
                            <span class="input-group-text">{'ms2_frontend_count_unit' | lexicon}</span>
                          </div>
                        </div>
                        [[!msOneClick?
                        &tplBtn=`msoneclickBtnTpl`
                        &tplForm=`msOneClickFormTpl`
                        ]]
                      </div>
                    </div>
                </div>
                <!-- end box info product -->
                </form>
              </div>
            </div>
          </div>
          
          <div class="producttab ">
            <div class="tabsslider horizontal-tabs  col-xs-12">
              <ul class="nav nav-tabs">
                <li class="active"><a data-toggle="tab" href="#tab-1">Описание</a></li>
                <li class="item_nonactive"><a data-toggle="tab" href="#tab-2">Доставка и оплата</a></li>
                <li class="item_nonactive"><a data-toggle="tab" href="#tab-review">Задать вопрос</a></li>
              </ul>
              <div class="tab-content col-xs-12">
                <div id="tab-1" class="tab-pane fade active in">
                  [[*content:default=`
                  <h2>[[*description]] в наличии в магазине Рио</h2>
                  `]]
                </div>
                <div id="tab-2" class="tab-pane fade">
                  [[#41.content]]
                </div>
                <div id="tab-review" class="tab-pane fade">
                  <h3>Запрос по VIN, задать вопрос</h3>
                  [[#815.content]]
                  [[!AjaxForm? 
                  &form=`questionFormTpl` 
                  &snippet=`FormIt` 
                  &hooks=`validate,FormItSaveForm,email`
                  &formName=`Сообщение с сайта`
                  &emailSubject=`Сообщение с сайта`
                  &emailTo=`ekbsanteh@mail.ru`
                  &emailFrom=`no-reply@ekb-santeh.ru`
                  &emailTpl=`tpl.email`
                  &validate=`name:minLength=^2^`
                  &fieldNames=`name==Имя,phone==Телефон,pageurl==Страница отправки,vin==VIN,email==Email,city==Город,marka==Марка,model==Модель,year==Год выпуска,upload==Файл`
                  &validationErrorMessage=`В форме содержатся ошибки!`
                  &successMessage=`Сообщение успешно отправлено`
                  ]]
                </div>
              </div>
            </div>
          </div>
          
          [[!msProducts?
          &tpl=`recentlyViewedTpl`
          &includeThumbs=`medium`
          &parents=`0`
          &link=`1`
          &master=`[[*id]]`
          &wrapIfEmpty=`0`
          &tplWrapper=`@INLINE
          <div class="related titleLine products-list grid module">
            <h3 class="">Аналоги:</h3>
            <div class="releate-products yt-content-slider products-list" data-rtl="no" data-loop="yes" data-autoplay="no" data-autoheight="no" data-autowidth="no" data-delay="4" data-speed="0.6" data-margin="30" data-items_column00="4" data-items_column0="4" data-items_column1="3" data-items_column2="2" data-items_column3="2" data-items_column4="1" data-arrows="yes" data-pagination="no" data-lazyload="yes" data-hoverpause="yes">
              [[+output]]
            </div>
          </div>
          `]]
        
        <aside class="col-sm-4 col-md-3 content-aside" id="column-left">
          [[!looked?
          &limit=`3`
          &tpl=`lookedViewedTpl`
          &tplOuter=`lookedOuterMyTpl`
          &includeThumbs=`medium`
          ]]
          <!--<div class="module banner-left hidden-xs ">
            <div class="banner-sidebar banners">
              <div>
                <a title="Banner Image" href="#"> 
                <img src="assets/images/slider/banner-sidebar.jpg" alt="Banner Image"> 
                </a>
              </div>
            </div>
          </div>-->
          
        </aside>
        
        </div>
      </div>
    </div>
    <!--Middle Part End-->
    <!-- //Main Container -->
    {$_modx->getChunk('footer')}
    <!-- //end Footer Container -->
    </div>
    <!-- End Color Scheme
      ============================================ -->
    {$_modx->getChunk('scripts')}
  </body>
</html>
Dan
Dan
04 сентября 2023, 16:43
0
Во первых, прочитайте тщательно мой коммент выше, где я указал ссылку на документацию и поймете, где у вас ошибка.
Во вторых, покажите вызов сниппета, которым выводятся карточки, код чанка карточки.
Константин
04 сентября 2023, 16:32
0
В карточке пробую так:
{if $parent != 31 && $id != 31 && $parent != 29 && $id != 29}
  <div class="reward"><span>Артикул:</span> <span class="item">[[+article]]</span></div>
{/if}
И так:
{if $_modx->resource.parent != 31 && $_modx->resource.id != 31 && $_modx->resource.parent != 29 && $_modx->resource.id != 29}
  <div class="reward"><span>Артикул:</span> <span class="item">{$article}</span></div>
{/if}
Все равно выводит артикул
Dan
Dan
04 сентября 2023, 16:08
0
Я же написал в комменте. В самом первом моем комменте и комменте Артура, условие для страницы товара. Для карточки товара, если она выводится сниппетом, условие будет то, что я написал в последнем комменте
Константин
04 сентября 2023, 16:07
0
А как в карточке товара реализовать данное условие?
Dan
Dan
04 сентября 2023, 15:44
0
Вам бы документацию Fenom почитать.
{$_modx->resource.id} и подобные этому вызовы обращаются к полям текущего ресурса. Поэтому в чанке будет так:
{if $parent != 31 && $id != 31}
  <div class="reward"><span>Артикул:</span> <span class="item">{$article}</span></div>
{/if}
И кстати:
1) Не смешивайте стандартный синтаксис и fenom. Раз пишите в fenom, пишите все в нем. Т.е. не
[[+article]]
, а
{$article}
2) По-моему в первом условии должно быть не
[[+article]]
, а
{$_modx->resource.article}
Константин
04 сентября 2023, 15:22
0
Спасибо большое, так работает, а как в карточке товара реализовать данное условие? Скопировал — не срабатывает
Николай Савин
04 сентября 2023, 15:10
0
Это какого ж размера должен быть монитор, чтобы тост не заметить
Артур Шевченко
04 сентября 2023, 15:00
+1
А так
{if $_modx->resource.parent != 31 && $_modx->resource.id != 31}
  <div class="reward"><span>Артикул:</span> <span class="item">[[+article]]</span></div>
{/if}
Артур Шевченко
04 сентября 2023, 14:58
+1
Ставлю рубль против 1000, что у вас некорректная html-разметка.
Константин
04 сентября 2023, 14:54
0
Так выводится артикул везде и в родителе 31 и в подкаталогах
Dan
Dan
04 сентября 2023, 14:25
+1
что бы у всех подкаталогов родителя 31 скрывался артикул
При этом код у вас написан наоборот. Наверное нужно что-то в этом роде:
{if $_modx->resource.parent != 31 || $_modx->resource.id != 31}
  <div class="reward"><span>Артикул:</span> <span class="item">[[+article]]</span></div>
{/if}
Dan
Dan
04 сентября 2023, 14:13
0
Вы хоть свой вызов и чанки покажите
deleted
04 сентября 2023, 12:28
0
Надо будет попробовать)

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

Кстати, компонент сессии использует? Была задача встроить форму через iframe, такая форма не работала из-за сессий. Пришлось переписывать (использовал своё решение, не ajaxform) чтоб данные в кэше хранились.

Есть ли стандартный шаблон для писем?
Konstantin
03 сентября 2023, 17:34
0
Разобрался сам, увидеть нормальную работу плагина можно только при создании нового ресурса, итак, нужно заполнить все поля ресурса, сохранить, затем во вкладке Локализации появится уже созданный пункт для основного языка, остается лишь перевести остальные. Затем весь контент можно будет выводить с помощью методов автора
Pavel Kravchuk
03 сентября 2023, 13:36
0
Благодарю всех за ответы.
Действительно в ClientConfig используется setOption для переопределения системных параметров. Правда он вызывается довольно часто, каждый раз при инициализации modx. К сожалению другого метода не нашел. Думал через кеш решить этот вопрос, но секюрные данные хранить в кеше не хорошо, а установка и сохранение системных настроек приводит к появлению их в БД
$setting = $modx->getObject('modSystemSetting', 'mail_smtp_pass');
                $setting->set('value',  $_ENV['RB_SMTP_KEY']);
                $setting->save();
Николай Савин
03 сентября 2023, 13:15
1
0
Попробуйте метод
$modx->setOption();