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

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 3 марта 2018 в 08:25
Приветствую всех! Уважаемые гуру ICMS нужна ваша помощь. Пытаюсь реализовать вывод определенного блока на страницах содержащих в адресе 'auth'. И наоборот, не отображать на этих же страницах. У меня есть два способа проверки, но каждый из них ведет за собой сложности. Сайт закрыт от не авторизованных пользователей.
1 Способ: Через определения ссылки
  1. $_SERVER['REQUEST_URI']
, вроде бы работает, но для всех подкатегорий приходится прописывать отдельно, иначе не работает:
  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 Способ: Делаем проверку по контроллеру. Думаю что это вообще каряво, надеюсь поправит кто
  1.  
  2. <?php $auth = cmsCore::getController('auth'); ?>
  3. <?php if (!empty ($auth)) { ?>
  4. .......блок....
  5. <?php } ?>
  6.  
Этот метод почему то либо закрывает на всех страницах, либо показывает на всех страницах.
#2 3 марта 2018 в 08:33
Тут все гораздо проще. Виджеты и страницы — создать страницу. В положительных масках указывает страницы, на которых должен быть блок. Документация по этой части внутри админки есть — как создавать маски
#3 3 марта 2018 в 09:00


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

GWK

именно так и реализовано😊положительные маски: *auth*, отрицательные маски: auth/restore, auth/register
Вся проблема в том что для не авторизованных, cms выводит блок авторизации в теле страницы, а мне этого не нужно, мне нужно что бы в сайдбаре выводил. А поскольку в main.tpl за это отвечает controller_wrap и как вытащить из него контроллер auth я не знаю, мне приходится его прятать, а в сайдбаре вывел виджет. Вот так все не просто у меня :)
#4 3 марта 2018 в 09:12
  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.  
#5 3 марта 2018 в 09:16
  1.  
  2. if (stristr($_SERVER['REQUEST_URI'], '/auth/') == true) {
  3. echo "Это станица авторизации";
  4. } else {
  5. echo "Это какая-то другая страница";
  6. }
  7.  
#6 3 марта 2018 в 09:22


  1.  
  2.  
  3. ... ....
  4.  
  5.  

Loadырь

Благодарствую барин😊Все работает как надо, не хватило мозгов допилить первый способ :)
#7 3 марта 2018 в 09:39
Возможно еще поможете вытащить контроллер авторизации в сайдбар?
Я так понимаю в main.tpl необходимо добавить проверку на авторизацию, и как то вывести контроллер :
  1.  
  2. <aside>
  3. <?php if (!cmsUser::isLogged()){ ?>
  4. <?php echo cmsCore::getController ('auth') ?>
  5. <?php } ?>
  6. остальные блоки
  7. </aside>
  8.  
пока получаются только костыли, но я учусь :)
#8 3 марта 2018 в 15:07
Ну в общем разобрался, оказалось ничего сложного. Может кому пригодится. Выводим в боковом блоке контроллер Авторизации: подставляем часть коды в файле main.tpl.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.  
Спасибо всем за помощь
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.