Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Не работает конструкция IF

Есть любые вопросы, связанные со стилями/темами для phpBB 3.2.x или 3.3.x? Задайте их здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Zhu-zhu
phpBB 1.2.0
Сообщения: 13
Стаж: 5 лет 1 месяц
Благодарил (а): 1 раз

Не работает конструкция IF

Сообщение Zhu-zhu »

Здравствуйте!

Не работает в файле overall_header.html следующий код:

Код: Выделить всё

<!-- IF L_USER_LANG == 'ru' -->
<!-- INCLUDE forum_menu_ru.htm -->
<h1>Форум {L_USER_LANG}</h1>
<!-- ELSE -->
<!-- INCLUDE forum_menu_en.htm -->
<h1>Forum {L_USER_LANG}</h1>
<!-- ENDIF -->
(Здесь на заголовок H1 не обращайте внимания - это для проверки)

Понимаю, что я чего-то простейшего не понимаю. Но у меня значение языковой переменной L_USER_LANG не попадает в проверку условия, хотя в заголовке отображается. Что я делаю не так?

Пояснения: это для того, чтобы над форумом вставлялось меню сайта на языке пользователя, если он зарегистрирован, или на английском для гостя. Сайт двуязычный.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Не работает конструкция IF

Сообщение Татьяна5 »

Подход не тот
Установите английский для аккаунта гостя (Anonymous), да и всё
Слов в файлах шаблонов на любом языке быть не должно, они должны быть в языковых файлах
Zhu-zhu
phpBB 1.2.0
Сообщения: 13
Стаж: 5 лет 1 месяц
Благодарил (а): 1 раз

Re: Не работает конструкция IF

Сообщение Zhu-zhu »

Я, наверное, не так объяснил. Сам форум работает замечательно, всё в нём настроил. Но форум - это часть двуязычного сайта, у которого есть свои два меню - русское и английское. Вот мне и надо, чтобы в зависимости от языка интерфейса форума менялся и язык моего меню. Т.е. человек англоязычный уйдёт с форума в английскую часть форума, русскоязычный - в русскую.

Что я сделал? Сделал копию стиля и работаю с ней, prosilver сделал родительским стилем. На чём споткнулся? Я думал, что могу взять какую-то языковую переменную и в зависимости от её значения вставить одну или другую шапку над форумом (forum_menu_ru.htm или forum_menu_en.htm). Однако сама переменная вставляется без проблем (в H1 будет либо ru, либо en-gb), но при этом <!-- IF L_USER_LANG == 'ru' --> не работает, т.к. значение L_USER_LANG здесь всегда пустое.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Не работает конструкция IF

Сообщение Татьяна5 »

Zhu-zhu писал(а): 04.03.2019 18:28 свои два меню
Но подключаете-то файлы из шаблона форума
Zhu-zhu писал(а): 04.03.2019 18:28 чтобы в зависимости от языка интерфейса форума менялся и язык моего меню
Для этого в меню все слова заменяют языковыми переменными
В языковых файлах (в зависимости от языка)

Код: Выделить всё

'MY_WORD' => 'Слово',

Код: Выделить всё

'MY_WORD' => 'Word',
В шаблоне forum_menu.html

Код: Выделить всё

{L_MY_WORD}
Zhu-zhu
phpBB 1.2.0
Сообщения: 13
Стаж: 5 лет 1 месяц
Благодарил (а): 1 раз

Re: Не работает конструкция IF

Сообщение Zhu-zhu »

Татьяна5 писал(а): 04.03.2019 19:12 Но подключаете-то файлы из шаблона форума
Это я их туда скопировал для пробы. Так-то у меня эти два файла лежат в определённой папке и подключаются на всех страницах сайта.
Для этого в меню все слова заменяют языковыми переменными
В языковых файлах (в зависимости от языка)
Т.е. другого варианта нет? Неудобно, что при изменении какого-либо пункта меню на сайте мне придётся дополнительно вносить изменения ещё и в файлах форума.
А ссылки могут быть в языковых переменных?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Не работает конструкция IF

Сообщение Sheer »

Zhu-zhu, Ваш подход изначально в корне неверный и пагубный, ибо уже подразумевает
Zhu-zhu писал(а): 04.03.2019 19:51 изменения ещё и в файлах форума
Не парьтесь и используйте расширение [dev] Quick Language
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Не работает конструкция IF

Сообщение Татьяна5 »

Zhu-zhu писал(а): 04.03.2019 19:51 Неудобно, что при изменении какого-либо пункта меню на сайте мне придётся дополнительно вносить изменения ещё и в файлах форума.
Если файл будет в шаблоне, то это делать в любом случае придётся
Zhu-zhu писал(а): 04.03.2019 19:51 А ссылки могут быть в языковых переменных?
Нежелательно, но если другого выхода нет - можно. По-хорошему ссылки можно записать в сам шаблон
Zhu-zhu
phpBB 1.2.0
Сообщения: 13
Стаж: 5 лет 1 месяц
Благодарил (а): 1 раз

Re: Не работает конструкция IF

Сообщение Zhu-zhu »

