Владимир Новопашин

Владимир Новопашин

С нами с 29 октября 2014; Место в рейтинге пользователей: #319
Владимир Новопашин
08 октября 2018, 15:53
0
Нет, подмены никакой. Просто создается огромная таблица, основа которой — связи с данными кто мастер и кто раб. Затем джойнятся соответствующие таблицы чтобы была еще и вся информация и у мастера и у раба. Получается огромная таблица со всеми данными и дальше уже можем фильтровать по чему угодно, просто в where указывать msProductMaster. или msProductSlave. перед названием поля по которому выборка.
Владимир Новопашин
13 октября 2017, 15:46
0
Отлично, благодарю. Просто не знал в какую сторону искать)
Владимир Новопашин
27 июня 2017, 15:49
0
В общем-то, делается это примерно так
<?php

$query = $modx->newQuery('msProductLink');
$query->leftJoin('msProduct', 'msProductMaster', 'msProductLink.master = msProductMaster.id');
$query->leftJoin('msProductData', 'msProductDataMaster', 'msProductLink.master = msProductDataMaster.id');
$query->leftJoin('msProduct', 'msProductSlave', 'msProductLink.slave = msProductSlave.id');
$query->leftJoin('msProductData', 'msProductDataSlave', 'msProductLink.slave = msProductDataSlave.id');
if (isset($where)){
    $query->where($where);
}
$query->groupby('msProductLink.slave');

$links = $modx->getCollection('msProductLink', $query);

$results = array();
foreach($links as $id => $link){
    $ids = explode('-', $id);
    $results[] = $ids[2];
}
$output = implode(',', $results);

return $output;
Затем вызываем этот сниппет навроде
{set $resources = '!getSlaves' | snippet : ['where' => 'msProductMaster.id IN (1,2,3,4,5,6) AND msProductDataSlave.price <= 2000']}
где для указания каких-либо параметров мастера\раба используем msProductMaster.PARAMNAME\msProductSlave.PARAMNAME соответственно, а для фильтра по их характеристикам msProductDataMaster.PARAMNAME\msProductDataSlave.PARAMNAME — и уже переменную $resources прописываем куда нужно — в pdoPage или pdoResources или еще куда в параметр resources
Владимир Новопашин
23 июня 2017, 14:34
0
Вам же прекрасно написано в конце что
this is incompatible with sql_mode=only_full_group_by
Следовательно, просто отключите этот режим работы. Вот первая ссылка на эту тему stackoverflow.com/questions/23921117/disable-only-full-group-by

Владимир Новопашин
22 июня 2017, 19:00
0
Установить и включить в системных настройках обработку в шаблонах.
Владимир Новопашин
22 июня 2017, 18:58
+1
Вызываете pdoMenu как и обычно, только в чанке с шаблоном оформления ссылки проверяете
{if $_modx->resource.id == $modx->config['site_start']}
    <div class="header-menu__item header-logo">
        <a href="{$_pls['link']}"><img src="/assets/img/icons/logo-black.png" alt=""></a>
    </div>
{else}
    <div class="header-menu__item"><a href="{$_pls['link']}" class="header-menu__link">{$_pls['pagetitle']}</a></div>
{/if}
Владимир Новопашин
22 июня 2017, 18:53
0
Попробуйте использовать другой способ указания where. Не знаю работает ли такое в ecMessagesMain, но в pdoTools я предпочитаю использовать такой способ — куда меньше нюансов возникает.
'where' => "[\"subject LIKE '%"~$mark~"%'\"]"
Владимир Новопашин
09 июня 2017, 12:28
0
А что мешает сперва сделать вызов pdoResources с параметром &resources=`[[*id]]` а затем то же самое, но с &resources=`-[[*id]]`
В итоге сперва выведет только текущую услугу, а потом уже все услуги за исключением текущей.
Владимир Новопашин
01 июня 2017, 14:45
0
Благодарю. Не додумался что опции могут быть сделаны по подобию поля size
Владимир Новопашин
30 мая 2017, 17:24
0
1) Вывод ошибки должен быть таким образом:
$modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
Т.к. выводить вам нужно не ошибку плагина, а ошибку именно сервиса отправки почты

