собственно сабж. А то Россия в середине списка, выбирать на смартфоне многим лень.
Нашел вроде вот тут https://www.drupal.org/project/countries/issues/2464651 но из-за недостаточности знаний не знаю как это реализовать. Буду благодарен за совет.
собственно сабж. А то Россия в середине списка, выбирать на смартфоне многим лень.
Нашел вроде вот тут https://www.drupal.org/project/countries/issues/2464651 но из-за недостаточности знаний не знаю как это реализовать. Буду благодарен за совет.
Комментарии
Тут можно или препроцессом сделать на бэке или JS-ом на фронте
Не сомневаюсь в этом, вопрос в том как это сделать. По ссылке даже код приведен, может кто глянуть как это использовать?
Вот была хорошая статья
Сделал, включил. Чуда не произошло, порядок стран не поменялся. Да и с чего бы он поменялся, если к функции function templatename_form_element(&$vars) которая прописана в модуле никто не обращается?
Что сделал? Что включил? Почему должно произойти чудо?
templatename нужно заменить на имя своего кастомного модуля
т.е если у меня имя модуля rustop то будет function rustop_form_element(&$vars)
Как это должно сработать, поясните?
Хуки в друпале
Спасибо. Почитал, основную идею понял, чтобы полностью разобраться нужно больше времени. Заменил имя как вы сказали и все равно ничего не изменилось. Куда копать?
Чтобы хуки начали работать (при условии что всё написано правильно), нужно сбросить кэш друпала
Ну, это-то я сделал в первую очередь. Не работает. Может, конечно, код кривой, не знаю как проверить.
Там пишут что вот этот код должен работать
<?php
function hook_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'views_exposed_form' && $form['#id'] == '??') {
$form['name_list']['#options'] = array('US'=>'United States') + $form['name_list']['#options'];
}
}
?>
Нужно слово hook в названии функции заменить на имя своего модуля
И ?? заменить на свой form id в коде
Да и вообще через отладчик проверить все айдишники и имена форм и заменить на свои
Да, что-то я ступил. Видел это, а скопировал верхний. Сейчас буду пробовать, спасибо.
Не получилось. А нужно form id всей формы или конкретного поля? Впрочем, перепробовал разные варианты.
Там названия стран можно редактировать? Поставьте пробел перед " Россия", и дело с концом.
Перевод можно редактировать, но это ничего не даст, т.к сортировка по латинице. И вообще такое решение не комильфо.
Ну тут видите какое дело - для того, чтобы разобраться и предоставить готовое решение на блюдечке с голубой каемочкой, кто-то должен нырнуть в редкий модуль давно забытой прогрессивным человечеством версии Друпала. Видимо, у всех присутствующих другие планы на свое свободное время. Тут либо самому разбираться, либо искать исполнителя за деньги.
Ну, вроде как активность в этой ветке предполагает затраты свободного времени. Вас ведь никто не заставляет отвечать мне. А по поводу "давно забытой версии Drupal" - у вас неверные сведения. Пока эту версию используют более половины сайтов на Drupal https://www.drupal.org/project/usage/drupal
А что нельзя в настройках поля или в словаре поднять любимую страну?
Вы считаете что я не догадался посмотреть в настройках модуля? Нет в модуле сountries такой возможности.
Ааааа. У вас оказывается особый модуль есть. Может подпилить его? Откуда он берет названия стран?
Если вас действительно это интересует - перейдите по ссылке выше. Ответ там
Разобрался. Сделал кастомный модуль:
<?php /**
// Удаляем Россию из списка.
// Сортируем оставшиеся страны по английским названиям.
// Добавляем Россию в начало списка.
* Implements hook_countries_alter().
*/
function custom_country_sort_countries_alter(&$countries) {
// Проверяем, есть ли в списке Россия.
if (isset($countries['RU'])) {
// Сохраняем значение России.
$russia = $countries['RU'];
unset($countries['RU']);
uasort($countries, 'countries_sort');
$countries = array('RU' => $russia) + $countries;
}
}?>