Форум русской поддержки Joomla!® CMS
27.05.2017, 17:56:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Две разные ссылки для конкретных языков

 (Прочитано 200 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Acme
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« : 15.03.2017, 13:11:57 »

Всем привет!
Такой вопрос. В шаблоне прописан URL на одну страницу ( к примеру, на русском языке ):
Код:
<h2><a href="http://ссылка/internets"><?php echo JText::_( 'TPL_LINKTI_HOME_PACKAGES_TITLE' ); ?>  </a></h2>
Как можно сделать, чтобы при переключении языка менялась ссылка? То есть, прописать в шаблоне две ссылки.
« Последнее редактирование: 15.03.2017, 13:30:15 от Acme » Записан
SeBun
Практически профи
*******

Репутация: +177/-5
Offline Offline

Пол: Мужской
Сообщений: 2863



« Ответ #1 : 15.03.2017, 13:18:36 »

Нет. TPL_LINKTI_HOME_PACKAGES_TITLE - это константа, содержащая, как я понимаю из названия, заголовок страницы. Где то в файлах шаблона есть файл локализации, в котором и прописан перевод. Например, там может быть такая строка:
Код
TPL_LINKTI_HOME_PACKAGES_TITLE = "This is title";

Ваша задача - найти этот файл. Обычно для каждого языка делается отдельная папка с префиксом языка и файл с префиксом, например en_EN.templatelang.ini, ваша задача сделать копию этого файла, изменить префикс на ru_RU и перевести его содержимое. Локализация может быть в папках language движка (их две, одна для админки).
Записан
Acme
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #2 : 15.03.2017, 13:32:34 »

Нет. TPL_LINKTI_HOME_PACKAGES_TITLE - это константа, содержащая, как я понимаю из названия, заголовок страницы. Где то в файлах шаблона есть файл локализации, в котором и прописан перевод. Например, там может быть такая строка:
Код
TPL_LINKTI_HOME_PACKAGES_TITLE = "This is title";

Ваша задача - найти этот файл. Обычно для каждого языка делается отдельная папка с префиксом языка и файл с префиксом, например en_EN.templatelang.ini, ваша задача сделать копию этого файла, изменить префикс на ru_RU и перевести его содержимое. Локализация может быть в папках language движка (их две, одна для админки).
Вы меня не совсем так поняли. Где константы менять я знаю, вопрос в другом - ссылки. Дело в том, что, к примеру, при нажатии на заголовок "Акции" переходит все время на одну и туже страницу. То есть, как видно из кода на эту http://ссылка/internets, как сделать, чтобы при русской локализации переходило на http://ссылка/internets, а, к примеру, в англ.версии на http://ссылка/internets-en? В моем представлении можно это организовать через PHP (IF), но я пока-что не могу понять как это можно реализовать.
Записан
SeBun
Практически профи
*******

Репутация: +177/-5
Offline Offline

Пол: Мужской
Сообщений: 2863



« Ответ #3 : 15.03.2017, 13:58:01 »

Теперь понял )

В этом случае вам нужно перед выводом ссылки поставить условие, в котором будет определяться язык пользователя и в соответствии с ним будет формироваться адрес. Пример, как получить текущий язык. Сможете самостоятельно сделать?
Записан
Acme
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #4 : 15.03.2017, 14:14:17 »

К сожалению, самостоятельно наврятли получится. Может знаете ссылку на более приближенной вариант к текущей теме?
Записан
SeBun
Практически профи
*******

Репутация: +177/-5
Offline Offline

Пол: Мужской
Сообщений: 2863



« Ответ #5 : 15.03.2017, 15:08:53 »

Строку:

Код
<h2><a href="http://ссылка/internets"><?php echo JText::_( 'TPL_LINKTI_HOME_PACKAGES_TITLE' ); ?>  </a></h2>

замените на:

Код
<h2><a href="http://ссылка/internets"><?php 
 
$app = JFactory::getApplication();
 
// Определяем язык из cookies
$langCode = $app->input->cookie->getString(JApplication::getHash('language'));
 
// Если cookies не установлены, используем язык обозревателя
if (!$langCode)
{
   $langCode = JLanguageHelper::detectLanguage();
}
 
if ($langCode == 'ru-RU') {
     echo 'ru/' . JText::_( 'TPL_LINKTI_HOME_PACKAGES_TITLE' );
}
else {
    echo 'en/' . JText::_( 'TPL_LINKTI_HOME_PACKAGES_TITLE' );
}
?>  </a></h2>

Не знаю, будет ли работать, набросал вам пример из предложенного кода. Здесь выполняется проверка, какой язык установлен, и в зависимости от этого формируется ссылка (в моем случае подставляет паку ru и en в адрес). Модифицируйте под себя.
Записан
fsv
Практически профи
*******

Репутация: +357/-2
Offline Offline

Пол: Мужской
Сообщений: 2487


« Ответ #6 : 15.03.2017, 17:20:48 »

Вариант проще и универсальнее (языков может быть много):
Код
<h2><a href="<?php echo JText::_('TPL_LINKTI_HOME_PACKAGES_TITLE_LINK'); ?>"><?php echo JText::_( 'TPL_LINKTI_HOME_PACKAGES_TITLE' ); ?></a></h2>
ru-Ru
Код
TPL_LINKTI_HOME_PACKAGES_TITLE_LINK="https://www.google.ru/"
en-En
Код
TPL_LINKTI_HOME_PACKAGES_TITLE_LINK="https://www.google.com/"

Записан
Acme
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #7 : 16.03.2017, 11:54:33 »

Спасибо всем за помощь! Воспользовался вариантом от fsv. Благодарю, fsv.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet