Ivan

Ivan

С нами с 15 августа 2016; Место в рейтинге пользователей: #107
Ivan
02 сентября 2021, 19:42
0
В чанке вывода КОНКРЕТНОЙ НОВОСТИ (например у вас pdoresources? &tpl=`new.tpl`, то значит в чанке new.tpl) пишите
[[+idx:ne=`[[+total]]`:then=`КОД ЧАНКА`]]

Тогда последний элемент выводиться не будет
Ivan
06 июня 2021, 18:57
0
В общем если кому интересно:
1) Создаем в базе в таблице PREFIX_products поле тепа integer. Например discount_percent. Ну и добавляем это поле (если кому-то нужно распишу как это делать. Либо скачайте дополнение на модсторе.про).
2) Создаем плагин (что бы при сохранении ресурса пересчитывался процент скидки).
<?php
$eventName = $modx->event->name;

switch($eventName) {
    case 'OnBeforeDocFormSave':
        if ($resource->get('template') == 7) {
            if ($resource->get('old_price') > 0) {
                $discount_percent = 100 - floor($resource->get('price') / $resource->get('old_price') * 100);
                $resource->set('discount_percent', $discount_percent);
                $resource->save();
            }
        }
        break;
}
3) Задаем всем товарам этот процент скидки через дополнение Console:
<?php
$products = $modx->getIterator('msProduct');
foreach($products as $resource) {
    if ($resource->get('old_price') > 0) {
        $discount_percent = 100 - floor($resource->get('price') / $resource->get('old_price') * 100);
        $resource->set('discount_percent', $discount_percent);
        $resource->save();
    }
}
4) Ссылку на сортировку выводим например так:
<a class="sort btn btn-default" href="#" data-sort="ms|discount_percent" data-dir="desc" data-default="desc" class="sort sort_name">Скидке<span></span></a>
Код ни на что не претендует. Если кто-то сделает лучше — велком.
Ivan
01 декабря 2020, 22:49
0
Потому-что название генерируется разное у миниатюр. А мне нужно что бы пути созданных изображений полностью совпадали, а отличалось только расширение.
Ivan
02 ноября 2020, 12:33
0
Оно так не работает. Этот параметр выводится только потому-что на странице доступен и при рендере заменяется. Если вы сделаете tpl: '@INLINE {$id}', то фиг че получите)))
И просто в инспекторе кода подставить tpl: '@INLINE {$_modx->config.site_name} [[++site_name]]' и выполнить ajax запрос, то тоже не сработает. Если я что-то не заметил — поправьте пожалуйста.

{{+id}}, [[+id]] тоже не работает)



Но все это не имеет значения, т.к. в любом случае уязвимость есть
Ivan
02 ноября 2020, 12:08
0
Я пробовал передать инлайн чанк и не сработало. Может я что-то не так делал.
Ivan
02 ноября 2020, 12:06
0
А какой прикол использовать ваш компонент без возможности передать параметры? Это вы предлагаете создавать сниппет и в нем вызывать другой?
Ivan
02 ноября 2020, 11:51
0
Если я правильно понимаю, то у modx желательно никому не показывать свой table_prefix (ну по крайней мере раньше это было капец как опасно).

С помощью вашего сниппета можно просто вызвать pdoResources с параметром showLog и мы увидим запрос в базу данных, в котором увидим table_prefix. Так же можно сделать любой leftjoin и т.д.
Ivan
27 октября 2020, 11:38
0
Чем подсказки dadata Вам не угодили…
Этот kladr-api не работает нифига…
Ivan
27 октября 2020, 00:04
+1
Скорее всего еще можно использовать тернарные операции типа того
'cssSources' => ($_modx->resource.id == 1 ? '/css/all.css, /css/icon.css, /css/cat.css, /css/main.css' : '/css/all.css, /css/icon.css')
Ivan
26 октября 2020, 23:59
2
+1
1) В базе данных в таблице PREFIXms2_product_links добавляете поле sort типа INT со значение по умолчанию 500.
2) Создаете файл /assets/components/minishop2/js/mgr/product/links.grid.custom.js. Файл можете скачать по ссылке cloud.mail.ru/public/n6em/21JzhRihW
4) Создаете плагин, вешаете на событие msOnManagerCustomCssJs и пишете в нем
<?php
switch ($modx->event->name) {
    
    case 'msOnManagerCustomCssJs':
        if ($page != 'product_update') return;
        
        $assetsUrl = '/assets/components/minishop2/';
        $modx->controller->addLastJavascript($assetsUrl . 'js/mgr/product/links.grid.custom.js');
  break;

}
5) Создаете файл /assets/components/minishop2/getSort.php. Скачать можно по ссылке cloud.mail.ru/public/3cUV/57yeWGajo

Далее очищаете кэш браузера. На странице установки связей появится кнопка «Изменить сортировку». Вам необходимо выбрать строчку и нажать кнопку. Задаете сортировку и нажимаете ОК.

Что бы потом сортировать по этому полю при выводе msProducts в поле &sortby вам нужно указать { «Link.sort»:«ASC» }

P.S. Данный код ни на что не претендует. Используйте его на свой страх и риск. Если будет время, то перепишу и обновлю комментарий.
Ivan
26 октября 2020, 22:28
0
Если еще не нашли решение, то могу в комментариях написать свое, не очень красивое, но рабочее. И при обновлении minishop2 все продолжит работать
Ivan
25 октября 2020, 21:13
+1
Сортировки связей
Ivan
16 августа 2020, 13:43
0
Это конечно некропостинг, но ведь есть &toPlaceholder.
Если я правильно понимаю можно сделать &toPlaceholder=`relations`

[[+relations:ne=``:then=`<strong class="h1">Возможно, вас заинтересует:</strong>
<ul class="product-list">[[+relations]]</ul>`]]
Ivan
16 июля 2020, 20:56
+1
ой
'where' => 'DATE(vip.value) > ' ~ ('' | date: 'Y-m-d'),
Ivan
16 июля 2020, 20:26
+1
Допустим название ТВ — vip.
'where' => 'DATE(TV_VIP.value) > ' ~ ('' | date : 'Y-m-d'),
Попробуйте что-то вроде этого. В формате даты не уверен. Феном
Ivan
13 июля 2020, 09:41
0
API Instagram Basic Display не предназначен для аутентификации. Данные, возвращаемые этим API, нельзя использовать для аутентификации и входа пользователей в ваше приложение. Вместо этого рекомендуется использовать вход через Facebook.
Ivan
10 июля 2020, 15:12
0
Спасибо, но этого оказалось недостаточно. Сейчас ошибка Invalid scope field(s): basic,user_profile,user_media.
Видимо нужно заново выпускать ключ с такими правами
Ivan
06 ноября 2019, 23:42
0
Странно почему там просто не прописан $_SERVER['DOCUMENT_ROOT'], ну а кому нужно уже менял бы на другие пути…
Ivan
11 июля 2019, 09:47
+1
В контенте это делается 1 плагином. А вообще можно даже на весь контент запилить… Например
$output = $modx->resource->_output;
$output= str_replace('<img src=', '<img data-src= ', $output);
$modx->resource->_output = $output;
Событие OnWebPagePrerender

Это я привел пример в грубом виде. Но он будет работать