Trotor Posted October 15, 2013 Share Posted October 15, 2013 В шаблонах можно любую информацию скрыть от гостей (или открыть, в зависимости от <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 More sharing options...
Bot Posted October 15, 2013 Share Posted October 15, 2013 Обратите внимание По указанному вами в профиле "Board url" находится не IP.Board, либо модифицированный пиратский скрипт с удаленными копирайтами. Если вы указали неверный URL, пожауйста, поправьте его, потому что он скорее всего потребуется при диагностике вашей проблемы. Нелицензионные скрипты не приветствуются, т.к. зачастую именно некорректное "нуление" и является причиной проблем в них. Link to comment Share on other sites More sharing options...
Dmitriy427 Posted October 15, 2013 Share Posted October 15, 2013 Естесственно, внутри фигурных скобок 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 More sharing options...
Trotor Posted October 15, 2013 Author Share Posted October 15, 2013 @Dmitriy427, Такую конструкцию админка не принимает, пишет:"В шаблоне обнаружена ошибка синтаксиса. Проверьте правильность содержимого шаблона и попробуйте сохранить его снова." Link to comment Share on other sites More sharing options...
Dmitriy427 Posted October 15, 2013 Share Posted October 15, 2013 Попробуйте так:<if test="!isset($this->memberData['member_id'])">{parse include="cod.php"}</if> Link to comment Share on other sites More sharing options...
tasker Posted October 15, 2013 Share Posted October 15, 2013 Мне кажется, достаточно было заменить двойные кавычки на одинарные. Link to comment Share on other sites More sharing options...
siv1987 Posted October 15, 2013 Share Posted October 15, 2013 Попробуйте так:isset в таком условии всегда выдаст true, так как переменная $this->memberData['member_id'] всегда объявлена. Либо ! $this->memberData['member_id'], либо $this->memberData['member_id'] > 0 Одинарные кавычки избавляет от синтаксической ошибки, но include кажется все равно не парсится. Link to comment Share on other sites More sharing options...
siv1987 Posted October 16, 2013 Share Posted October 16, 2013 Если нужно условие, то его можно добавить в подключаемом файле code.php <?php if( $this->memberData['member_id'] > 0 ) { echo "Текст для зарегистрированных пользователей"; } else { echo "Текст для гостей"; } ?> Link to comment Share on other sites More sharing options...
Trotor Posted October 16, 2013 Author Share Posted October 16, 2013 Попробуйте так:Аналогично - В шаблоне обнаружена ошибка синтаксиса. Проверьте правильность содержимого шаблона и попробуйте сохранить его снова. Одинарные кавычки избавляет от синтаксической ошибки, но include кажется все равно не парсится.Да, не парсится. Если нужно условие, то его можно добавить в самом подключаемом файлеНа жаль не срабатывает :( Link to comment Share on other sites More sharing options...
siv1987 Posted October 16, 2013 Share Posted October 16, 2013 На жаль не срабатываетparse это замена инклуда, так что должно сработать. Проверяйте лучше код. echo также можно заменить на $IPBHTML .= 'text'; (главное точку не пропустить перед '=') Link to comment Share on other sites More sharing options...
Trotor Posted October 16, 2013 Author Share Posted October 16, 2013 @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 More sharing options...
Dmitriy427 Posted October 16, 2013 Share Posted October 16, 2013 Вот так работает у меня:<if test="!$this->memberData['member_id']">{parse expression="include '/полный_путь_к_файлу/my_code.php'"}</if>С тегом "parse include", внутри условия, какой то баг парсера начиная с 3.0 еще и не исправленный до сих пор, судя по тому, что я в сети нарыл. Link to comment Share on other sites More sharing options...
siv1987 Posted October 16, 2013 Share Posted October 16, 2013 Вывод можно делать либо через $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 Link to comment Share on other sites More sharing options...
Trotor Posted October 16, 2013 Author Share Posted October 16, 2013 @siv1987, Спасибо, получилось! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now