Вопросы

Компонент с github'а для создания AMP

Приветствую!
Потребовалось реализовать AMP страницы (modx revo).
Нашел на гитхабе компонент, но не в виде пакета.
Что сделал:
  • Установил TheSwitcherTemplate с репозитория
  • Закинул папку с фалами в core/components/
  • Создать вручную плагин и сниппет (вот какую роль играет сниппет вообще не полян, на мой взгляд в целом он не нужен).
Настроил, действительно получается подменять шаблоны.

Но проблема в том
Скаут
20 октября 2018, 19:35
modx.pro
824
0

Источник файлов для товаров при интеграции с ms2Gallery

Добрый день.
Подскажите, как решить такую проблему:
Для товаров minishop2 выбрана интеграция с ms2Gallery картинки импортированы, и в старых товарах верно подхватился источник файлов от minishop.
Но при создании нового товара у него всегда источник ms2Gallery Images. Или так и должно быть?
Андрей
20 октября 2018, 16:03
modx.pro
1 351
0

Как закрыть вопрос?

Скажите, а как тут закрыть вопрос после того как найден ответ. Ну или отметить его как Решенный?
Markus
20 октября 2018, 15:51
modx.pro
1 225
0

Верный id последней вставленной записи через lastInsertId при использовании bindValue

Всем доброго дня!

Столкнулся с задачей импорта из кастомного csv данных в свою таблицу, сделал через INSERT INTO… VALUES… ON DUPLICATE KEY UPDATE.
Работает, но долго, как по мне.

Для того, чтобы достать id последней вставленной или обновленной записи, пользуюсь $modx->lastInsertId($q), все показывает правильно: если запись была, то возвращает ее id, если она новая, то id вставленной записи.

Попробовал перейти на однократную подготовку запроса до перебора цикла, а дальше при переборе уже
$q->bindValue(1, $data[0]);
$q->bindValue(2, $data[1]);

$q->execute();

Все, на этом id последней вставленной записи ломается: возвращает id больше, чем последний AUTO_INCREMENT в таблице, при этом записи в таблице никакие не появляются.

Подскажите, кто знает — как ускорить вставку, при этом сохранив информацию о верном id?
Альберт
20 октября 2018, 13:30
modx.pro
1 021
0

При выборе доставки общая сумма во фронтэнде не меняется ms2

Имеется 2 варианта доставки
1 Самовывоз 1 руб
2 Доставка 300 руб
При открытии страницы оформления заказа чекбокс стоит на самовывоз и к сумме добавляется 1 руб
если менять вариант доставки то сумма на странице не обновляется…
в заказ при отправлении формы уходит все как надо, а вот во фронтенде не видно…
в чем может быть дело?

простите меня дуру грешную, только разбираюсь с ms2

и еще одна история:

в миникорзине не обновляются товарчики
только сумма и количество товаров… приходится обновлять страницу чтобы увидеть товар в ней
хотя аякс на нажатие кнопочки реагирует
Евгений
20 октября 2018, 01:05
modx.pro
1 086
0

Вопрос с админкой 2.2.13

Всем привет!
Достался сайт на старой версии 2.2.13, нужно было восстановить.
Роман
20 октября 2018, 00:28
modx.pro
1 278
0

Fenom не видит tv-поле в Tickets

Сайт на ModX Revo 2.6.5 и использует Tickets для организации статей. Добавил tv-поле с типом ввода и вывода Текст. Назначил его для шаблона, который отвечает за вывод статьи. Но почему-то fenon не видит это поле.

{if $_modx->resource.tv_mt} Yes {else} No {/if}
Всегда выводится No. $_modx->resource['tv_mt'] — такой вариант написания тоже не работает. В чем может быть загвоздка?
Markus
19 октября 2018, 18:14
modx.pro
1 817
0

Применение промокода к заказу в админке

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

Версии компонентов, на которых тестировалось решение:
На более ранних версиях не тестировал. Если пробуете, то делайте на свой страх и риск.
miniShop2 2.4.15-pl
msPromocode 1.3.11-beta
Кирилл Киселев
19 октября 2018, 18:09
modx.pro
1
1 436
+2

Сниппет подсчета кол-ва заполненных TV с разбитием на колонки

