Олег Захаров

Олег Захаров

С нами с 14 октября 2017; Место в рейтинге пользователей: #218
Олег Захаров
15 марта 2024, 02:33
0
Спасибо! Как раз что-то подобное нужно было сделать и Вы прям вовремя.
Олег Захаров
15 марта 2024, 02:14
1
0
Не совсем понял в чем проблема, покажу как я делал — и у меня все работает без проблем:
Настройки контекста (затер данные немного, без разрешения собственника не могу светить):
или ссылка на фото на Яндекс.Диск https://disk.yandex.ru/i/K_HAhwSm7znIbg
Название в Общей информации:
или или ссылка на фото на Яндекс.Диск
https://disk.yandex.ru/i/kbMoT84UJfDNWA
Как видно на картинке название контекста указываю домен кириллицей и абракадаброй преобразованных на латиницу непонятно нечелевочески названий, чтобы было легче ориентироваться в админке и при переключении контектстов.
Олег Захаров
09 марта 2024, 04:25
0
А описание языка description можно вывести в чанке через
{$languageDescription}
, добавив в сниппет getLanguages плейсхолдер
'languageDescription'=> $language->description,
Олег Захаров
09 марта 2024, 03:50
0
Все проще можно было сделать.
Можно было просто добавить еще один плейсхолдер 'languageName'=> $language->name (к имеющимся cultureKey, active и url) в сниппете getLanguages. В чанках подставлять просто {$languageName}
Олег Захаров
09 марта 2024, 02:05
0
оформил как заметку https://modx.pro/lessons/24602
Получилась такая панелька.
Олег Захаров
09 марта 2024, 01:47
0
Я нигде не нашел как можно вытащить название языка (локализации).
Сделал такой сниппет getLanguageName:
<?php
if (isset($keysearch) && $keysearch === '') {
    $scriptProperties['keysearch'] = $modx->localizator_key;
}

$output = "";
$clang = $keysearch;/*$modx->config.cultureKey;*/
/*$languages = $modx->getIterator('localizatorLanguage'/*, $c*//*);*/
$languages = $modx->getIterator('localizatorLanguage', ['active' => 1]);
foreach($languages as $language) {
    if ($language->key==$clang) { 
        $output .= $language->get('name');
        
    }
}
return $output;
В чанках сделал так:
чанк section-langs-1
<a href="#" class="nav-link dropdown-toggle {if $_modx->config.cultureKey == $cultureKey} {$active} {else} collapse {/if}  localizator_lang" data-toggle="dropdown" data-bs-toggle="dropdown"  role="button" aria-expanded="false" >{*'localizator_key' | option} - {$_modx->config.cultureKey*} 
<span class="{$cultureKey}_24" style="display: inline-block;"></span>
{$_modx->runSnippet('!getLanguageName', ['keysearch'=>$cultureKey])}
  {*<img class="imglang {$active}" src="/assets/img/flags/{$cultureKey}.png" alt="{$cultureKey}">*}{*картинка языка подбирается из assets/app/images/flags/flag_24.png исходя из локали по настройкам assets/app/css/flag_24.css*}
</a>
Чанк: section-langs-2:
{if $_modx->config.cultureKey != $cultureKey}
<li >
  {if $active != 'active'}
    <a class="{$active} localizator_lang" href="{$url}" class="dropdown-item">{*картинка языка подбирается из assets/app/images/flags/flag_24.png исходя из локали по настройкам assets/app/css/flag_24.css*}
      {*<img class="imglang {$active}" src="/assets/img/flags/{$cultureKey}.png" alt="{$cultureKey}">*}
        <span class="{$cultureKey}_24" style="display: inline-block;"></span>
        {$_modx->runSnippet('!getLanguageName', ['keysearch'=>$cultureKey])}
    </a>
  {else}
    <div class="{$active} {$cultureKey}_24 localizator_lang" class="dropdown-item">{*картинка языка подбирается из assets/app/images/flags/flag_24.png исходя из локали по настройкам assets/app/css/flag_24.css*}
      {*<img class="imglang {$active}" src="/assets/img/flags/{$cultureKey}.png" alt="{$cultureKey}">*}
        <span class="{$cultureKey}_24" style="display: inline-block;"></span>
        {$_modx->runSnippet('!getLanguageName', ['keysearch'=>$cultureKey])}
    </div>
  {/if}
