Александр Туниеков

Александр Туниеков

С нами с 19 декабря 2015; Место в рейтинге пользователей: #15
Александр Туниеков
04 марта 2020, 16:14
0
Пиши свои допы, развивай — Сергей верно говорит.
Ниже пример с подзапросом. Нужно для одного этапа производства детали получить на когда запланирован следующий этап. С измененным pdoTool, это можно получить через pdoResources. Не надо писать никаких сниппетов. Их уже и так целая куча.
Как можно сделать доп, чтобы можно было так же через pdoResources вывести нужную информацию, не меняя pdoTools?
{'!pdoResources' | snippet :[
    'loadModels'=>'tSklad',
    'subpdo'=>[
        'test'=>[
            'class'=>'tSkladDetNSLink',
            'alias'=>'NextDNL',
            'select'=>[
                'NextDNL'=>'NextDNL.smena_id',
            ],
            'leftJoin'=>[
                'NextS'=>[
                    'class'=>'tSkladSmena',
                    'on'=>'NextS.id=NextDNL.smena_id',
                    'where'=>[
                        'NextS.date > Smena.date',
                    ],
                ],
            ],
            'where'=>[
                'NextS.date > Smena.date',
            ],
            'sortby'=>[
                'NextS.date'=>'ASC',
                'NextS.number'=>'ASC',
            ],
            'limit'=>1,
        ],
    ],
    'class'=>'tSkladDetNSLink',
    'select'=>[
        'tSkladDetNSLink'=>'tSkladDetNSLink.id,Smena.id as smena_id, ({$subpdo.test}) as on_next_smena_id',
    ],
    'leftJoin'=>[
        'Smena'=>[
            'class'=>'tSkladSmena',
            'on'=>'Smena.id=tSkladDetNSLink.smena_id',
        ],
    ],
    'where'=>[
        'Smena.id > 0',
    ],
    'sortby'=>[
        'tSkladDetNSLink.id'=>'DESC',
    ],
    'limit'=>10,
    'tpl'=>'subpdo_test',
    'showLog'=>1,
]}
Александр Туниеков
04 марта 2020, 16:01
0
Меня волновали. Года 3 :-). Просто обходился чистым sql. Думаю, далеко не всем, но нужны. Может просто никто не говорил. Вообще интересно опрос устроить. Правда на modx.pro опросов нет :-(.
Александр Туниеков
04 марта 2020, 15:55
0
Саша, ты несёшь такую пургу, что я просто теряюсь.
Для меня вроде все логично что я пишу, но я могу ошибаться и у людей с разным опытом разные мнения. И не супер писатель я. Не всегда понятно пишу. Надо общаться и писать просто больше…
Скажи пожалуйста, каким образом у тебя построение запроса через xPDO приводит к ошибке работы Fenom?
Что-то я совсем не понял с честь чего у вас такой вопрос?? «построение запроса через xPDO приводит к ошибке работы Fenom» — вроде нигде такого не говорил. Василий, пожалуйста, поясните, что вы имеете в виду.
Александр Туниеков
04 марта 2020, 15:06
0
Уф… Пример напишите запроса с xPDO.getCollection раз. Два pdoTools удобнее.
Вполне логично написать свой сниппет или плагин!
Лишние сниппеты не нужны!!! А, кстати, плагин тут причем?
Короче не морочте мне голову :-)
Александр Туниеков
04 марта 2020, 14:22
0
А авторы Tikkets вообще собираются редактор сообщений обновлять?
Офтопик (скрытый раскрывающейся блок) вроде уже давно стандарт. Километры кодов, логов и запросов нагружают восприятие текста, а вырезать лишнее замучишся. В офтопик проще засунуть и восприятие не нагружает и кому надо может все полностью посмотреть.
Еще выделение цветом блока в блоке кода тоже хорошо было бы. И загрузка файлов без перехода в Файлохранилище тоже не помешает.
Александр Туниеков
04 марта 2020, 14:10
0
под видом необходимого для подзапросов
Ладно счас протестирую на коде из коммента. Поставил чистый pdoTools 2.11.3-pl. Ответ:
0.0009770: SQL prepared "SELECT tSkladDetNSLink.id, Smena.id as smena_id, () as on_next_smena_id
Подзапроса нет. Заменяем pdofetch.class.php.
Все правильно выведено :-). Add Fenom soft mode не потребовалось.
Страницы сайта не работают. Ошибка pdotools.class.php: 989) Unexpected tag 'display' in 0b3013274c174a9c5505daeb0e70dfc6 line 27, near '{display:' < — there
Через modDevTools заменяю все {display на { display. Затем также {font
Сайт заработал. В getTables тоже все работает :-). Ну я написал, что не все тестировал. Что-то когда-то не запустилось, а с Add Fenom soft mode заработало. И дальше я со стандартным пакетом не работал. И тут
Эта возможно с этой правкой Add Fenom soft mode… Без нее, скорей всего, феном не поймет
, тоже оговорился что скорее всего.

PR Add Fenom soft mode не требуется. Если он вам так не нравиться, подзапросы можно принять без него. Актуальные изменения только в pdofetch.class.php.
Правок не много и сами можете написать так как вам хочется. Только синтаксис subpdo просьба сохранить, но тоже не обязательно :-). 1 сниппет можно и поправить.
Александр Туниеков
04 марта 2020, 13:02
0
Не нужно лезть в исходники!!!
Думал расширить феном, но там все функции оказались privite и protected. И меня это так разочаровало, что функции pdoTools я и не думал расширять, а тупо писал что мне нужно в исходники. Иногда нужно исходники править, чтоб не усложнять код и, если исходники обновились, чтобы компонент смог работать.
Я не мучал автора своими пулами.
Зря :-). Авторы бывают ленивыми и зазнайками. Их надо мучать, чтоб прогресс был. Подзапросы вроде вещь актуальная. Разве нет?
И не стоит плодить кучу разных компонентов. В wordpress, взяв сделанный кем-то сайт, приходиться изучать десяток новых плагинов. Такой компонент как pdoTools лучше, чтоб один был и со стандартным синтаксисом.
Александр Туниеков
03 марта 2020, 22:59
0
Решил проверить как сработает и написал простенький код :-):
{'!pdoResources' | snippet :[
    'loadModels'=>'tSklad',
    'subpdo'=>[
        'test'=>[
            'class'=>'tSkladDetNSLink',
            'alias'=>'NextDNL',
            'select'=>[
                'NextDNL'=>'NextDNL.smena_id',
            ],
            'leftJoin'=>[
                'NextS'=>[
                    'class'=>'tSkladSmena',
                    'on'=>'NextS.id=NextDNL.smena_id',
                    'where'=>[
                        'NextS.date > Smena.date',
                    ],
                ],
            ],
            'where'=>[
                'NextS.date > Smena.date',
            ],
            'sortby'=>[
                'NextS.date'=>'ASC',
                'NextS.number'=>'ASC',
            ],
            'limit'=>1,
        ],
    ],
    'class'=>'tSkladDetNSLink',
    'select'=>[
        'tSkladDetNSLink'=>'tSkladDetNSLink.id,Smena.id as smena_id, ({$subpdo.test}) as on_next_smena_id',
    ],
    'leftJoin'=>[
        'Smena'=>[
            'class'=>'tSkladSmena',
            'on'=>'Smena.id=tSkladDetNSLink.smena_id',
        ],
    ],
    'where'=>[
        'Smena.id > 0',
    ],
    'sortby'=>[
        'tSkladDetNSLink.id'=>'DESC',
    ],
    'limit'=>10,
    'tpl'=>'subpdo_test',
    'showLog'=>1,
]}
И этот код я уже считаю простеньким :-). Есть у меня подобные конфиги и на 571 строку! Жесть.
Вот вывел:
Александр Туниеков
03 марта 2020, 22:04
+1
Поправил. Правильно поправил-то?
Александр Туниеков
03 марта 2020, 21:30
0

