Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] WPML, двуязычный сайт на wordpress и проблемы при сортировке. (http://forum.oszone.net/showthread.php?t=289398)

typus 14-10-2014 15:54 2415286

WPML, двуязычный сайт на wordpress и проблемы при сортировке.
 
Изменил первоначальное сообщение, так как залил вчера двуязычную версию сайта на сервер, и могу теперь данную проблему показать более наглядно.

Приветствую, достаточно спешно ищу удовлетворительное решение следующей проблемы.
Есть сайт на вордпрессе, собственно, вот он, в настоящее время языков 2 - англ и рус.
Проблема.
При применении любого правила сортировки (например, см пункт меню Properties) при втором (недефолтном) языке результат сортировки выдается на дефолтном языке....Т.е. у меня дефолтный англ, второй - рус, например, тот же пункт меню Properties у меня назван Объекты и находится по адресу - связан с англ
Теперь я например хочу отсортировать объекты по цене по возрастанию, находясь в русской версии, результат получаю как т.е. по англ.
Если я вручную добавляю ru - - результат сортировки корректный, но как добиться, чтобы это []ru[/] при сортировке не удалялось, не пойму...

Единственное похожее видел в гугле .... - но там как видно сортировка посредством woocommerce, а у меня тут woocommerce нет... Однако думаю все равно как то должно это решаться, может быть, где то можно вручную (htaccess?) прописать редиректы для соотв-их урлов, благо их там немного.

Т.е. если нет красивого и правильного решения, возможно ли каким то образом задать редиректы, например с .... редиректить на ..., но конечно только для переходов с любой []ru[/] страницы ( ...... )

typus 19-10-2014 16:22 2417468

Написал в суппорт автора шаблона, как вариант, в непереведенных местах использовать условие для вывода нужного контента или подключения оного в зависимости от текущей языковой локали.
Поскольку для многоязычности используется wpml, автор предложил использовать следующую конструкцию:
Код:

    {% if ICL_LANGUAGE_CODE=='ru' %}
        {выводим для ru}
    {% else %}
        {выводим для en}
    {% endif %}

Что самое смешное, в гугле довольно много комментов по данной проблеме, и в основном, все у людей работает.
У меня - нет.
Если использую код выше, то результат сортировки всегда - в обоих языках - выводится на англ, если изменяю на
Код:

    {% if ICL_LANGUAGE_CODE=='en' %}
        {выводим для en}
    {% else %}
        {выводим для ru}
    {% endif %}

то результат сортировки в обоих языках всегда по русски.
Автор темы стал меня игнорировать, сказал, типа, все должно работать, но у меня не срабатывает и я искренне недоумеваю, в чем проблема.
Если мыслить логически, исходя из результатов сортировки, условие срабатывает, но переменная ICL_LANGUAGE_CODE всегда в первом случае возвращает false - и совершенно не понятно, почему...
Использую ICL_LANGUAGE_CODE для вывода нужных виджетов - в зависимости от языка - все срабатывает...а тут нет...
Предлагается всесто ICL_LANGUAGE_CODE использовать wpml_current_lang - результат абсолютно идентичен предыдущему...
Есть идеи?

typus 20-10-2014 13:46 2417900

Проблема решена, публикую решение, может, кому то еще пригодится.

Для начала необходимо внести изменения в соответствующий php файл, в моем случае это archive-property.php - если изменения будут вноситься в другие шаблоны, необходимо найти соотв-ий php-файл и внести данное изменение в него.
Например, для header.twig это header.php, для footer.twig это footer.php ну и т.д.

Я буду вносить изменения в шаблон sort.twig, который подключен к шаблону archive-property.twig, поэтому первое изменение я и вношу в файл archive-property.php,

Итак, в archive-property.php в секцию echo View::render необходимо добавить след-ю строку:
Код:

'wpml_current_lang' => ICL_LANGUAGE_CODE
После чего уже изменения можно вносить в шаблон.

Я изменяю sotr.twig, но можно создать свой шаблон для нужного языка и подключать его.
Я изменяю в sort.twig
Код:

        <form action="{{ wp.get_bloginfo('wpurl') }}/{{ wp.__('properties', 'aviators') }}/" method="get" class="form-sort form-horizontal">
на
Код:

        {% if wpml_current_lang == 'en' %}
        <form action="{{ wp.get_bloginfo('wpurl') }}/{{ wp.__('properties', 'aviators') }}/" method="get" class="form-sort form-horizontal">
        {% else %}
            <form action="{{ wp.get_bloginfo('wpurl') }}/{{ wp.__('ru/properties', 'aviators') }}/" method="get" class="form-sort form-horizontal">
        {% endif %}

И все работает, условие отрабатывает корректно, и сортировка также корректно работает.


Время: 15:39.

Время: 15:39.
© OSzone.net 2001-