Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Haktar

Код parse include

Recommended Posts

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

 

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

{parse include="cod.php"}

 

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

 

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

Share this post


Link to post
Share on other sites
Обратите внимание

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

@Dmitriy427,

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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

 

code.php

 

<?php

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

?>

Share this post


Link to post
Share on other sites

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

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

 

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

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

 

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
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.' ';
	}
}

?>

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
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

Share this post


Link to post
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
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...