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