Дмитрий
С нами с 25 декабря 2019; Место в рейтинге пользователей: #3001Создание правильных тем для MODx. Мой опыт.
Всем привет.
Данная статья может вызвать резкую вибрацию в районе точки G и полыхание седалищ у высококвалифицированных специалистов MODx и некоторых других людей по следующим причинам:
Данная статья может вызвать резкую вибрацию в районе точки G и полыхание седалищ у высококвалифицированных специалистов MODx и некоторых других людей по следующим причинам:
- Я не графоман и не жажду писать орфографически правильно, но и по албанский стараюсь не писать.
- Я не считаю себя великим разработчиком и каждый день стараюсь совершенствоваться.
- Я имею право на свое мнение и именно им хочу поделиться. Принять его или нет — ваш выбор.
- Я пишу MODx — потому что это красиво, а я хочу чтобы MODx был красивым.
- Будет много букв, осилят только самые стойкие.
Работаем на MacOS с Valet Plus
Привет, друзья!
Многие знают, что я всегда был против локальной разработки, и предпочитал использовать виртуальную машину с настоящим GNU/Linux, где всё работает точно так же, как и на хостинге. Никаких XAMPP, WAMP и прочих Denwer.
Но недавно меня познакомили с Valet Plus, и как-то очень уж он мне понравился. Внимание, Valet работает только на MacOS, поэтому дальше стоит читать исключительно обладателям этой ОС.
Итак, Valet Plus, это улучшенная версия обычного Laravel Valet, которым я ни разу не пользовался. Смысл в том, что вам на компьютер устанавливаются PHP, Nginx, DnsMasq и MySQL, а потом постоянно работают в фоне. И когда вы добавляете новый сайт, он просто сразу начинает работать по адресу типа new-project.test. Не нужно править /etc/hosts и колдовать с настройками Nginx, всё работает само.
И самое важное, что работает точно так же, как и на хостинге, потому что MacOS — это Unix-совместимая система, очень похожая на GNU/Linux и FreeBSD, которые крутят 99% всех shared-хостингов. И вы устанавливаете нормальные версии сервисов для неё, а не какие-то специально приготовленные.
Многие знают, что я всегда был против локальной разработки, и предпочитал использовать виртуальную машину с настоящим GNU/Linux, где всё работает точно так же, как и на хостинге. Никаких XAMPP, WAMP и прочих Denwer.
Но недавно меня познакомили с Valet Plus, и как-то очень уж он мне понравился. Внимание, Valet работает только на MacOS, поэтому дальше стоит читать исключительно обладателям этой ОС.
Итак, Valet Plus, это улучшенная версия обычного Laravel Valet, которым я ни разу не пользовался. Смысл в том, что вам на компьютер устанавливаются PHP, Nginx, DnsMasq и MySQL, а потом постоянно работают в фоне. И когда вы добавляете новый сайт, он просто сразу начинает работать по адресу типа new-project.test. Не нужно править /etc/hosts и колдовать с настройками Nginx, всё работает само.
И самое важное, что работает точно так же, как и на хостинге, потому что MacOS — это Unix-совместимая система, очень похожая на GNU/Linux и FreeBSD, которые крутят 99% всех shared-хостингов. И вы устанавливаете нормальные версии сервисов для неё, а не какие-то специально приготовленные.
Проблемы с авторизацией через Яндекс в HybridAuth
Добрый день!
У всех нормально работает авторизация через Яндекс в HybridAuth?
У меня с сегодняшнего дня (07.05.2020) начала вываливаться ошибка в логах:
PS Ну соответственно слетела авторизация через Яндекс на всех моих сайтах.
У всех нормально работает авторизация через Яндекс в HybridAuth?
У меня с сегодняшнего дня (07.05.2020) начала вываливаться ошибка в логах:
[HybridAuth] Provider returned an error: invalid_scope Не удалось определить список запрашиваемых доступовСоответственно Яндекс пишет:
Не удалось определить список запрашиваемых доступов (invalid_scope)Проблема, по всей видимости, с GET-параметром scope, сейчас в нем передаются пустые данные "scope=". В документации указано «Если параметры scope и optional_scope не переданы, то токен будет выдан с правами, указанными при регистрации приложения.». Проверил, права в приложении указаны, но авторизация не проходит. Если в GET-параметре вручную указать "scope=login:birthday login:email login:info login:avatar", то авторизация проходит норм.
PS Ну соответственно слетела авторизация через Яндекс на всех моих сайтах.
[MODX/Laravel] DevDocker - удобная разработка под Linux
Всем приветики, в общем ни для кого не секрет что докер — это шикарная магическая штука и где то там его активно используют но не в modx конечно, где код до сих пор пишут в браузере. В общем 4 года я был в поиске оптимального решения как правильно и удобно вести разработку проектов (раньше на MODX, сейчас на фреймворках) и в итоге могу точно заявить, что я нашел идеальное решение! Под катом я расскажу все что я пробовал за 4 года и минусы каждого решения, ну а не терпеливые могут просто посмотреть видео сборки, которая решает их все или перейти сразу к гитхабу:
Видео
GitHub
Теория выгрузок из 1С в MODX (часть 1 из 2)
И снова привет!
Выгрузка товаров на сайт — это самый, самый частый кейс моей мини-студии. Для реализации мелких-средних интернет-магазинов используем классическую и сверхпопулярную связку MODX+miniShop2, для крупых — нет, но я как-нибудь обязательно расскажу почему.
Выгрузка товаров на сайт — это самый, самый частый кейс моей мини-студии. Для реализации мелких-средних интернет-магазинов используем классическую и сверхпопулярную связку MODX+miniShop2, для крупых — нет, но я как-нибудь обязательно расскажу почему.
TableOfContents
Компонент создаёт SEO-дружественное содержание для страниц.
Перебор массива в fenom
Друзья, сломал голову, как обернуть определенным тегом только первый элемент массива?
{foreach $files as $file}
{if $file@first} <i>{$file['id']}</i>{/if}
<b>{$file['id']}</b>
{/foreach}
Но так в теге <i> оказываются все элементы. Шпаргалка на все случаи жизни
Полезные ссылки, которые Вам пригодятся в некоторых ситуациях.
Вывод изображений TV MIGX через FENOM
Друзья, изучаю FENOM и сразу сталкнулся с неприятной историей с путями к рисункам, есть TV MIGX indexgroup,
там используется рисунок, во кладках формы прописано так, использую простой TV с прописаным источником файлов от корня сайта /img/. в этой папке все остальные каталоги рисунков и рисунки.
[[+image:phpthumbsup=`w=240&h=240&zc=1&q=100`]]
Результат от корня с папкой IMG, порядок:
/phpthumbsup/w/240/h/240/zc/1/q/100/src/img/catalog/Layer1.png
там используется рисунок, во кладках формы прописано так, использую простой TV с прописаным источником файлов от корня сайта /img/. в этой папке все остальные каталоги рисунков и рисунки.
{"field":"image","caption":"Фото","inputTV":"image"},
Если вывожу обычным способом через парсер MODx как раньше, то все хорошо.[[getImageList?
&tvname=`indexgroup`
&tpl=`test`
]]
Чанк test[[+image:phpthumbsup=`w=240&h=240&zc=1&q=100`]]
Результат от корня с папкой IMG, порядок:
/phpthumbsup/w/240/h/240/zc/1/q/100/src/img/catalog/Layer1.png
AjaxForm + Register
Нигде не нашел решения как сделать регистрацию из стандартного пакета Login через AjaxForm, ниже мое решение может кому пригодиться.
1 Размещаем сниппет AjaxForm где требуется (на странице, в попап окне и т.п.)
Рейтинга для размещения в разделе Решения не хватило, поэтому публикую здесь.
1 Размещаем сниппет AjaxForm где требуется (на странице, в попап окне и т.п.)
[[!AjaxForm?
&snippet=`custRegister`
&form=`tpl.register.form`
&submitVar=`signup-btn`
&activationResourceId=`9`
&activationEmailTpl=`lgnActivateEmailTpl`
&activationEmailSubject=`Thanks for Registering!`
&usergroups=`Users`
&usernameField=`email`
&generatePassword=`1`
&validate=`nospam:blank,
fullname:required:minLength=^3^,
email:required:email`
&placeholderPrefix=`reg.`
]]
2 Создаем чанк tpl.register.form с формой<form id="signup-form" action="[[~[[*id]]]]" method="post">
<input type="hidden" name="nospam">
<input type="hidden" name="password" value="11111111">
<input type="text" name="fullname">
<small class="alert-fullname"></small>
<input type="email" name="email">
<small class="alert-email"></small>
<input type="submit" name="signup-btn" form="signup-form" value="Signup">
</form>
3 Создаем сниппет custRegister<?php
$result = $modx->runSnippet('Register', $scriptProperties);
foreach($modx->placeholders as $key => $ph){
if(strpos($key, $scriptProperties[placeholderPrefix].'error.') === 0) $placeholders[$key] = $ph;
}
if($modx->getPlaceholder($scriptProperties[placeholderPrefix].'validation_error')) return $AjaxForm->error('Form has errors', array('error' => $placeholders));
else return $AjaxForm->success('Form is valid');
4 На странице с формой добавляем скрипт, который заполнит алерты или сообщит об успехе или еще все что угодно<script>
$(document).on('af_complete', function(event, response){
$.each(response.data.error, function(index, value){$(response.form).find('.alert-' + index.split(".").pop()).html(value);});
response.message='';//jGrowl - off
});
</script>
Вот и всё!Рейтинга для размещения в разделе Решения не хватило, поэтому публикую здесь.