Сергей

Сергей

С нами с 10 марта 2016; Место в рейтинге пользователей: #297
Сергей
29 сентября 2019, 20:02
0
Это так себе на самом деле REST — API, полноценным REST API modx его назвать сложновато
Сергей
29 сентября 2019, 18:56
0
ну вот я поэтому и пишу) много статей про разные встроенные REST-подобные фичи в последнее время, но до сути необходимых для полноценной работы нормального REST — подобного интерфейса никто не доходит в этих статьях.
Сергей
29 сентября 2019, 10:13
+1
Было бы интересно, если бы кто — нибудь рассказал, как во встроенном API обстоят дела с token-авторизацией
Сергей
26 апреля 2019, 09:07
+1
Миша, кстати ты не упомянул еще об одной интересной особенности MIGXdb. Схему можно не писать вручную, а создав «пустую» заготовку для объекта например, который просто наследует xPDOSimpleObject (в котором уже прописан конфиг создающий столбец id), затем создав таблицы для этого объекта — можно в phpmyadmin визуально добавлять все остальные поля, элементы и т.д. в эту таблицу, а потом на стороне MIGXdb просто нажать кнопку парсинга схемы и она сама сгенерирует нужную xml schema на основе существующей таблицы в БД.

Получается «обратный способ». Можно либо классическим способом создавать объекты, прописывая schema полностью, либо способом что я описал выше
Сергей
18 декабря 2018, 14:34
+2
Почему это не полноценный крон? вполне полноценный. В настройке crontab сервера прописывает путь до исполняемого скрипта, который вызывается системой раз в минуту, а cronmanager переопределяет уже время. Юзал много раз, работает автономно (без привязки к хитам). За это отвечаю, вот инструкция docs.modx.com/extras/revo/cronmanager

Разделение на два сниппета тут логичное в плане «не клади все яйца в одну корзину». А если учесть что скорость тут не критична, ибо это делается в фоне а не в момент рендера страницы, то лишний вызов второго сниппета роли не играет

со остальными замечаниями согласен
Сергей
18 июля 2018, 21:14
0
Самое кардинальное но действенное решение, которое не затронет ничего в системе, которое я вижу — это использовать подмену файла с помощью правил файла .htaccess
Сергей
09 июля 2018, 06:56
+2
Цитата с сайта
Все данные varchar хранятся в конце строки в разделе переменной длины (или в перелистывании страниц, если они не могут вписываться в строку). Объем пространства, который он потребляет в этом разделе (и независимо от того, заканчивается ли он), полностью зависит от длины фактических данных, а не от объявления столбца.
Сергей
09 июля 2018, 06:54
+2
Сколько у вас товаров чтобы размер этих полей как — то сильно сказался на размере вашей БД?
Сергей
02 июля 2018, 23:13
0
Самый лучший способ как советует Дмитрий — использовать msImportExport. При этом дамп желательно загрузить в phpMyAdmin, либо если есть возможность с того сайта напрямую еще раз дамп слить. Но не в виде .sql файла. В PhpMyAdmin можно сразу в Excel сливать. Вот его слить, а потом данные загрузить уже через msImportExport
Сергей
29 июня 2018, 14:12
0
Я не брался. Пока в веб студии работал, был вынужден связываться с этими проектами, потому что так решило начальство. Я говорю с позиции человека, который работал и с modx и с bitrix. Если выбирать не приходится, bitrix доставляет значительно больше боли чем MODX
Сергей
29 июня 2018, 11:34
0
Лучше регуляркой удалить
Сергей
29 июня 2018, 11:05
0
У вас на «техобслуживании», а у меня на разработке и модификации
Сергей
29 июня 2018, 08:46
+5
Видел и работал я с вашим «монолитным решением». Смесь говнокода и шаблонизации в одном файле. А точнее отсутствие какой — либо шаблонизации, где код постпроверок прямо в сыром виде вызывается в шаблоне такими конструкциями
<?=if($arResult['VARIABLE'])?>
это еще самый просто пример.

Компоненты, которые подключаются в состав других компонентов за счет рендера во внутренний буффер, а потом использования этого куска HTML кода

А когда мне понадобилось реализовать какой-то простой режим фильтрации, который можно было спокойно реализовать в MODX, техподдержка ответила мне «увы, но у нас такой фичи не реализовано».

В итоге я сделал тот магазин, хотя и долго плевался. На MODX бы это получилось гораздо приятнее (говорю не просто так, ибо сделал на нем как минимум 6 полноценно работающих магазинов, со сложной логикой и кастомизацией, как фильтрации, так и карточки редактирования товара, так и др.)

Кстати по поводу битрикса, как там поменять саму админку? довольно сложно
А может быть кодовая база приведена к одному решению? Нет. В одном случае данные получаются через GetList, в другом случае специальные методы используются

