Jump to content

Код parse include


Trotor
 Share

Recommended Posts

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

 

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

{parse include="cod.php"}

 

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

 

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

 

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

Link to comment
Share on other sites

@Dmitriy427,

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

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

Link to comment
Share on other sites

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

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

 

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

Link to comment
Share on other sites

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

 

code.php

 

<?php

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

?>

Link to comment
Share on other sites

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

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

 

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

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

 

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

@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.' ';
	}
}

?>

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

Вывод можно делать либо через $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.' ';
	}
}
}

  • Upvote 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...