Чувствую себя тормозом :facepalm:
Так я и добиваюсь, чтобы конструкция IF выбирала и в зависимости от языка подключала нужный файл меню, который находится вне форума. Тут ещё, наверное, сбивает с толку имя файла forum_menu_ru.htm - это не меню форума, а меню сайта.
Вечно у меня не получается правильно всё объяснить, я и предложение своей будущей жене делать припёрся с большим букетом жёлтых цветов :facepalm: Она как их увидела в комплекте с моей торжественной рожей, так чуть в обморок не грохнулась.
Может, скрин поможет. Меню добавлено выше форума вместе с логотипом сайта, оно разное для разных языков. Форум для наглядности сделал в стиле Prosilver.
bb.jpg
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Не работает конструкция IF

Сообщение Татьяна5 »

Как только вы подключите разные файлы меню, следующим вопросом будет как подключить файл, который лежит вне папки форума, а ответом - никак, такое не предусмотрено
Не проще ли тогда сразу сделать отдельное многоязычное меню по всем правилам, как принято в phpBB?
Zhu-zhu
phpBB 1.2.0
Сообщения: 13
Стаж: 5 лет 1 месяц
Благодарил (а): 1 раз

Re: Не работает конструкция IF

Сообщение Zhu-zhu »

Татьяна5 писал(а): 04.03.2019 21:14 следующим вопросом будет как подключить файл, который лежит вне папки форума,
INCLUDEPHP с абсолютным путём? :)

Понял. Буду делать как положено. Спасибо за терпение!

P.S. И всё же я так и не понял, что не так в этой строке: <!-- IF L_USER_LANG == 'ru' -->
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Не работает конструкция IF

Сообщение Татьяна5 »

Zhu-zhu писал(а): 04.03.2019 21:26L_
Вот это.

Код: Выделить всё

		'S_USER_LANG'			=> $user_lang,
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Не работает конструкция IF

Сообщение Sheer »

Zhu-zhu писал(а): 04.03.2019 21:26 что не так в этой строке
Это L_USER_LANG
Объекты шаблонов с префиксом L_ нельзя использовать в условных конструкциях шаблонов <!-- IF --><!-- ENDIF -->
Нужно так

Код: Выделить всё

<!-- IF USER_LANG == 'ru' -->
предварительно определив объект USER_LANG

Код: Выделить всё

$template->assign_vars(array(
	'USER_LANG'	=> $user->data['user_lang'],
));
Татьяна5 писал(а): 04.03.2019 21:14 Не проще ли тогда сразу сделать отдельное многоязычное меню по всем правилам, как принято в phpBB?
Именно так. И вообще вам нужно сделать очень простое расширение, чтобы не было никаких проблем с подключением шаблона меню, обновлении движка и пр. и др.

Отправлено спустя 48 секунд:
Татьяна5 как всегда впереди :D

Отправлено спустя 3 минуты 19 секунд:
Sheer писал(а): 04.03.2019 21:45 нужно сделать очень простое расширение
Кстати для этого есть событие 'core.common'
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Zhu-zhu
phpBB 1.2.0
Сообщения: 13
Стаж: 5 лет 1 месяц
Благодарил (а): 1 раз

Re: Не работает конструкция IF

Сообщение Zhu-zhu »

Опс! Пока детей спать уложил, уже подкинули информацию для опытов и размышления.
Sheer писал(а): 04.03.2019 21:48 Именно так. И вообще вам нужно сделать очень простое расширение, чтобы не было никаких проблем с подключением шаблона меню, обновлении движка и пр. и др.
Вот в том-то и дело, что не хочется напороть горячки, чтобы потом не получить монстра, который каким-то чудом работает, но ни обновить его, ни обслужить.
Sheer писал(а): 04.03.2019 21:48 Кстати для этого есть событие 'core.common'

Вот этого я пока совсем не понял. Пойду учить матчасть.

Отправлено спустя 5 минут 47 секунд:
Sheer писал(а): 04.03.2019 21:48 Объекты шаблонов с префиксом L_ нельзя использовать в условных конструкциях шаблонов <!-- IF --><!-- ENDIF -->
Все? Или некоторые можно? В файле posting_preview.html есть такая строка:

Код: Выделить всё

<p class="author"><!-- IF L_POLL_LENGTH -->{L_POLL_LENGTH}<br /><!-- ENDIF -->{L_MAX_VOTES}</p>
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Не работает конструкция IF

Сообщение Татьяна5 »

То не от набора букв зависит, а от того, задана переменная в php или нет
С префиксом L_ она, чаще всего, не задана для тех же условий, но исключения есть
Zhu-zhu
phpBB 1.2.0
Сообщения: 13
Стаж: 5 лет 1 месяц
Благодарил (а): 1 раз

Re: Не работает конструкция IF

Сообщение Zhu-zhu »

Татьяна5 писал(а): 04.03.2019 22:41 То не от набора букв зависит, а от того, задана переменная в php или нет
С префиксом L_ она, чаще всего, не задана для тех же условий, но исключения есть
Ага, понял. Спасибо!
Ответить

Вернуться в «Стили для phpBB 3.2.x / 3.3.x»