2) После этого можно прочитать что MAIL_SENDER указан неверно — должен быть адрес почты.
$modx->mail->set(modMail::MAIL_SENDER, $modx->config['emailsender']);
3) Чтобы получить адрес отправителя из системных настроек нужно писать:
$modx->config['emailsender']
а никак не просто 'emailsender'
Владимир Новопашин
16 мая 2017, 16:02
0
В общем, дело было в том, что однажды на этом сайте настраивал кэширование с использованием memcached, но потом вернул обратно использование файлов. В итоге щас опять настроил memcached и все заработало.
Владимир Новопашин
11 мая 2017, 13:03
+1
А вы уверены что URL генерируются корректные? Может у вас ссылки на стили прописываются некорректные в итоге выдается ошибка 404 при их загрузке, а в качестве 404 страницы по умолчанию указан ресурс с айди 1, в итоге грузится он, а на нем ссылки на несуществующие… и так далее. В общем, проверьте ссылки или попробуйте создать пустую страницу и в системных настройках для 404 и 403 ошибки укажите пустую страницу
Владимир Новопашин
05 мая 2017, 14:42
0
Использовать Ion.RangeSlider, например. Пример можете посмотреть Здесь. Единственно необходимо будет поправить момент что этот слайдер посылает тригер change при движении постоянно, в итоге каталог будет обновляться over500 раз (фильтры отлавливают событие change). Правил тем что в самом коде слайдера изменял отправку события change только когда «отпустили» ползунок.
Владимир Новопашин
03 мая 2017, 16:54
+1
Вам нужно просто вывести только те тикеты, которые создал авторизованный пользователь?
Владимир Новопашин
03 мая 2017, 14:45
+2
Все чанки были переведены на Fenom. В итоге некоторые чанки были скомпонованы в один. А, к примеру, в чанках отвечающих за формат писем теперь используется «extend» конструкция. Так что смотрите что вы вызываете. Возможно, вы скопировали вызов сниппета со старой версии с указанием старых названий чанков.

Вот вам на заметку modx.pro/components/9108-minishop2-version-2-4-0-rc/
Владимир Новопашин
03 мая 2017, 11:37
+1
Попробуйте выполнить SQL запрос в базу данных
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
А вообще, вот же описание ошибки «this is incompatible with sql_mode=only_full_group_by» следовательно вам нужно отключить этот режим работы sql
Владимир Новопашин
02 мая 2017, 18:47
0
Собственно, при попытке создать раздел с тикетами — создает его, но страница не обновляется. А при открытии его 500 ошибка. При получении его через админку —
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes) in...
Владимир Новопашин
02 мая 2017, 18:36
0
В качестве костыля создал плагин TicketPrerender
$Tickets = $modx->getService('tickets', 'Tickets', $modx->getOption('tickets.core_path', null, $modx->getOption('core_path') . 'components/tickets/') . 'model/tickets/', array());
И повесил на событие OnMODXInit. Но думаю есть более оптимальное решение
Владимир Новопашин
02 мая 2017, 17:40
0
Причем
$tickets = $modx->getService('tickets', 'Tickets', $modx->getOption('tickets.core_path', null, $modx->getOption('core_path') . 'components/tickets/') . 'model/tickets/', array());

    $thread = $modx->newObject('TicketThread', array(
        'name' => 'resource-'.$resource_id.'-customer',
        'resource' => $resource_id,
        'createdon' => date("Y-m-d H:i:s"),
        'subscribers' => array(1, $user_id),
        'createdby' => $user_id
    ));
    $thread->save();
Создает ветку комментариев без проблем.
А вот
$tickets = $modx->getService('tickets');

    $thread = $modx->newObject('TicketThread', array(
        'name' => 'resource-'.$resource_id.'-customer',
        'resource' => $resource_id,
        'createdon' => date("Y-m-d H:i:s"),
        'subscribers' => array(1, $user_id),
        'createdby' => $user_id
    ));
    $thread->save();
Выдаст ошибку. Хотя в плагине Tickets используется как раз
$tickets = $modx->getService('tickets');
Владимир Новопашин
13 апреля 2017, 16:57
0
Попробуйте
[[+tv.price2:is=``:then=`[[$price_one]]`:else=`[[$price_two]]`]]
заменить на
[[+tv.price2:is=``:then=`[[!$price_one]]`:else=`[[!$price_two]]`]]