Это из-за чего могли отступы полезть?
Александр Туниеков
03 марта 2020, 20:54
0
Напишите с pdoFetch запрос
SELECT tSkladDetNSLink.id, Smena.id, (SELECT NextDNL.smena_id
FROM `modx_tsklad_detail_naryad_smena_link` AS `NextDNL`
LEFT JOIN `modx_tsklad_smena` `NextS` ON NextS.id=NextDNL.smena_id
WHERE NextS.date > Smena.date
ORDER BY NextS.date ASC, NextS.number ASC
LIMIT 1) AS on_next_smena_id
FROM `modx_tsklad_detail_naryad_smena_link` AS `tSkladDetNSLink`
LEFT JOIN `modx_tsklad_smena` `Smena` ON Smena.id=tSkladDetNSLink.smena_id
WHERE Smena.id > 0
ORDER BY tSkladDetNSLink.id DESC
LIMIT 10
так, чтоб в конфиге запроса не было названий таблиц с префиксом базы modx_tsklad_detail_naryad_smena_link, modx_tsklad_smena и не надо лишних сниппетов(Я уже заманался вспоминать какой сниппет для чего нужен). Я проверю у себя :-).
Александр Туниеков
03 марта 2020, 20:38
0
Потом сложно обновлять сайты, и нужно все файлы сверять.
Надеюсь Василий пул реквест примет и будет стандарт. Подзапросы нужны, хотя и не часто.
Александр Туниеков
03 марта 2020, 20:34
0
Подзапросы pdoTools не умеет делать!!! Точнее pdoFetch не умеет.
Александр Туниеков
03 марта 2020, 20:12
0
Можно этот релиз юзать и никаких пробелов ставить не надо :-).
Александр Туниеков
29 февраля 2020, 18:30
0
В качестве финального решения возможно стоит использовать alias. В одном и том же контексте двух элементов с одним alias быть не может, а следовательно его можно использовать как ключ.
Может быть :-). У папки может быть включено использовать псевдоним в uri. То есть уникальный, по идее, только uri, но gitify uri использует и все равно какие-то проблемы. И, если id ресурсов меняются, надо в шаблонах и чанках id ресурса переписывать в конструкциях типа
{123 | url}
{$_modx->makeUrl(21)}
и т.д.
Александр Туниеков
23 февраля 2020, 12:51
0
Как сложно все. И просто компонент синхронизации для MODX не сделаешь.
У меня такая задача. На модкс частично перенесена система управления производством (Первоначально сделанная на Excel директором. Но excel тупит на больших объемах данных и синхронизация разных книг еще тот геморой). Регулярно на сайте что-то меняется. Сейчас, чтобы не мешать рабочему процессу фирмы, сделали тестовую копию сайта. Теперь желательно сделать так чтобы ее можно было быстро синхронизировать с рабочим сайтом.
Нужно чтоб с тестового сайта переносились изменения всех ресурсов, копировались все измененные файлы компонентов и переносилась структура таблиц компонентов без изменения данных. Еще таблицы с настройками желательно настроить чтоб копировались, но это можно и ручками.
Если тут спецы по Gitify есть, подскажите пожалуйста, это можно сделать? И где смотреть как такое организовать?
Александр Туниеков
23 февраля 2020, 12:09
0
ААА… блин. Вот я прокосячил. На меню то слева не посмотрел :-(. Простите плиз.
Александр Туниеков
23 февраля 2020, 11:38
0
Ну блин. Я же справку хочу. Как установить, как синхронизировать гит какой устанавливать. На виндоус запуститься ли? и т.д. А про то что Gitify есть я давно в курсе. Только инфу по разным сайтам собирать и тестить как что работает не охота. И времени особо на это нет.
Александр Туниеков
23 февраля 2020, 07:57
0
Часто возникает ситуация, что тестовая версия сайта начинает плотно отставать по контенту от продакшена и необходимо как-то синхронизировать изменения.
Актуальная тема :-). Как-то давно написал ChangePack, но сейчас даже сам им не пользуюсь :-(. В чем в ChangePack косяки уже забыл. Наверно, что изменения в файлах не ловит и что поменялось в сниппетах и чанках нельзя посмотреть. Но счас тестовый и рабочий сайт надо будет полгода, пока активно разработка идет, синхронизировать. А в ручную это полчаса-час.
Про Gitify есть где-нибудь хорошее описание? На русском, текстовое и актуальное :-)?