Trotor 27 10/15/13 01:43 В шаблонах можно любую информацию скрыть от гостей (или открыть, в зависимости от <else />) блоком "<if test="memberbox:|:$this->memberData['member_id']">для зарегистрированных<else />для гостей</if>" Кроме вот этого:{parse include="cod.php"} Если помещаешь внутрь <if test="memberbox:|:$this->memberData['member_id']">, выдаёт ошибку форума. Не подскажите как такое скрыть от зарегистрированных, но оставить гостям? Очень нужно. Поделиться сообщением Ссылка на сообщение
Bot 5 10/15/13 01:43 Обратите внимание По указанному вами в профиле "Board url" находится не IP.Board, либо модифицированный пиратский скрипт с удаленными копирайтами. Если вы указали неверный URL, пожауйста, поправьте его, потому что он скорее всего потребуется при диагностике вашей проблемы. Нелицензионные скрипты не приветствуются, т.к. зачастую именно некорректное "нуление" и является причиной проблем в них. Поделиться сообщением Ссылка на сообщение
Dmitriy427 198 10/15/13 08:36 Естесственно, внутри фигурных скобок html-теги работать не будут. "{parse include="cod.php"}" - подгрузка контента из файла cod.php, если нужны какие то изменения в этом контенте, то и правьте файл, а не шаблон. Если же нужно условие запрещающее эту подгрузку, когда страница открывается зарегестрированным пользователем, то конструкция будет выглядеть так:<if test="!$this->memberData['member_id']">{parse include="cod.php"}</if> Еще - выражение "memberbox:|:", в вашем условии, это якорь для привязки хуков. Копировать в свои условия его не нужно, можно так поломать структуру привязки. Поделиться сообщением Ссылка на сообщение
Trotor 27 10/15/13 13:16 @Dmitriy427, Такую конструкцию админка не принимает, пишет:"В шаблоне обнаружена ошибка синтаксиса. Проверьте правильность содержимого шаблона и попробуйте сохранить его снова." Поделиться сообщением Ссылка на сообщение
Dmitriy427 198 10/15/13 19:22 Попробуйте так:<if test="!isset($this->memberData['member_id'])">{parse include="cod.php"}</if> Поделиться сообщением Ссылка на сообщение
tasker 12 10/15/13 20:03 Мне кажется, достаточно было заменить двойные кавычки на одинарные. Поделиться сообщением Ссылка на сообщение
siv1987 2628 10/15/13 20:22 Попробуйте так:isset в таком условии всегда выдаст true, так как переменная $this->memberData['member_id'] всегда объявлена. Либо ! $this->memberData['member_id'], либо $this->memberData['member_id'] > 0 Одинарные кавычки избавляет от синтаксической ошибки, но include кажется все равно не парсится. Поделиться сообщением Ссылка на сообщение
siv1987 2628 10/16/13 12:04 Если нужно условие, то его можно добавить в подключаемом файле code.php <?php if( $this->memberData['member_id'] > 0 ) { echo "Текст для зарегистрированных пользователей"; } else { echo "Текст для гостей"; } ?> Поделиться сообщением Ссылка на сообщение
Trotor 27 10/16/13 17:30 Попробуйте так:Аналогично - В шаблоне обнаружена ошибка синтаксиса. Проверьте правильность содержимого шаблона и попробуйте сохранить его снова. Одинарные кавычки избавляет от синтаксической ошибки, но include кажется все равно не парсится.Да, не парсится. Если нужно условие, то его можно добавить в самом подключаемом файлеНа жаль не срабатывает :( Поделиться сообщением Ссылка на сообщение
siv1987 2628 10/16/13 19:52 На жаль не срабатываетparse это замена инклуда, так что должно сработать. Проверяйте лучше код. echo также можно заменить на $IPBHTML .= 'text'; (главное точку не пропустить перед '=') Поделиться сообщением Ссылка на сообщение
Trotor 27 10/16/13 21:07 @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.' '; } } ?> Поделиться сообщением Ссылка на сообщение
Dmitriy427 198 10/16/13 21:13 Вот так работает у меня:<if test="!$this->memberData['member_id']">{parse expression="include '/полный_путь_к_файлу/my_code.php'"}</if>С тегом "parse include", внутри условия, какой то баг парсера начиная с 3.0 еще и не исправленный до сих пор, судя по тому, что я в сети нарыл. Поделиться сообщением Ссылка на сообщение
siv1987 2628 10/16/13 22:08 Вывод можно делать либо через $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.' '; } } } 2 Поделиться сообщением Ссылка на сообщение