Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Trotor

Код 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.' ';
	}
}
}

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение

@siv1987,

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

Поделиться сообщением


Ссылка на сообщение

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

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...