Вывод блока на определенных страницах 2.X

 
Посетитель
small user social cms
Медаль
Сообщений: 106
Приветствую всех! Уважаемые гуру ICMS нужна ваша помощь. Пытаюсь реализовать вывод определенного блока на страницах содержащих в адресе 'auth'. И наоборот, не отображать на этих же страницах. У меня есть два способа проверки, но каждый из них ведет за собой сложности. Сайт закрыт от не авторизованных пользователей.
1 Способ: Через определения ссылки
Код PHP:
  1. $_SERVER['REQUEST_URI']
, вроде бы работает, но для всех подкатегорий приходится прописывать отдельно, иначе не работает:
Код PHP:
  1. <?php if ($_SERVER['REQUEST_URI'] == '/auth/login?back=/' or $_SERVER['REQUEST_URI'] == '/auth/register' or $_SERVER['REQUEST_URI'] == '/auth/restore') { ?>
  2. ...блок....
  3. <?php } ?>
  4.  
И все бы ничего, но появляется проблема после того, как пользователь разлогинивается например со страницы новости и страница имеет вид :
...../auth/login?back=/news
И блок на этой странице уже не показывает.
Как то это муторно для каждого случая делать проверку.
2 Способ: Делаем проверку по контроллеру. Думаю что это вообще каряво, надеюсь поправит кто
Код PHP:
  1.  
  2. <?php $auth = cmsCore::getController('auth'); ?>
  3. <?php if (!empty ($auth)) { ?>
  4. .......блок....
  5. <?php } ?>
  6.  
Этот метод почему то либо закрывает на всех страницах, либо показывает на всех страницах.
Посетитель
small user social cms
Медаль
Сообщений: 111
Тут все гораздо проще. Виджеты и страницы - создать страницу. В положительных масках указывает страницы, на которых должен быть блок. Документация по этой части внутри админки есть - как создавать маски
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 106
GWK:

Тут все гораздо проще. Виджеты и страницы - создать страницу. В положительных масках указывает страницы, на которых должен быть блок. Документация по этой части внутри админки есть - как создавать маски

именно так и реализовано smile положительные маски: *auth*, отрицательные маски: auth/restore, auth/register
Вся проблема в том что для не авторизованных, cms выводит блок авторизации в теле страницы, а мне этого не нужно, мне нужно что бы в сайдбаре выводил. А поскольку в main.tpl за это отвечает controller_wrap и как вытащить из него контроллер auth я не знаю, мне приходится его прятать, а в сайдбаре вывел виджет. Вот так все не просто у меня :)
Редактировалось: 1 раз (Последний: 3 марта 2018 в 09:05)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3625
Код PHP:
  1.  
  2. <?php if (strpos($_SERVER['REQUEST_URI'], 'auth/login') !== false || strpos($_SERVER['REQUEST_URI'], 'auth/register') !== false || strpos($_SERVER['REQUEST_URI'], 'auth/restore') !== false){?>
  3. ... ....
  4. <?php } ?>
  5.  
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 420
Код PHP:
  1.  
  2. if (stristr($_SERVER['REQUEST_URI'], '/auth/') == true) {
  3. echo "Это станица авторизации";
  4. } else {
  5. echo "Это какая-то другая страница";
  6. }
  7.  
Посетитель
small user social cms
Медаль
Сообщений: 106
Loadырь:

Код PHP:
  1.  
  2.  
  3. ... ....
  4.  
  5.  

Благодарствую барин smile Все работает как надо, не хватило мозгов допилить первый способ :)
Посетитель
small user social cms
Медаль
Сообщений: 106
Возможно еще поможете вытащить контроллер авторизации в сайдбар?
Я так понимаю в main.tpl необходимо добавить проверку на авторизацию, и как то вывести контроллер :
Код PHP:
  1.  
  2. <aside>
  3. <?php if (!cmsUser::isLogged()){ ?>
  4. <?php echo cmsCore::getController ('auth') ?>
  5. <?php } ?>
  6. остальные блоки
  7. </aside>
  8.  
пока получаются только костыли, но я учусь :)
Редактировалось: 2 раз (Последний: 3 марта 2018 в 09:40)
Посетитель
small user social cms
Медаль
Сообщений: 106
Ну в общем разобрался, оказалось ничего сложного. Может кому пригодится. Выводим в боковом блоке контроллер Авторизации: подставляем часть коды в файле main.tpl.php
Код PHP:
  1.  
  2. <aside>
  3. <?php if (!cmsUser::isLogged()){ ?>
  4. <div id="controller_wrap"><?php $this->body(); ?></div>
  5. <?php } ?>
  6. .............div div div..........
  7. </aside>
  8.  
Спасибо всем за помощь
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: