Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 126 комментариев

Олег Захаров
Олег Захаров
Все проще можно было сделать.
Можно было просто добавить еще один плейсхолдер 'languageName'=> $language->name (к имеющимся cultureKey, active и url) в сниппете getLanguages. В чанках подставлять просто {$languageName}
Олег Захаров
Олег Захаров
Я нигде не нашел как можно вытащить название языка (локализации).
Сделал такой сниппет 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
Илья Уткин
Илья Уткин
Да, проблема возникает, если пользователи пропустили какую-то версию MiniShop2 и обновились сразу на последнюю. Я так понимаю, в версии 3.х содержимое этих файлов заменялось на include файлов из другой папки, а в 4.x уже вовсю используются новые файлы, имея ввиду, что если старые файлы и были, то они обновлены.

А если юзер обновил с версии 2.х сразу на 4.х — вот тогда и возникает проблема.
Олег
Олег
В вашем примере скорее всего выводятся опции с типом список с автозаполнением. И.е заголовок-это название опции, а далее ее содержимое.

Мой вопрос о другом. Каждый чекбокс-это отдельная опция. Но вывод полного списка опций нужно разделить на группы
Андрей
Андрей
Добрый день!
если эта инструкция не помогла, что еще может влиять?
при выборе онлайн оплаты тинькофф в корзине появляется 500 ошибка, и решается только сбросом сессий.
Сергей Карпович
Сергей Карпович
Есть предложение по развитию компонента — подружить его с FileAttach/FileMan
Потому что последние также можно использовать как галереи.
И тут уже разворачиваются интересные функции вставки в контент не только изображений и галерей, но и файлов.