</li>
{/if}
Чанк вывода панели выбора языков:
<ul class="nav nav-pills localizator-block babel-block">
  <li class="langs nav-item dropdown">
     {$_modx->runSnippet('!getLanguages', ['tpl' => 'section-langs-1'])}
     <ul class="dropdown-menu">
       {$_modx->runSnippet('!getLanguages', ['tpl' => 'section-langs-2'])}
    </ul>
  </li>
                                                    
 </ul>
Вывожу для Bootstrap 5, а не как в
Причем как видно я переделал отображение знака языка не через картинку а через flag_24.png.
Использовал пример под Babel с
Заменил в нем косяки (языки kg на самом деле ky (там ky вообще какой то левый флаг не понял что за страна), ir (Иранский) у меня оформлен как fa (персидский),
Добавил стили
.localizator_lang{
    color: black!important;
    background-color: unset!important;
    align-items: center;
    display: flex;
}
в настройках .htaccess добавил так:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(ru|en|fa|tk|ky|abkhazia|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bl|bm|bn|bo|br|bs|bt|bw|by|by_|bz|ca|cd|cf|cg|ch|ci|cl|cm|cn|co|cr|cu|cv|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|england|er|es|et|eu|fi|fiji|fk|fm|fo|fr|ga|gd|ge|gg|gh|gl|gm|gn|gq|gr|gs|gt|gu|gw|gy|hk|hn|hr|ht|hu|id|ie|il|im|in|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kosovo|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mf|mg|mh|mk|ml|mm|mn|mo|mp|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nagorno-karabakh|nato|nf|ng|ni|ni_|nl|no|np|nr|nz|om|pa|pe|pg|ph|pk|pl|pn|pr|ps|pt|pw|py|qa|red_cross|ro|rs|ru|rw|sa|sb|sc|scotland|sd|se|sg|sh|si|sk|sl|sn|so|somaliland|south_ossetia|sr|ss|st|sv|sy|sz|tc|td|tg|th|tj|tm|tn|to|tp|tr|tt|turkish_republic_of_northern_cyprus|tv|tw|tz|ua|ug|uk|un|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wales|ws|ye|za|zm|zw)/assets(.*)$ assets$2 [L,QSA]
Получилась такая красота https://disk.yandex.ru/i/MG9-_uxLZDNTEA

Файл с иконками языка https://disk.yandex.ru/i/y-G8apn1dSooww
Файл css стилей https://disk.yandex.ru/d/R-eJsFVVQP5OmA
Олег Захаров
17 февраля 2024, 13:38
+1
во FRED попробовал вставлять код в элемент как чанк в формате [[$chunk]], а fenom прятать внутрь, вроде работает
Олег Захаров
16 февраля 2024, 23:05
+1
Попробовал Fred на тестовом сайте. Понравилась реализация. Но как только попробовал перенести чанки, оказалось что в элементах при добавлении кода на fenom он в редакторе элемента нормально добавляется, но при добавлении на фронтенде через fred код ломается — в коде меняется => на "=gt;". И итогом код fenom не работает. И как оказалось fenom во Fred не поддерживается. Как блин так!
И как оказалось с Fred много проблем и вопросовтут).
Печаль блин.
Так что ждем от вас ребят конструкторы тем, большую работу делаете.
Олег Захаров
16 февраля 2024, 23:05
0
Попробовал на тестовом сайте поставить mtDemo, но сил не хватило разобраться как все работает. Почему то у меня штуковины не добавляются.
А так идея классная. Очень нужна документация с примерами, пошагово как сделать свою тему и прикрутить ее к MagicThemes и сделать как пакет. Т.е. то что есть тяжело понять. Я 2 недели потратил пытаясь разобраться и понять что к чему, но сил уже нет, выгорел.
Попробовал Fred — классная штука, но не работает с fenom.
Если бы были такие классные штуки рабочие по темам, чтобы было понятно и работало — развитие MODx как мне кажется может оживиться.
Олег Захаров
09 февраля 2024, 00:10
0
А можно узнать на что пересели? И причины? Есть ли описание вашего мнения/опыта? Интересно мнение бывалых?
Олег Захаров
28 декабря 2023, 19:33
0
Мне кажется что идея API все равно актуальна. Вот заказчик захотел сайт. Сделали сайт, с большим функционалом и множеством плюшек. Много времени пользовались и наполнили данными. А потом Заказчик захочет мобильное приложение связанное с сайтом единой базой. Если использовать инструменты создания кроссплатформенных приложений то как мне думается (могу ошибаться) создав API на сайте через указанный выше gtsAPI и чтобы не изобретать велосипед заново на новом стеке технологий — будет гораздо проще и быстрее.
Хотя я сам пока такого не делал (так что мое мнение дилетанта), есть перспектива такая после сайта сделать мобильное приложение с подключением данных с сайта.
Олег Захаров
28 декабря 2023, 18:52
0
Для интернет-магазина на 100 000 товаров какой стек технологий порекомендуете?
Олег Захаров
28 декабря 2023, 18:38
0
Какие конкретно можете подсказать? И чем удобнее?
Олег Захаров
26 декабря 2023, 19:44
0
Как-то сложновато пока, хорошо бы документацию потом подробную разработать с примерами.
Чувствуется серьезный подход.
Народ давай поддержим Александра, хорошее дело делает.
А то как-то печально что как-то маловато выкладывают примеров работы MODx с Vue.js и сторонними библиотеками.
Олег Захаров
26 октября 2023, 17:47
0
Да и код заработал не сразу, а через 15 минут как указано в https://yandex.ru/dev/geosuggest/doc/ru/quickstart.
В первые моменты выводило ошибку доступа на
Access to XMLHttpRequest at 'https://suggest-maps.yandex.ru/v1/suggest?... from origin ... has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on
Олег Захаров
26 октября 2023, 17:43
0
Разобрался в чем была проблема. Автору дополнения надо учесть это.
Яндекс API изменилось.
Теперь помимо основного ключа Api в случае если на сайте используется поисковые подсказки (что в дополнении реализовано при вводе адреса доставки строка поиска suggestview и выводит всплывающими подсказками варианты адресов) — то надо подключить API Геосаджеста.
Ответ от Разработчиков (повторю здесь есть на просторах тырнета):
Теперь все обращения к Геосаджесту требуют ключа от этого сервиса, включая все подсказки в JavaScript API (SuggestView, поисковая строка, панель маршрутов). Подробней это описано на страницах используемых методов.

