Юрий Фомин

Юрий Фомин

С нами с 08 апреля 2014; Место в рейтинге пользователей: #74

Localizator, модификаторы для получения переводов

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

1. создаем плагин…
Юрий Фомин
01 декабря 2020, 18:41
modx.pro
10
1 411
+15

Как удалить тикеты программно

Возникла задача массово удалить полностью все тикеты ( 13000+ ) с сайта.
Пока получилось их только обозначить как удаленные и при попытке почистить корзину, выдает ошибку и ни в какую не желает их удалять. По одиночке все ок, но вот массово, это жесть, чугун, цирконий… в общем никак )).

В логах при попытке очистки корзины:
[2019-01-18 11:26:19] (ERROR @ /home/radio/www/bazcore/xpdo/om/xpdoobject.class.php : 1452) Error 23000 executing statement:
INSERT INTO `IT64j4a2xBPy_tickets_totals` (`tickets`, `comments`, `views`, `stars`, `rating`, `rating_plus`, `rating_minus`) VALUES (0, 0, 0, 0, 0, 0, 0)
Array
(
    [0] => 23000
    [1] => 1062
    [2] => Duplicate entry '0-' for key 'PRIMARY'
)
P.S.
если через пол года увидите статус этой заметки «выполнен», значит удалял вручную. Спасите!!! )))
Юрий Фомин
18 января 2019, 14:29
modx.pro
1 260
0

modPHPMailer ложит сервер на ломатки 500

Юрий Фомин
11 января 2019, 14:16
modx.pro
836
0

Не работают ссылки поле переноса сайта.

После переноса сайта на хостинг заказчика пропали все ссылки. и ни одна страница кроме главной не открывается, в ответ:

Not Found
The requested URL /about-us was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Меню, как и вывод ресурсов генерируется, но ни одной ссылки нет, href="" — пустой.
Пробовал перенести на модхост (биплатный тариф), аналогичная ситуация. В итоге накопал что проблема в базе, не верно отрабатывают ключи. Таблицы сделаны были в InnoDB.

Помогите решить проблему, так как уже не первый сайт с такой проблемой, а инфы по ремонту совсем мало.
Заранее спасибо.
Юрий Фомин
10 октября 2018, 17:10
modx.pro
1 173
0

фильтрация товаров и по тв-шкам и по доп. опциям ( msSearch2 )

при попытке одновременно фильтровать по опциям товаров (minishop2 2.4.14 & msearch2 1.11.1) и по тв-шкам ничего не выводит. в логах:

...components/pdotools/model/pdotools/pdofetch.class.php: 172) [pdoTools] Error 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'TVpopularity`.`value` AS DECIMAL(13,3))` desc LIMIT 9' at line 1

снипет:

'includeTVs'=>'popularity',
'leftJoin'=>'{
«Diameter»: {
«class»: «msProductOption»,
«on»: «Diameter.key = \'diameter\' and Diameter.product_id = msProduct.id»
}
}',
'sortAliases'=>'{«diameter»:«Diameter»}',
'aliases'=>'diameter|value==diameter'
'sort'=>'diameter:desc,tv|popularity:desc',

отдельно все фильтрует отлично, но когда разом то ничего не выводит. Подскажите кто может с таким сталкивался, как можно наладить вывод товаров с фильтрацией и по доп. опциям и по тв-шкам?

спасибо.
Юрий Фомин
17 сентября 2018, 11:34
modx.pro
742
0

Поиск нужного блока среди страниц пагинации (pdoPage).

Подскажите пожалуйста, каким образом можно получить ссылку на нужный, к примеру коммент (лежит не на странице пагинации), среди страниц пагинации (pdoPage) и естественно потом на него попасть (уже на самой странице с пагинацией)? может у кого промелькнет светлая мысль, поделитесь.
Юрий Фомин
07 сентября 2018, 15:19
modx.pro
2
1 009
0

Автосоздание ресурсов в контекстах-дублях

Задача:
Один сайт, несколько городов, один и тот же контент у всех, но разные данные (переменные).
Поначалу думал использовать Babel, но с ним не все так просто. Поэтому пришлось писать самому при поддержке неравнодушных Максима Кузнецова и Сергея Шлокова.

