Редирект на регистрацию, гостя, при нажатии на кнопку добавлении новости

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 23 августа 2016 в 11:17
Как сделать кнопку добавления новости, с условием, если нажимает гость, происходит редирект на страницу регистрации?
#2 23 августа 2016 в 11:48
Я сделал по простому, виджет кнопка-картинка( добавить новость), которая показывается только группе гости с ссылкой на регистрацию.
#3 23 августа 2016 в 14:02

Я сделал по простому, виджет кнопка-картинка( добавить новость), которая показывается только группе гости с ссылкой на регистрацию.

rdimrs

это не подходит, я ссылку указал в нужном мне файле tpl, html кодом, а не виджетом. При вашем методе видно, что можно, что-то добавлять, только авторизованным, а мне это не подходит.
#4 23 августа 2016 в 15:31

Как сделать кнопку добавления новости, с условием, если нажимает гость, происходит редирект на страницу регистрации?

Bormed
Вы уже описали логику, теперь просто осталось написать это на пыхапе.

Вот кнопка добавления контента из \templates\default\controllers\content\category_view.tpl.php

  1. if (cmsUser::isAllowed($ctype['name'], 'add')) {
  2.  
  3. if (!$category['id'] || $user->isInGroups($category['allow_add'])){
  4.  
  5. $href = href_to($ctype['name'], 'add', isset($category['path']) ? $category['id'] : '');
  6.  
  7. $this->addToolButton(array(
  8. 'class' => 'add',
  9. 'title' => sprintf(LANG_CONTENT_ADD_ITEM, $ctype['labels']['create']),
  10. 'href' => $href
  11. ));
  12.  
  13. }
  14.  
  15. }
просто переделываете её так:
  1. if (!$category['id'] || $user->isInGroups($category['allow_add'])){
  2. if (cmsUser::isAllowed($ctype['name'], 'add')){
  3. $href = href_to($ctype['name'], 'add', isset($category['path']) ? $category['id'] : '');
  4. } else
  5. {$href = href_to('/auth/register');}
  6. $this->addToolButton(array(
  7. 'class' => 'add',
  8. 'title' => sprintf(LANG_CONTENT_ADD_ITEM, $ctype['labels']['create']),
  9. 'href' => $href
  10. ));
  11.  
  12. }
И все работает, как Вы хотели.
#5 23 августа 2016 в 15:52

просто переделываете её так:
Спойлер
Код PHP:
if (!$category['id'] || $user->isInGroups($category['allow_add'])){
if (cmsUser::isAllowed($ctype['name'], 'add')){
$href = href_to($ctype['name'], 'add', isset($category['path'])? $category['id']: '');
} else
{$href = href_to('/auth/register');}
$this->addToolButton(array(
'class' => 'add',
'title' => sprintf(LANG_CONTENT_ADD_ITEM, $ctype['labels']['create']),
'href' => $href
));
 
}
И все работает, как Вы хотели.

Ris
Если я правильно понял ТС, то не совсем все будет работать как он хотел hoho
Ему нужна простая проверка авторизован юзер или нет. Курим маны здесь http://docs.instantcms.ru/dev/controllers/user и прописываем что-то вроде этого:

  1. if (!cmsUser::isLogged()) {
  2. $this->addToolButton(array(
  3. 'class' => 'add',
  4. 'title' => sprintf(LANG_CONTENT_ADD_ITEM, $ctype['labels']['create']),
  5. 'href' => href_to('/auth/register')
  6. ));
  7. }
  8. //... а тут уже идёт стандартный код добавления записи
  9. // предполагаю cmsUser::isAllowed гостей не допустит внутрь блока =)
  10. if (cmsUser::isAllowed($ctype['name'], 'add')) {
  11.  
  12. if (!$category['id'] || $user->isInGroups($category['allow_add'])){
  13.  
  14. $href = href_to($ctype['name'], 'add', isset($category['path']) ? $category['id'] : '');
  15.  
  16. $this->addToolButton(array(
  17. 'class' => 'add',
  18. 'title' => sprintf(LANG_CONTENT_ADD_ITEM, $ctype['labels']['create']),
  19. 'href' => $href
  20. ));
  21.  
  22. }
  23.  
  24. }
  25.  
P.S. код не тестировал
#6 23 августа 2016 в 16:22
Val,
Ну я ж проверил предварительно.
Всё работает. smile
#7 23 августа 2016 в 16:29
Ris, а проверяли если пользователь авторизован, но его групповой принадлежности нельзя добавлять материалы требуемого типа контента? Теоретически такое может быть =)
#8 23 августа 2016 в 16:42
Val,
Да, про такое я что-то не подумал...

P.S. код не тестировал

Val
Протестировал. Работает!
v
#9 23 августа 2016 в 17:45


просто переделываете её так:
Спойлер
Код PHP:
if (!$category['id'] || $user->isInGroups($category['allow_add'])){
if (cmsUser::isAllowed($ctype['name'], 'add')){
$href = href_to($ctype['name'], 'add', isset($category['path'])? $category['id']: '');
} else
{$href = href_to('/auth/register');}
$this->addToolButton(array(
'class' => 'add',
'title' => sprintf(LANG_CONTENT_ADD_ITEM, $ctype['labels']['create']),
'href' => $href
));
 
}
И все работает, как Вы хотели.

Ris
Если я правильно понял ТС, то не совсем все будет работать как он хотел hoho
Ему нужна простая проверка авторизован юзер или нет. Курим маны здесь http://docs.instantcms.ru/dev/controllers/user и прописываем что-то вроде этого:

  1. if (!cmsUser::isLogged()) {
  2. $this->addToolButton(array(
  3. 'class' => 'add',
  4. 'title' => sprintf(LANG_CONTENT_ADD_ITEM, $ctype['labels']['create']),
  5. 'href' => href_to('/auth/register')
  6. ));
  7. }
  8. //... а тут уже идёт стандартный код добавления записи
  9. // предполагаю cmsUser::isAllowed гостей не допустит внутрь блока =)
  10. if (cmsUser::isAllowed($ctype['name'], 'add')) {
  11.  
  12. if (!$category['id'] || $user->isInGroups($category['allow_add'])){
  13.  
  14. $href = href_to($ctype['name'], 'add', isset($category['path']) ? $category['id'] : '');
  15.  
  16. $this->addToolButton(array(
  17. 'class' => 'add',
  18. 'title' => sprintf(LANG_CONTENT_ADD_ITEM, $ctype['labels']['create']),
  19. 'href' => $href
  20. ));
  21.  
  22. }
  23.  
  24. }
  25.  
P.S. код не тестировал

Val

У меня в файле есть div, а в нем прописана ссылка такого вида <a href="***/poster/add">Предложить событие</a>
куда и какой более правильный мне вставлять предложенный код? Спасибо всем за помощь кстати!
#10 23 августа 2016 в 17:46
Ах да, данный div выводится только на главной странице!
#11 23 августа 2016 в 20:39
Bormed,
Оберните эту ссылку в php с условием:

  1. <?php if (cmsUser::isLogged()){ ?>
  2. <a href="***/poster/add">Предложить событие</a>
  3. <?php } else {?>
  4. <a href="/auth/register";>Зарегистрироваться и предложить событие </a>
  5. <?php } ?>
#12 23 августа 2016 в 21:40


Bormed,
Оберните эту ссылку в php с условием:

  1.  
  2. Предложить событие
  3.  
  4. Зарегистрироваться и предложить событие
  5.  

Ris

Спасибо! Теперь все ОК!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.