Всем привет!

Написал небольшой сниппет, который считает количество заполненных TV и разбивает их на несколько столбцов.

<?php
//передаваемые в сниппет параметры
//id - id ресурса с которого берем нужные поля
//tvInput - id полей для проверки, через запятую
//cols_count - количество выводимых колонок
//tpl - шаблон вывода
$id = $id;
$tvInput = explode(',',$tvs);
$cols_count = $cols;
$tpl = $tpl;

if (!isset($tvInput)) { return false; } // Если не указаны TV, прекращаем выполнение кода
if (!isset($id)) { $id = $modx->resource->get('id'); } // По-умолчанию текущий ресурс
if (!isset($cols_count)) { $cols_count = 2; } // Количество колонок по-умолчанию
if (!isset($tpl)) { $tpl = 'objectParams'; } // Шаблон по-умолчанию

$criteria = $modx->newQuery('modTemplateVarResource',[
              'contentid' => $id,
              'tmplvarid:IN' => $tvInput,
              'value:!=' => ''
            ]);
$criteria->sortby('tmplvarid');
$docs = $modx->getCollection('modTemplateVarResource', $criteria);

//выводим по колонкам
//default_elems_at_col - количество элементов в колонке
$output = '';
$count = count($docs);
$default_elems_at_col = floor($count / $cols_count);
$continue_default = false;

/* 
  как работает:
  например: 52 элемента на 5 колонок
  $default_elems_at_col - количество элементов в колонке по умолчанию floor(52 / 5) = 10
  остается 2 элемента (52 - 50), которые необходимо распределить по колонкам, т.е.
  $real_default_elems_at_col = 11 (для первых двух колонок)
  $continue_default - переменная, чтобы прекратить лишние вычисления на итерациях, когда лишних элементов не осталось
*/
$output .= '<div class="params params_cols-' . $cols_count . '">';
for ($i = 0; $i < $cols_count; $i++) {
  if (!$continue_default) {
    $real_default_elems_at_col = $default_elems_at_col + 1;
    if ( ($real_default_elems_at_col * ($i + 1) + ($cols_count - $i - 1) * $default_elems_at_col) > $count ) {
      $real_default_elems_at_col = $default_elems_at_col;
      $continue_default = true;
    }
  } 

  $output .= '<div class="params__column">';
  for ($j = 0; $j < $real_default_elems_at_col; $j++) {
    $current_doc = current($docs)->toArray();
    $tvId = $current_doc["tmplvarid"];
    $value = $current_doc["value"];
    
    $output .= $modx->getChunk($tpl, [
                'tvId' => $tvId,
                'value' => $value
               ]);

    //если следующего элемента нет - выходим из цикла
    if (!next($docs)) {
      break;
    }
  }
  $output .= '</div>';
}
$output .= '</div>';
return $output;
Минимальный вызов:
[[!snippet? &tvs=``]]
Т.к. с php пока на Вы, буду рад замечаниям и комментариям по данному решению.
В остальном сниппет полностью рабочий.

P.S.: чуть позже выложу похожее решение, но уже для вывода ссылок на ресурсы.
Евгений
19 октября 2018, 17:00
modx.pro
869
0

mFilter2 альтенативные обертки для tpls

Всех приветствую!

Кто-нибудь сталкивался с задачей установки разных оберток в mFilter2?

Подключаю чанки оформления одного результата так

&tpls=`catalogGridTpl,catalogTableTpl`
При переключении вида каталога все разваливается, отрабатывает только при перезагрузке страницы

Они, естественно, отрабатывают, но в первом случае верстка на div, во втором табличная, вторые результаты необходимо обрамить таблицей, что бы получилось, примерно так

<div id="mse2_result">
<table class="">
[[+result]] оформление catalogTableTpl
</table>
</div>
В документации не нашел ничего на вроде
&tplsOuter=`outer1,outer2`
&tplsWrapper=`outer1,outer2`
Также, пытался перехватить текущую обертку результата через $(document).on('mse2_load', function(e, data) {, но в выводе не получилось обнаружить подгружаемый шаблон
Вадим Раевский
19 октября 2018, 13:49
modx.pro
1
1 387
0