Для разработчиков
Испытание ИИ Cursor
Я потихоньку использую ИИ в своей работе. Использовал Codeium расширение для VSCode. Но тут наступила печалька. Codeium в россии перестал работать. Но как оказалось это к счастью :-). В поисках альтернатив наткнулся на Cursor. Он не расширение для VSCode, а уже его форк чтобы больше функций ИИ разрабы смогли воткнуть в среду программирования.
Cursor гораздо лучше пишет код и самая главная новая для меня фишка он умеет почти автоматически применять его к файлам кода. Остаеться только просмотреть изменения и пронажимать принять.
Cursor гораздо лучше пишет код и самая главная новая для меня фишка он умеет почти автоматически применять его к файлам кода. Остаеться только просмотреть изменения и пронажимать принять.
Плюсы и минусы Vue и gtsAPI
Вот уже год как веду разработку с использованием Vue. Хочу поделиться впечатлениями от этой технологии и очень интересно, что думают другие разработчики.
Localizator: TV и MIGX не переводило, а ларчик оказалось открывался просто
Столкнулся с одной особенностью работы Localizator с MIGX и TV.
Все никак не получалось заставить Localizator правильно переводить MIGX поля и в некоторых случаях отдельные TV поля. Перепробовал кучу вариантов, пытался выводить через выводы сниппетов localizator, pdoResources, getImageList. Потратил пару суток впустую, кучу нервов и сил.
А в итоге оказалось все просто. Случайно обнаружил что некоторые TV переводит, а некоторые нет.
В некоторых местах я MIGX выводил следующим образом:
В итоге вывод этого кода не переводился как надо, выводился только MIGX не из переводов.
Но если заменить
Все никак не получалось заставить Localizator правильно переводить MIGX поля и в некоторых случаях отдельные TV поля. Перепробовал кучу вариантов, пытался выводить через выводы сниппетов localizator, pdoResources, getImageList. Потратил пару суток впустую, кучу нервов и сил.
А в итоге оказалось все просто. Случайно обнаружил что некоторые TV переводит, а некоторые нет.
В некоторых местах я MIGX выводил следующим образом:
{set $rows = json_decode($_modx->resource.id | resource : 'migx_why_us_list', true)}
{foreach $rows as $idx =>$row1 index=$index}
<li>
{$row1.textprichini}
</li>
{/foreach}
где migx_why_us_list — MIGX поле.В итоге вывод этого кода не переводился как надо, выводился только MIGX не из переводов.
Но если заменить
$_modx->resource.id | resource : 'migx_why_us_list'
на $_modx->resource.migx_why_us_list
то все начинает работать как надо. Facade Laravel в Modx 2/3
Приветствую! В этом видео я хочу поделиться с вами способом упрощения работы с Modx Revolution, а именно — о том, как подключить Laravel Facade.
Многие разработчики сталкиваются с определенными сложностями при работе с Modx в Ide, и я не исключение. В поисках способов оптимизации процесса я обратил внимание на Laravel Facade — мощный инструмент, который может значительно упростить и ускорить разработку.
Многие разработчики сталкиваются с определенными сложностями при работе с Modx в Ide, и я не исключение. В поисках способов оптимизации процесса я обратил внимание на Laravel Facade — мощный инструмент, который может значительно упростить и ускорить разработку.
mmxFenom - нативная интеграция шаблонизатора
Продолжаю разработку новой вселенной дополнений для MODX и сегодня у нас на очереди шаблонизатор Fenom.
Свою известность в мире MODX этот шаблонизатор получил благодаря интеграции в pdoTools, после чего многие сниппеты стали поддерживать более удобный синтаксис и возможности расширения.
Однако, с течением времени компонент оброс огромным количеством функций и сейчас его разрабатывать очень трудно. Где-то поменяешь одно — сломаешь другое.
Да и с появлением mmxDatabase, как мне кажется, какие-то упрощённые выборки из БД просто теряют актуальность. Ведь сегодня можно в любом сниппете делать вот так:
Свою известность в мире MODX этот шаблонизатор получил благодаря интеграции в pdoTools, после чего многие сниппеты стали поддерживать более удобный синтаксис и возможности расширения.
Однако, с течением времени компонент оброс огромным количеством функций и сейчас его разрабатывать очень трудно. Где-то поменяешь одно — сломаешь другое.
Да и с появлением mmxDatabase, как мне кажется, какие-то упрощённые выборки из БД просто теряют актуальность. Ведь сегодня можно в любом сниппете делать вот так:
$resources = MMX\Database\Models\Resource::query()
->where('published', true)
->select('id', 'pagetitle')
->get()
->toArray();
return print_r($resources, true);
Не хватало только шаблонизатора для подобных выборок — и теперь он тоже есть. mmxApp - разработка новых composer дополнений
19 апреля в Белграде прошла встреча разработчиков, на которой я рассказал про создание новых composer-only дополнений.
По старой традиции, заодно предложил и готовое решение для этой разработки, как уже было с modExtra и App.
Новый проект называется mmxApp, и предназначен для локальной разработки в Docker на Linux и MacOS.
По старой традиции, заодно предложил и готовое решение для этой разработки, как уже было с modExtra и App.
Новый проект называется mmxApp, и предназначен для локальной разработки в Docker на Linux и MacOS.
Расширить group_concat_max_len для всего сайта MODX
Чтобы не забыть расширить значение group_concat_max_len просто добавляем параметр в конфиг сайта
$driver_options = array (
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET SESSION group_concat_max_len=20000'
);
Вывод меню выбора языков для Localizator
Понадобилось сделать меню для сайта с выбором языка. В стандартной документации везде подставляют иконки языка, без текста названия языка.
Я нигде не нашел как можно вытащить название языка (локализации) и указать его в меню выбора языков справа от иконки языка. А оказалось все просто.
В сниппете getLanguages можно было просто добавить еще один плейсхолдер 'languageName'=> $language->name (к имеющимся cultureKey, active и url).
section-langs-1:
Я нигде не нашел как можно вытащить название языка (локализации) и указать его в меню выбора языков справа от иконки языка. А оказалось все просто.
В сниппете getLanguages можно было просто добавить еще один плейсхолдер 'languageName'=> $language->name (к имеющимся cultureKey, active и url).
foreach($languages as $language) {
if(mb_substr($language->http_host, -1) == '/') {
$placeholders = array(
'cultureKey' => $language->key,
'active' => $language->key == $modx->localizator_key ? 'active' : '',
'url' => $protocol . $language->http_host . $uri,
'languageName'=> $language->name,
);
} else {
$placeholders = array(
'cultureKey' => $language->key,
'active' => $language->key == $modx->localizator_key ? 'active' : '',
'url' => $protocol . $language->http_host . '/' . $uri,
'languageName'=> $language->name,
);
}
И в чанках просто добавить {$languageName}section-langs-1:
<a href="#" class="nav-link dropdown-toggle {if $_modx->config.cultureKey == $cultureKey} {$active} {else} collapse {/if} localizator_lang" data-bs-toggle="dropdown" role="button" aria-expanded="false" >
<span class="{$cultureKey}_24" style="display: inline-block;"></span>
{$languageName}
</a>
section-langs-2:{if $_modx->config.cultureKey != $cultureKey}
<li >
{if $active != 'active'}
<a class="{$active} localizator_lang" href="{$url}" class="dropdown-item">
<span class="{$cultureKey}_24" style="display: inline-block;"></span>
{$languageName}
</a>
{else}
<div class="{$active} {$cultureKey}_24 localizator_lang" class="dropdown-item">
<span class="{$cultureKey}_24" style="display: inline-block;"></span>
{$languageName}
</div>
{/if}
</li>
{/if}
[СДЕЛАЙ САМ] Импорт товаров MiniShop2 из xml. Версия 2.0
Приветствую, коллеги. почти год назад я выложил эту заметку, но за это время пришло понимание, что скрипт мягко говоря «неидеальный»: он работает медленно, импортирует всё подряд, запуск требует ежеминутного выполнения задания по крон. В новой версии всего этого нет, а за идею для улучшения спасибо @crystaldaking.
modPrimeVueExtra - заготовка для разработки с Vue
Решил перейти на реактивные UI фреймворки и сделал заготовку для более удобной разработки с ними, с MODX и с gtsAPI — компонент API для MODX
У нас на MODX много функционала и сразу перейти на какой-то JS фреймворк нельзя. Как и задумывалось заготовка реализует какой-то смешанный режим разработки между стандартным для Vue путем и путем компонентов MODX.
В заготовке сделан GRUD таблицы базы данных MODX. На основе PrimeVue
У нас на MODX много функционала и сразу перейти на какой-то JS фреймворк нельзя. Как и задумывалось заготовка реализует какой-то смешанный режим разработки между стандартным для Vue путем и путем компонентов MODX.
В заготовке сделан GRUD таблицы базы данных MODX. На основе PrimeVue