Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Код 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,

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

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

Сейчас на странице 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.