Вопросы

Сложная конструкция в &where с ТВ-параметрами

Добрый день.
Что-то никак не могу разобраться как сделать сложный запрос через &where. Прошу подсказать.

Задача:
Мне нужно получить список ресурсов, у которых:
1. template = 3
2. goodSfera LIKE '%#134#%'
3. goodFormFactor LIKE '%#141#%'
4. goodAdv LIKE '%#123#%' OR goodAdv LIKE '%#127#%' OR goodAdv LIKE '%#128#%'

goodSfera, goodFormfactor и goodAdv — это ТВ-параметры, количество goodAdv может быть до 10 условий.

Как должен выглядеть &where-запрос? Вот так не хочет работать, точнее выдает без учета фильтра:
{"template":3,"goodSfera:LIKE":"%#134#%","goodFormfactor:LIKE":"%#141#%","goodAdv LIKE '#123#' OR goodAdv LIKE '#127#' OR goodAdv LIKE '#128#'"}

Я полагаю, что ошибка связана с goodAdv конструкцией, потому что без него фильтр работает корректно.

В конечном счете я хочу получить вот такой запрос:
SELECT ... WHERE goodSfera LIKE '%#134#%' AND goodFormFactor LIKE '%#141#%' AND (goodAdv LIKE '%#123#%' OR goodAdv LIKE '%#127#%' OR goodAdv LIKE '%#128#%')
Спасибо за подсказки.
Михаил
19 июля 2017, 12:37
modx.pro
1 349
0

Меняется old_price при изменении price в плагине

При изменении цены через плагин (события: msOnGetProductPrice, msOnBeforeAddToCart, msOnAddToCart) перезаписывается значение поля old_price значением price (до изменения). Как сделать так, чтобы значение не изменялось или записать в него свое значение?

Плагин:
<?php
switch ($modx->event->name) {
    case 'msOnGetProductPrice':
        if ($modx->context->key == 'mgr') {
            return '';
        }
        $currencyrate = $modx->getService('currencyrate', 'currencyrate',
            $modx->getOption('currencyrate_core_path', null,
                $modx->getOption('core_path') . 'components/currencyrate/') . 'model/currencyrate/', $scriptProperties);
        if (!($currencyrate instanceof currencyrate)) {
            return '';
        }
        $currency = $currencyrate->currency;
        if ($currency == $modx->getOption('currencyrate_currency')) {
            return '';
        }
        $list = $currencyrate->getList();
        
	$values = & $modx->event->returnedValues;
        
        if (!isset($modx->event->returnedValues['price'])) {
            $modx->event->returnedValues['price'] = $price;
        }
        $price = &$modx->event->returnedValues['price'];
        $new_price = ($price * $list[EUR]) / $list[$currency];
        if ($new_price !== false) {
            $price = $new_price;
        }
        
        break;
}
Игорь Терентьев
19 июля 2017, 10:39
modx.pro
2 364
0

Formit. Отправка файлов

Не присылает в письме вложения (файл).
Форма простая:
[[!FormIt?
&hooks=`email, FormItSaveForm`
&emailTpl=`tpl.mail.anketa`
&emailSubject=`Новая анкета`
&emailTo=`***@yandex.ru`
&emailFromName=`***`
&validate=`name:required,surname:required,city:required`
&errTpl=`
<span class="error">[[+error]]</span>`
&allowFiles=`1`
]]

<form id="form-ankut" method="post" action="[[~[[*id]]]]" enctype="multipart/form-data">

    <div class="form-head">Анкета водителя</div>
    <div class="field-1">
    <label for="field-id119587">Имя <span class="required">*</span></label>
    <input id="field-id119587" name="name" type="text" placeholder="" value="">
    </div>
    <div class="field-2">
    <label for="field-id81384">Фамилия <span class="required">*</span></label>
    <input id="field-id81384" name="surname" type="text" placeholder="" value="" >
    </div>
    <div class="field-3">
    <label for="field-id6286">Город прописки  <span class="required">*</span></label>
    <input id="field-id6286" name="city" type="text" placeholder="" value="" >
    </div>
    <div class="form-group">
      <label for="upload">Прикрепить файл</label>
      <input type="file" name="upload">
      <p class="error_upload">[[+fi.error.upload]]</p>
    </div>
    <div class="field-23 buttonform">
    <input type="submit" value="Отправить">
    </div>
    <div class="error_form">[[!+fi.validation_error_message:notempty=`<p>[[!+fi.validation_error_message]]</p>`]]</div>
</form>
Письмо приходит, но без вложений.
В админке отправленная форма такая: joxi.ru/82QE3ZKH1jxg62

Проверил извлекает ли хотя бы название файла. Через плейсходер название файла выводит: joxi.ru/nAyo3nKcXYzMym

В чем проблема? Куда копать?
Артур
19 июля 2017, 09:37
modx.pro
1
2 436
0

Редирект URL со слэшем в конце на без слэша

Это не вопрос, а решение.
Ниже код плагина, который решает задачу: редирект URL со слэшем в конце на URL без слэша в конце.
Гугл/яндекс в течение часа дал ответ на обратную задачу (редирект без слэша в конце на со слэшем).
Делюсь доработкой с надеждой, что это вылезет в топ и поможет сохранить время следуюшим поколениям :)
Также сделаны настройки по пунктам 1-6 отсюда.

