1 (2019-04-14 11:51:40 отредактировано 0zz)

Тема: Подстановка полей и их значений в компонентах

Мультиязычный сайт (6 языков).
Нужно чтобы на определённых страницах выводились ссылки на другие страницы в красиво оформленном виде. Для этого используются значения: название страницы, спец-поле и, разумеется, адрес страницы. Какие коды выводят эти поля в шаблоне?
Есть вот этот, например:

<?php getPageField('slug', 'field_name'); ?>

С его помощью можно взять значение спец-поля. Но нужно также вывести адрес и название указанной страницы. Спасибо!

Поделиться

2

Re: Подстановка полей и их значений в компонентах

В общем, нашел, оказывается все подставляется аналогично:
<?php getPageField('slug','title'); ?> и <?php getPageField('slug',url'); ?>

Но как бы сделать так, чтобы Заголовки подставлялись из нужной языковой версии на многоязычных сайтах?

Поделиться

3

Re: Подстановка полей и их значений в компонентах

Используете плагин i18n_navigation, i18n_base ?

Как бы сделал я: (даже без плагинов)

global $pagesArray; // XML Кеш содержит всю информацию о страницах сайта.
global $language; // язык браузера 

Вот, все что нужно есть.
Дальше как-то так:

foreach (pagesArray as $item) {
    
  $item['slug'] ."_". $language
  $item['discMin']
  $item['discLong']
  ......
    
}

У i18n navigation вроде даже есть функция получить массив страниц с нужным языком, не помню как называется.
Что-то вроде get i18n_pages_data(language).
или можно даже этим  return_i18n_menu_data вывести как вам нужно.

Сайт ufopera

Поделиться

4 (2019-04-14 16:01:27 отредактировано 0zz)

Re: Подстановка полей и их значений в компонентах

Звучит сексуально ))
Боюсь, несколько мудрённо для меня. Да, конечно использую i18n плагин.
Все что мне нужно сейчас - в компоненте выводить заголовок заданной страницы в зависимости от выбранного языка. Остальные поля - URL и спец-поле не меняются, поэтому они уже есть.. Компонент потом вызывается через Dynamic Pages на нужных страницах.

Чтобы было примерно так:

get_i18n_PageField('slug','title')

Но эта конструкция не работает. Я даже согласен, что если не title, то спец.поле хотя бы (тогда в него буду дублировать заголовок страницы).

Поделиться

5

Re: Подстановка полей и их значений в компонентах

можно попробовать так:

if( $language != "язык по умолчанию - например ru" ){
getPageField('slug'."_". $language ,'title');

Сайт ufopera

Поделиться

6

Re: Подстановка полей и их значений в компонентах

ufopera пишет:

можно попробовать так:

if( $language != "язык по умолчанию - например ru" ){
getPageField('slug'."_". $language ,'title');

Попробовал ваш вариант - не получилось. Попробовал даже так

<?php if( $language == 'en' ){
getPageField('historical-heritage'.'_en' ,'title'); ?>
... и далее перебор языков.

Не отображает ничего..

Поделиться

7 (2019-04-15 10:01:30 отредактировано ufopera)

Re: Подстановка полей и их значений в компонентах

Вот, быстро набросал, вполне себе универсальная ф-я,
со всеми проверками:

// универсальная ф-я get_i18n_PageField
// получить поля в зависимости от языка
// $slug = имя ст.
// $field = поле
// $language = язык (необязательно)
function get_i18n_PageField($slug,$field,$language=''){
    if(!$language)global $language;
    if(function_exists('return_i18n_languages') AND //если плагин установлен i18n
    in_array($language,return_i18n_languages()) AND //если язык поддерживается сайтом
    ($language != return_i18n_default_language()))  //если это не язык по умолчанию
    {
        getPageField($slug."_".$language,$field);
    }else{
        getPageField($slug,$field);// иначе используем встроенную ф-ю GS!
    }
}

пример:

<?php 
get_i18n_PageField($page_slug,'title'); 
get_i18n_PageField($page_slug,'title','en'); 
getPageField($page_slug,'title');
?>

Вообщем проверил работает, тестируйте.

Сайт ufopera

Поделиться

8

Re: Подстановка полей и их значений в компонентах

ufopera пишет:

Вообщем проверил работает, тестируйте.

гениально!!! Спасибо, земляк! Кстати, вот сам сайт: http://karakalpakstan.travel

Поделиться

9 (2019-04-15 10:46:38 отредактировано ufopera)

Re: Подстановка полей и их значений в компонентах

0zz пишет:

Попробовал ваш вариант - не получилось. Попробовал даже так

<?php if( $language == 'en' ){
getPageField('historical-heritage'.'_en' ,'title'); ?>
... и далее перебор языков.

Не отображает ничего..

скобку { нужно закрыть или убрать

0zz пишет:
ufopera пишет:

Вообщем проверил работает, тестируйте.

гениально!!! Спасибо, земляк! Кстати, вот сам сайт: http://karakalpakstan.travel

На здоровье!

Сайт ufopera

Поделиться