Перейти к содержимому
Русский язык для Invision Community 5

Код parse include

В шаблонах можно любую информацию скрыть от гостей (или открыть, в зависимости от <else />) блоком "<if test="memberbox:|:$this->memberData['member_id']">для зарегистрированных<else />для гостей</if>"

 

Кроме вот этого:

{parse include="cod.php"}

 

Если помещаешь внутрь <if test="memberbox:|:$this->memberData['member_id']">, выдаёт ошибку форума.

 

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

Рекомендованные сообщения

Обратите внимание

По указанному вами в профиле "Board url" находится не IP.Board, либо модифицированный пиратский скрипт с удаленными копирайтами. Если вы указали неверный URL, пожауйста, поправьте его, потому что он скорее всего потребуется при диагностике вашей проблемы. Нелицензионные скрипты не приветствуются, т.к. зачастую именно некорректное "нуление" и является причиной проблем в них.

Естесственно, внутри фигурных скобок html-теги работать не будут. "{parse include="cod.php"}" - подгрузка контента из файла cod.php, если нужны какие то изменения в этом контенте, то и правьте файл, а не шаблон. Если же нужно условие запрещающее эту подгрузку, когда страница открывается зарегестрированным пользователем, то конструкция будет выглядеть так:

<if test="!$this->memberData['member_id']">{parse include="cod.php"}</if>

 

Еще - выражение "memberbox:|:", в вашем условии, это якорь для привязки хуков. Копировать в свои условия его не нужно, можно так поломать структуру привязки.

  • Автор

@Dmitriy427,

Такую конструкцию админка не принимает, пишет:

"В шаблоне обнаружена ошибка синтаксиса. Проверьте правильность содержимого шаблона и попробуйте сохранить его снова."

Попробуйте так:

<if test="!isset($this->memberData['member_id'])">{parse include="cod.php"}</if>

Мне кажется, достаточно было заменить двойные кавычки на одинарные.

Попробуйте так:

isset в таком условии всегда выдаст true, так как переменная $this->memberData['member_id'] всегда объявлена. Либо ! $this->memberData['member_id'], либо $this->memberData['member_id'] > 0

 

Одинарные кавычки избавляет от синтаксической ошибки, но include кажется все равно не парсится.

Если нужно условие, то его можно добавить в подключаемом файле

 

code.php

 

<?php

if( $this->memberData['member_id'] > 0 )
{
echo "Текст для зарегистрированных пользователей";
}
else
{
echo "Текст для гостей";
}

?>

  • Автор

Попробуйте так:

Аналогично - В шаблоне обнаружена ошибка синтаксиса. Проверьте правильность содержимого шаблона и попробуйте сохранить его снова.

 

Одинарные кавычки избавляет от синтаксической ошибки, но include кажется все равно не парсится.

Да, не парсится.

 

Если нужно условие, то его можно добавить в самом подключаемом файле

На жаль не срабатывает :(

На жаль не срабатывает

parse это замена инклуда, так что должно сработать. Проверяйте лучше код.

echo также можно заменить на $IPBHTML .= 'text'; (главное точку не пропустить перед '=')

  • Автор

@siv1987,

Мне нужно скрыть от зарегистрированных вот такой текст:

 

<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/uniplacer_config.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/'._UNIPLACE_USER_.'/uniplacer.php'); 

$Uniplacer = new Uniplacer(_UNIPLACE_USER_);
$Uniplacer->GetCode();
$links = $Uniplacer->GetLinks();

if($links){
	foreach($links as $link){
		echo $link.' ';
	}
}

?>

Вот так работает у меня:

<if test="!$this->memberData['member_id']">{parse expression="include '/полный_путь_к_файлу/my_code.php'"}</if>

С тегом "parse include", внутри условия, какой то баг парсера начиная с 3.0 еще и не исправленный до сих пор, судя по тому, что я в сети нарыл.

Вывод можно делать либо через $IPBHTML .= в подключаемом файле, либо через переменные в шаблоне. Можно также использовать echo, так как результат вставки буферизируется и клеится к основному шаблону.

 

Мне нужно скрыть от зарегистрированных вот такой текст:

 

if( ! $this->memberData['member_id'] )
{
require_once($_SERVER['DOCUMENT_ROOT'].'/uniplacer_config.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/'._UNIPLACE_USER_.'/uniplacer.php'); 

$Uniplacer = new Uniplacer(_UNIPLACE_USER_);
$Uniplacer->GetCode();
$links = $Uniplacer->GetLinks();

if($links){
	foreach($links as $link){
		//$IPBHTML .= $link.' ';
		echo $link.' ';
	}
}
}

  • Автор

@siv1987,

Спасибо, получилось!

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.