Решение:
  • Плагин для переключения контекстов (от Василия Наумкина)
  • Плагин на события: OnDocFormSave, OnDocFormDelete.
  • Снипет для вывода контекстов в качестве меню
  • Чанк вывода меню контекстов
  • Снипет для подтягивания полей ресурсов-оригиналов (чтоб не дублировать в базу весь контент к примеру)
  • Js-скрипт для переключения контекстов
Итак приступим…
Юрий Фомин
30 января 2017, 12:13
modx.pro
16
6 416
+11

Вывод заказов пользователя и товаров заказа

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

1) Снипет для вывода заказов:
<?php
// снипет выводит заказы текущего пользователя

$user_id = $modx->user->get('id');
$tpl = $modx->getOption('tpl',$scriptProperties,'tpl.order');

// подхватываем заказы текущего пользователя
$q = $modx->newQuery('msOrder', array('user_id' => $user_id));
$results = $modx->getCollection('msOrder', $q);

// выводим или чанками или предупреждением что заказов пока нет
foreach ($results as $result) {
  if ( $result ) {
    $resultArray = $result->toArray();
    $output .= $modx->getChunk($tpl,$resultArray);
  } else {
    $output = 'У вас пока еще нет заказов.';
  }
}
return $output;
и соответственно чанк tpl.order (на феноме):
<div>
  <div> Заказ <span>{$_pls['num']}</span> от <span>{$_pls['createdon']}</span> года</div>
  <div>
    {$_modx->runSnippet('!msOrdersProducts', ['order'=>$_pls['id']])}
  </div>
</div>

2) Снипет вывода товаров заказа:
<?php
// выводит товары заказа.
$tpl = $modx->getOption('tpl',$scriptProperties,'tpl.order_cell'); // если товар найден
$tpl_empty = $modx->getOption('tpl',$scriptProperties,'tpl.order_cell_empty'); // если товар не найден

// ищем товар по id заказа
$q = $modx->prepare("SELECT * FROM ".$modx->getOption('table_prefix')."ms2_order_products WHERE order_id=".$order);
$q->execute();
$results = $q->fetchAll(PDO::FETCH_ASSOC);

$output;
// перебором либо выводим нужный заказ, либо оповещаем что его уже нет
foreach ($results as $result) {
  $res = $modx->getObject('modResource', array('pagetitle'=>$result[name]));
  
  if ($res) {
    $resArray = $res->toArray();
    $output .= $modx->getChunk($tpl,$resArray);
  } else {
    $prodName = $modx->setPlaceholder('name', $result[name]);
    $output .= $modx->getChunk($tpl_empty);
  }
}
return $output;
и соответственно чанк tpl.order_cell (на феноме):
<div>
  <span><a href="{$id | url}">{$pagetitle}</a></span>
  <span>{$price} Р</span>
</div>
и чанк в том случае если товара уже нет tpl.order_cell_empty:
<div>
  <span>{$_pls['name']}</span>
  <span>не найден</span>
</div>

Писал потому как, во первых учусь писать, во вторых быстрее написать чем искать подходящее решение и допиливать его. Буду рад советам и исправлениям. Пригодились бы советы по поводу:
1) сырого SQL:
$q = $modx->prepare("SELECT * FROM ".$modx->getOption('table_prefix')."ms2_order_products WHERE order_id=".$order);
$q->execute();
$results = $q->fetchAll(PDO::FETCH_ASSOC);
2) Первоначально хотел все в первом снипете вывести вот тут (далее в коде), но не получилось. Если кто подскажет буду рад.
// выводим или чанками или предупреждением что заказов пока нет
foreach ($results as $result) {

  // думал тут подхватить товары, но что с ними дальше так и не придумал...

  if ( $result ) {
    $resultArray = $result->toArray();
    $output .= $modx->getChunk($tpl,$resultArray);
  } else {
    $output = 'У вас пока еще нет заказов.';
  }
}
Всем успехов.
Юрий Фомин
27 января 2017, 15:51
modx.pro
15
3 628
+2

Список всех контекстов

Как можно получить список всех контекстов в снипете/плагине? Буду рад ссылкам, подсказкам и прочим добрым словам ))
Юрий Фомин
23 января 2017, 15:02
modx.pro
4
4 650
+1

Автоматическое создание ресурсов

Встал вопрос: как при добавлении ресурса в главном контексте он автоматически создавался бы во всех остальных?
Возможно ли это (знаю что возможно все вопрос во времени и средствах)?
Заранее благодарен за советы и мысли!
Юрий Фомин
16 января 2017, 12:21
modx.pro
1
1 868
+1