Чтобы использовать саджест в JS API:

Получите ключ для саджеста через личный кабинет.
Укажите его при подключении JS API в формате
https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=<ваш ключ для JS API>&suggest_apikey=<ваш ключ для Suggest API>
.
Угловые скобки вокруг полученного в кабинете разработчика ключа оставлять не надо.
Я добавил в кабинете разработчика ключ API Геосаджеста, добавил его в у себя на сайте.
А именно:
1. У меня подключение к API-карт продублировано в head перед подключением метрики, т.к. были проблемы с кодом метрики, конфликтовал. Не ставить код яндекс.карт рядом с кодом Яндекс.Метрики — замечена ошибка работы карт если код карт ставить рядом с кодом метрики. Также код ниже указан с apikey т.к. замечено что иногда код не подхватывается на мобильных устройствах — судя по справкам и анализу ошибок это связано с тем что в некоторых случаях браузер из-за низкой скорости интернета в основном на мобильных устройствах блокирует работу скриптов для ускорения.
<script src="https://api-maps.yandex.ru/2.1/?apikey=ваш_ключ_для_JS_API&suggest_apikey=ваш_ключ_для_Suggest_API&lang=ru_RU&mode=debug&load=package.full&onload=mscDistance.Ymaps.ready&ns=ymaps" type="text/javascript">
    </script>
2. apikey должны быть также указаны в assets/components/mscdistance/js/web/default.js:
if (!window.ymaps) {
	document.writeln('<script src="' +
		'https://api-maps.yandex.ru/2.1/?' +
		'lang=ru_RU' +
		'&mode=debug' +
		'&load=package.full' +
		'&onload=mscDistance.Ymaps.ready' +
		'&ns=ymaps' +
		'&apikey=ваш_ключ_для_JS_API' +
		'&suggest_apikey=ваш_ключ_для_Suggest_API' +
		'"><\/script>');
}