Плагин настраивается на событие OnLoadWebDocument:

<?php
if ($modx->event->name == 'OnLoadWebDocument') {
  $request = $_SERVER['REQUEST_URI'];
  $params = '';
  if (strpos($request, '?') !== false) {
  	list($request, $params) = explode('?', $request);
  }
  $uri = $request;
  if(!empty($uri) && strpos($uri, '.') === false && substr($uri, -1, 1) == '/') {
    $uri = substr($uri, 0, -1);
    if (!empty($params)) {
      $uri .= '?' . $params;
    }
    $modx->sendRedirect($uri, array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
  }
}
Мартин Очоа
18 июля 2017, 21:19
modx.pro
5
6 494
+1

URL картинки и включение multiupload в MIGX

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

Попытался сделать по данному туториалу мульти-загрузку картинок в ресурс. Результат не порадовал: картинки сохранялись в корень, возникали траблы с загрузкой, а потом и вовсе ошибка 500. Но была модная мультизагрузка.
Есть более каноничные туториалы, по ним всё работает, но там не рассказывают как сделать мультизагрузку, где же включить эту опцию.
Также остро хочется вывод URL для добавленного изображения, что бы его можно было оперативно помещать через копипаст в визуальный редактор (CKE).

Заранее спасибо!
Серый
18 июля 2017, 21:13
modx.pro
1 146
0

Карточка акций посреди вывода товаров в mFilter2

Требуется, чтобы посреди вывода результатов работы фильтра с помощью mFilter2 находилась карточка акций.
То есть допустим 3 товара и потом эта карточка, которая будет постоянно висеть, а потом остальные товары. Можно ли как-то такое реализовать? Или банально поделить результаты вывода [[+filters ]]а между ними чанк с карточкой.?
Евгений
18 июля 2017, 19:05
modx.pro
1 797
0

Некорректный вывод плейсхолдера на кириллице

Обнаружилась проблема, а именно вывод кавычек `` при выводе плейсхолдера:

— создан чанк filter.range:
<div class="filter-option">
    <div class="filter-option-title">[[+range_title]]</div>
    <div class="slider-wrapper">
        <div class="slider" data-min="[[+min]]" data-max="[[+max]]"></div>
    </div>
    <div class="filter-option-from">
        от <input type="text" data-index="0">
    </div>
    <div class="filter-option-to">
        до <input type="text" data-index="1">
    </div>
</div>
— вызов чанка:
[[$filter.range?
         &min=`10`
         &max=`5000`
         &range_title=`Вес, кг`
     ]]
— итоговый HTML:
<div class="filter-option">
    <div class="filter-option-title">`Вес, кг`</div>
    <div class="slider-wrapper">
        <div class="slider ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content" data-min="10" data-max="5000"><div class="ui-slider-range ui-corner-all ui-widget-header" style="left: 0%; width: 100%;"></div><span tabindex="0" class="ui-slider-handle ui-corner-all ui-state-default" style="left: 0%;"></span><span tabindex="0" class="ui-slider-handle ui-corner-all ui-state-default" style="left: 100%;"></span></div>
    </div>
    <div class="filter-option-from">
        от <input type="text" data-index="0" placeholder="10">
    </div>
    <div class="filter-option-to">
        до <input type="text" data-index="1" placeholder="5000">
    </div>
</div>
В случае &range_title=`Some english text` проблемы нет, &range_title=Вес, кг (без кавычек) также нормальный вывод.
MODX 2.5.7
Кто-нибудь сталкивался с данной проблемой?

В итоге, отвечу сам себе:
«в настройках сервера должно быть что-то вроде mb_func_overload=0. Смотрите в php.ini
если там не ноль, кириллица в сниппетах валится»

В процессе настройки одного из сайтов на хостинге эта переменная была выставлена в 2.
Bitrix, мать его…
Сергей С.
18 июля 2017, 16:54
modx.pro
1 015
0

Не работает Fenom при добавлении GoogleAnalytics

Здравствуйте!
После добавление GoogleAnalytics Fenom на странице стал выводится в виде обычного текста.

Помогите установить взаимосвязь и как устранить проблему?

Журнал ошибок:
[2017-07-18 14:51:24] (ERROR @ /home/s8874/www/core/components/pdotools/model/pdotools/pdotools.class.php : 942) Unexpected tag 'i' in 7ad30dd39c556f9a0b5781454677bc41 line 438, near '{i[' <- there
Код счётчика:
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-********-1', 'auto');
  ga('send', 'pageview');

</script>
Илья
18 июля 2017, 12:04
modx.pro
2 019
0

Синхронизация таблицы (Ext.js Grid)

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

Пахнет сокетами, может уже есть существующие решение?
Антон
18 июля 2017, 11:35
modx.pro
651
0

301 редирект Nginx

Здравствуйте!
Подскажите, пользуюсь хостингом modhost
Сайт претерпел большие изменения — дизайн, структура и переезд на https
Возник вопрос о правильном 301 редиректе

Старый адрес:
http://www.site.ru/old.html
Новый:
https://site.ru/new

Нужно создать постоянный 301 редирект

Голову сломал, пока читал инструкцию Nginx
Боюсь напортачить
Илья
18 июля 2017, 08:55
modx.pro
979
0