Это крайне проблематично. Дело в том, что установка uri выполняется не в самом плагине, а в modResource::refreshURIs(), к тому же еще и рекурсивно. Без модификации ядра тут вряд ли что-то можно сделать.
Как вариант, можно было бы написать плагин, срабатывающий при сохранении ресурса и решающий (по какому-то критерию), какой uri установить у ресурса. По-моему, это проще. Или я неверно понял задачу?
Четыре месяца прошло с момента публикации прошлой сборки. За это время ее скачали 940 раз… Лично для меня она уже настолько стабильная, что обновления вот не часто выпускаются. Но сегодня выходит свеженькая версия с небольшими, но приятными обновлениями. Главная фишка новой версии, как многие догадались после прочтения заголовка — это подсчет минимальной и максимальной цены в выбранных товарах. Реализовано это новым процессором modWebCatalogProductsPricesMinmaxGetdataProcessor. Зачем это надо? К примеру, вы захотели реализовать фильтр по товарам с бегунком выбора цен. Для него вам надо знать минимальную и максимальную цены из доступных товаров. Вот этим процессором вы и получите эти значения. Причем здесь есть пара сопутствующих моментов и улучшений: 1. Логика процессора modWebCatalogCategoryProductsGetdataProcessor, получающего товары из указанной категории перенесена в сам процессор получения данных товаров modWebCatalogProductsGetdataProcessor. Раньше эта логика была разнесена на два отдельных процессора, что не есть хорошо. Дело в том, что эти цены берутся из найденных товаров, и если бы так и было два отдельных процессора, то нам сложно было бы получать цены товаров из какого-нибудь раздела. А так сейчас можно просто передать в вызов процессора параметр category_id, и процессор сделает выборку товаров из этой категории (и из дочерних подкатегорий) и получит их цены. 2. Формирование SQL-запроса с учетом мультивалютности перенесено из метода setSelection() в prepareQueryBeforeCount(). Это во-первых, позволяет корректно сортировать товары по стоимости независимо от того, в какой валюте у них указаны цены (еще на уровне SQL-запроса произойдет конвертация стоимости в рубли). А во-вторых, минимальную и максимальную цены мы так же получим уже в рублях. То есть совсем не страшно, если в каталоге товары у вас указаны в разных валютах. Здесь так же стоит отметить довольно хитрый подход к формированию SQL-запроса, который и получает значения минимальной и максимальной цен. Дело в том, что в основном getdata-процессоре в SQL-е уже выполняется конвертация цен, и важно было этот запрос использовать как есть, а не переписывать его повторно в новом процессоре. При этом очень не хотелось тянуть вообще все параметры SELECT из него. Так вот, для этого я дернул данные селекта из объекта запроса и достал из него нужное мне. Вот этот код. Эти две картинки лучше демонстрируют что происходит: joxi.ru/8AnXDv9uaV71mO joxi.ru/KAxeRO7ceQ1Mr8 Любителям xPDO советую взять на заметку. Иногда такие хаки очень даже помогают. В остальном в сборке важных изменений нет, только мелкие правки. UPD: По поводу производительности этого процессора: он довольно шустрый, 650 товаров в трех уровнях вложенности считает за 0.1 сек. Так же не забываем, что есть в getdata-процессорах кеширование — просто передаем параметр cache => true и все, так что если каталог не маленький — десятки тысяч товаров, то кеширование в помощь. UPD2: Для самых знатоков xPDO и любителей мозгодробительных задачек предлагаю одну: в getdata-процессоре получения товаров с этой мультивалютностью есть проблема: так как колонка sm_price получается фейковая (на лету считается), то в сортировке и условиях выборки она не участвует корректно, то есть участвует оригинальная колонка Product.sm_price. То есть если у вас товар 100 долларов стоит, он будет в сортировке идти вперед товара за 110 рублей. Я пока вот так этот момент решил: gist.github.com/Fi1osof/c944711fbeff9badf534 Он довольно сырой, его еще надо причесывать (особенно нервирует повторяющийся SQL), но тем не менее он работает. Предлагаю желающим покопаться и разобрать как и что там работает (лишний код с условиями по брендам нужно убрать). Там можно что-нибудь интересное для себя найти.
Столкнулся с тем, что клиент попросил удалять из URL алиасы промежуточных родителей (выборочно). Документов достаточно много, и заморозка URL — не самый удобный вариант.
Уверен, не я один столкнулся с подобной проблемой.
Поиск привел в github. Да, требуется внести изменения в ядро, но, думаю, оно того стоит.
Решение здесь: https://github.com/bertoost/revolution/commit/4323cfdbdb9afca3ff23d30faf0492e524b57faa
https://github.com/bertoost/revolution/commit/1a9bd36035b6bba28ff50a2692060b8567949fd3 Необходимо создать в таблице modx_site_content поле exclude_alias_in_childs (boolean), сделать к нему индекс
и внести в MODX изменения, указанные на гитхабе.
У кого русский MODX, можно кроме core/lexicon/en/resource.inc.php подправить еще и core/lexicon/ru/resource.inc.php дав нужное название чекбоксу. В результате на закладке документа «Настройки» появится чекбокс «исключить из Exclude resource alias in child aliases».
Если его включить, то алиас этого ресурса не будет участвовать в формировании URL дочерних ресурсов.
Все верно, почти со всем согласен, конечно не сижу и не жду решения от кого-то, естественно ищу его сам, перечитал кучу инфы и наверное уже нашел решение (не знаю, пробую сейчас как раз) я и не рассчитывал на нравоучительные разговоры ни с чьей стороны, был короткий вопрос, ожидал на него или короткого ответа: типа так лучше… Либо вообще без ответа — Если этого никто раньше не делал , то наверное и не знает никто Это последнее отступление, больше писать что либо не по существу не буду, всем сори…
Sergey, я уже предлагал посмотреть на habrahabr.ru/post/253737/ с чем работать будет быстрее, удобней и правильней если все 22 ТВ перенести в MIGX ТВ 1 2000 документов с одним MIGX 2 Один документ с 2000 MIGX строками, где наши 22 значения Как такой подход — попробовать и то, и другое, и сделать выводы. А заодно и с остальными поделиться. Здесь не академия, тут не учат. Тут люди делятся своими наработками. Если этого никто раньше не делал, то никто и не бросит свои дела, чтобы сделать всю работу за вас. И это не потому, что все тут такие плохие. Просто у других людей тоже есть свои задачи, которые за них никто не сделает. Я не могу понять, к чему эти комментарии про обиженную гордость. Это не дает ответа, а только отвлекает других (например, мне приходят сообщения о новой информации на этой странице, и я вместо чего-то дельного вижу очередную попытку доказать, что «я не такой»). Мой Вам совет — просто поищите информацию. Ее по тому же MIGX немало. Полного ответа не обещаю, но что-то, что поможет — точно есть. И НИКТО не будет заниматься этим за вас.
и опять не слова по существу вопроса :)! Люди ходят учиться машины водить, на права сдают. так я и учусь «водить», получаю ответы на не понятные вопросы, пробую, пытаюсь и делаю, кто сказал что такой метод изучения плохой. Не надо плакаться. Так я и не плакался, а заявил с гордостью!!! :) Одно дело браться за то, чего чуть-чуть не знаешь, или можешь освоить в короткое время, другое дело браться за то, что без других явно не осилишь. Забавно, а для меня непомерные цели всегда являлись только стимулом к их достижению, жалко что вы сдаетесь на начальном этапе и не стремитесь к непомерному :), наверно по этому пытаетесь давать плохие жизненные советы. :)
то есть если не умеешь водить машину, то и не берись — ЭТО СЛОЖНО! АЙ-АЙ. Люди ходят учиться машины водить, на права сдают. И, сразу после сдачи за вождение атомной подлодки не пытаются сесть. или вас мама сразу «умным» и «всёзнающим» родила?! Нет, не всезнающим. Многое пришлось самому осваивать, и это долгий процесс. Но и сейчас я не берусь за то, чего явно не знаю в большом объеме. Одно дело браться за то, чего чуть-чуть не знаешь, или можешь освоить в короткое время, другое дело браться за то, что без других явно не осилишь. Мне не повезло, я нигде не учился программированию, до чего сам дошел, то и знаю, Не надо плакаться. Мало кто учился. И я не учился. Еще раз: вопрос не в ваших знаниях, а в подходе к работе. Не беритесь за то, что явно не по зубам, и плакаться не придется на невезение. Все очень просто. К чему — эта фраза вообще? не хотите по существу ответить — не надо, а учить как мне жить, за что браться, за что нет — не стоит я думаю ;)! Вам, в силу недостатка опыта, не понятно на сколько сложная задача. Для вас она видимо просто сложная, то есть которую с подсказками можно решить. Я вам подсказываю, что это ваша большая и грубая ошибка. Я вас таким образом не научу программировать больше, но пытаюсь до вас донести, что надо более внимательно относиться к задачам и не хвататься за все подряд. Это тоже часть развития. Если вам такое развитие не нужно, то вряд ли вы станете хорошим программистом, потому что всего вы все равно не сможете знать и уметь (как и я не все знаю и умею), но будете лажать с непомерными задачами и по своей вине.
Либо обновились, либо Вас поломали другим способом.
На счет объемности, как раз на мой взгляд не выглядит объемно, эти 22 параметра могут быть или 1 или 0 других значений не бывает по этому не ожидал что буду проблемы с их обработкой а вот документов набралось пока 700 -800, ожидается до 2000 в обозримом будущем , но получилось в итоге что сразу все обработать не получается