Где, что, как и когда подключается — не понятно. Без сайта bxapi.ru (написанного сторонним разработчиком, «гуру» битрикса) вообще сложно было — бы отыскать точку предткновения

И да, с 1С битрикс я работал всего раз (делая тот магазин), но вот зато с коробочной версией битрикс24 работал мнооого раз, раза 2 или 3. Кто не знает — коробочная версия построена на 1С Битрикс, так вот там работа производится аналогично. Все те же описанные выше проблемы

И я прихожу к выводу что вся монолитность битрикса заключается в том, что там «монолитно запечатаны» смесь говнокода стиля 90-х (одной длинной портянкой. О, том что можно использовать классы и методы разработчики битрикс наверное вообще не слышали) и шаблонизации вида <?=?> прямо в тех же файлах. Все запечено и спрятано, обернуто в конфетку на фронтенде.

Самый главный минус, что битрикс не «Developer Friendly», зато может «User Friendly» и «Content Manager Friendly» с визуальным редактором всего и вся
Сергей
27 июня 2018, 13:14
0
Только сделать самому. Можете использовать что — то из composer готовое (нужно будет прикрутить соответственно)
packagist.org/packages/league/oauth2-server
Сергей
27 июня 2018, 13:11
0
Нельзя одно купленное дополнение использовать на разных сайтах. Для каждого сайта покупается свое дополнение
Сергей
27 июня 2018, 13:07
0
{set $parent_data = json_decode(15 | resource : 'migx_tv', true)}
{set $childs = $_modx->getResources([
	'parent' => 15
],[])}
{set $childs_data  = []}
{foreach $childs as $child}
	{set $childs_data = array_merge($childs_data, json_decode($child['migx_tv']))}
{/foreach}
{set $all_data = array_merge($parent_data, $childs_data)}

{foreach $rows as $row}
    {$row.image}
{/foreach}
Можно как — то так.
Сергей
25 июня 2018, 15:49
+1
Как минимум нет закрывающей скобки и запятой после нее. Проверьте, вот нормальный код

[[!pdoResources?
    &parents=`137`
    &depth=`5`
    &tpl=`tpl.long`
    &sortby=`menuindex`
    &sortdir=`ASC`
    &where=`{
    "pagetitle":"[[*pagetitle]]",
		"tvStatus.value:=": "да" 
    }`
    &showUnpublished=`1`
    &limit=`100`
    &leftJoin=`{
        "tvLong":{
            "class":"modTemplateVarResource", 
            "on":"modResource.parent = tvLong.contentid AND tvLong.tmplvarid = 14"
        },
        "tvStatus":{
            "class":"modTemplateVarResource", 
            "on":"modResource.parent = tvStatus.contentid AND tvStatus.tmplvarid = 31"            
        }
    }`
    &select=`{
        "tvLong": "SUM(tvLong.value) as tv_long_sum"
    }`
]]
Сергей
24 июня 2018, 23:47
0
весь вызов сниппета скиньте
Сергей
24 июня 2018, 22:36
0
Пишу наугад без проверки. Но должно работать

[[!pdoResources?
    &parents=`137`
    &depth=`5`
    &tpl=``
    &sortby=`menuindex`
    &sortdir=`ASC`
    &where=`{
		"pagetitle":"[[*pagetitle]]",
		"tvParametr.value:=": "да" 
	}`
    &showUnpublished=`1`
    &limit=`100`
    &leftJoin=`{
        "tvLong":{
            "class":"modTemplateVarResource", 
            "on":"modResource.parent = tvLong.contentid AND tvLong.tmplvarid = 25"
        },
        "tvParametr":{
            "class":"modTemplateVarResource", 
            "on":"modResource.parent = tvParametr.contentid AND tvParametr.tmplvarid = 888"
        }
    }`
    &select=`{
        "tvLong": "SUM(tvLong.value) as tv_long_sum"
    }`
]]
Сергей
24 июня 2018, 21:44
+1
Отдельным сниппетом на последней строке «Где результирующие данные»
Но тут такой момент. Этот пример для выборки TV — поля. Для других данных код может быть другим

vLong.tmplvarid = 25"
цифру 25 меняете на ID нужного TV поля.
tv_long_sum — название плейсхолдера в результате. название tvLong тоже на любой можно заменить

[[!pdoResources?
    &parents=`137`
    &depth=`5`
    &tpl=``
    &sortby=`menuindex`
    &sortdir=`ASC`
    &where=`{"pagetitle":"[[*pagetitle]]"}`
    &showUnpublished=`1`
    &limit=`100`
    &leftJoin=`{
        "tvLong":{
            "class":"modTemplateVarResource", 
            "on":"modResource.parent = tvLong.contentid AND tvLong.tmplvarid = 25"
        }
    }`
    &select=`{
        "tvLong": "SUM(tvLong.value) as tv_long_sum"
    }`
]]