Юрий Фомин
С нами с 08 апреля 2014; Место в рейтинге пользователей: #76Localizator, модификаторы для получения переводов
            Локализатор очень хорошая штука и хотелось ее опробовать, но как то не задалось переносить уже готовые данные со всего сайта в поля локализатора. Пришлось искать решения для вывода данных и при том с учетом того что же есть в основном контенте страниц.
Итак… модификаторы для вывода данных, пошагово:
1. создаем плагин…
        
        
        
    Итак… модификаторы для вывода данных, пошагово:
1. создаем плагин…
Как удалить тикеты программно
            Возникла задача массово удалить полностью все тикеты ( 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.если через пол года увидите статус этой заметки «выполнен», значит удалял вручную. Спасите!!! )))
Не работают ссылки поле переноса сайта.
            После переноса сайта на хостинг заказчика пропали все ссылки. и ни одна страница кроме главной не открывается, в ответ:
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.
Помогите решить проблему, так как уже не первый сайт с такой проблемой, а инфы по ремонту совсем мало.
Заранее спасибо.
        
        
        
    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.
Помогите решить проблему, так как уже не первый сайт с такой проблемой, а инфы по ремонту совсем мало.
Заранее спасибо.
фильтрация товаров и по тв-шкам и по доп. опциям ( 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',
отдельно все фильтрует отлично, но когда разом то ничего не выводит. Подскажите кто может с таким сталкивался, как можно наладить вывод товаров с фильтрацией и по доп. опциям и по тв-шкам?
спасибо.
        
        
        
    ...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',
отдельно все фильтрует отлично, но когда разом то ничего не выводит. Подскажите кто может с таким сталкивался, как можно наладить вывод товаров с фильтрацией и по доп. опциям и по тв-шкам?
спасибо.
Поиск нужного блока среди страниц пагинации (pdoPage).
            Подскажите пожалуйста, каким образом можно получить ссылку на нужный, к примеру коммент (лежит не на странице пагинации), среди страниц пагинации (pdoPage) и естественно потом на него попасть (уже на самой странице с пагинацией)? может у кого промелькнет светлая мысль, поделитесь.        
        
        
        
    Автосоздание ресурсов в контекстах-дублях
            Задача:
Один сайт, несколько городов, один и тот же контент у всех, но разные данные (переменные).
Поначалу думал использовать Babel, но с ним не все так просто. Поэтому пришлось писать самому при поддержке неравнодушных Максима Кузнецова и Сергея Шлокова.
Решение:
        
        
        
    Один сайт, несколько городов, один и тот же контент у всех, но разные данные (переменные).
Поначалу думал использовать Babel, но с ним не все так просто. Поэтому пришлось писать самому при поддержке неравнодушных Максима Кузнецова и Сергея Шлокова.
Решение:
- Плагин для переключения контекстов (от Василия Наумкина)
 - Плагин на события: OnDocFormSave, OnDocFormDelete.
 - Снипет для вывода контекстов в качестве меню
 - Чанк вывода меню контекстов
 - Снипет для подтягивания полей ресурсов-оригиналов (чтоб не дублировать в базу весь контент к примеру)
 - Js-скрипт для переключения контекстов
 
Вывод заказов пользователя и товаров заказа
            Нужна была возможность вывода заказов клиента и товаров в этих заказах. Велосипедов много, мой один из них.
1) Снипет для вывода заказов:
2) Снипет вывода товаров заказа:
Писал потому как, во первых учусь писать, во вторых быстрее написать чем искать подходящее решение и допиливать его. Буду рад советам и исправлениям. Пригодились бы советы по поводу:
1) сырого SQL:
        
        
        
    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 = 'У вас пока еще нет заказов.';
  }
}Всем успехов.        Список всех контекстов
            Как можно получить список всех контекстов в снипете/плагине? Буду рад ссылкам, подсказкам и прочим добрым словам ))        
        
        
        
    Автоматическое создание ресурсов
            Встал вопрос: как при добавлении ресурса в главном контексте он автоматически создавался бы во всех остальных?
Возможно ли это (знаю что возможно все вопрос во времени и средствах)?
Заранее благодарен за советы и мысли!
        
        
        
    Возможно ли это (знаю что возможно все вопрос во времени и средствах)?
Заранее благодарен за советы и мысли!