Jump to content
Sign in to follow this  
Borodin

Предоставление доступа к определенно странице (information) определенной группе покупателей

Recommended Posts

Приветствую всех форумчан.

 

Я создал сраничку (['information_id'] == '14'). Мне нужно предоставить к ней доступ только одной группе покупателей (CustomerGroupId() == '2').

OpenCart 2.0.3.1 + Journal-2

 

В файл template/information/information.tpl я добавил проверку "зарегистрирован ли клиент":

<div id="content" class="<?php echo $class; ?>">		
		<?php if (!$logged) { ?>
		<?php echo $text_welcome; ?>
		<?php } else { ?>		
      <h1 class="heading-title"><?php echo $heading_title; ?></h1>
      <?php echo $content_top; ?>
      <?php echo $description; ?>
	    <?php } ?>
		

Проверка работает (если клиент не залогинился - ему выводится сообщение $text_welcome (чтобы вошел или зарегистрировался)). Но распространяется данная проверка на все странички information.

Когда я меняю 

<?php if (!$logged) { ?>

на 

<?php if (((!$logged) && ($information_info['information_id'] == '14') && ($this->customer->getCustomerGroupId() == '2'))) { ?>

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

 

Уважаемые форумчане подскажите как реализовать предоставление доступ к страничке (['information_id'] == '14') группе покупателей (CustomerGroupId() == '2')?

 

Заранее благодарен!

Share this post


Link to post
Share on other sites

1.5

      public function getCustomerGroupId() {
        return $this->customer_group_id;    
      }

2.x

    public function getGroupId() {
        return $this->customer_group_id;
    }

$this->customer->getGroupId(()

Share this post


Link to post
Share on other sites

1.5

      public function getCustomerGroupId() {

        return $this->customer_group_id;    

      }

2.x

    public function getGroupId() {

        return $this->customer_group_id;

    }

 

$this->customer->getGroupId(()

У меня 2.x.

Можете уточнить - как этот код применить к моей проверке?

<?php if (((!$logged) && ($information_info['information_id'] == '14') && ($this->customer_GroupId() == '2'))) { ?>

Я правильно понял?

Спасибо!

Edited by Borodin

Share this post


Link to post
Share on other sites

После внесенных изменений, проверку на залогиненность, стала проверять только нужная мне страница ['information_id'] == '14'. Но  отображаться для всех групп пользователей.

И выводится не вся проверяемая страница (от контенда до футера).

Edited by Borodin

Share this post


Link to post
Share on other sites

<?php if ($information_info['information_id'] == '14' && $this->customer_GroupId() == '2') { ?>

Share this post


Link to post
Share on other sites

<?php if ($information_info['information_id'] == '14' && $this->customer_GroupId() == '2') { ?>

После внесения правок - изменений не произошло:

  1. все information страницы отображает кроме info['information_id'] == '14';
  2. info['information_id'] == '14' отображается не вся страница (включительно от контента до футера - не отображается);
  3. info['information_id'] == '14' отображается для всех групп покупателей (в том числе неавторизованным).

Share this post


Link to post
Share on other sites

 

После внесения правок - изменений не произошло:

  1. все information страницы отображает кроме info['information_id'] == '14';
  2. info['information_id'] == '14' отображается не вся страница (включительно от контента до футера - не отображается);
  3. info['information_id'] == '14' отображается для всех групп покупателей (в том числе неавторизованным).

 

 

Да понятное дело ! Не будет оно у вас отображаться везде и в разных позициях.

Чтобы везде отображалось это на сделать модулем а не костылем, причем настолько кривым

И все молчат, что это такой кривой костыль....  :ugeek: :? 

Share this post


Link to post
Share on other sites

Да понятное дело ! Не будет оно у вас отображаться везде и в разных позициях.

Чтобы везде отображалось это на сделать модулем а не костылем, причем настолько кривым

И все молчат, что это такой кривой костыль....  :ugeek: :?

Готовые модули есть?

Share this post


Link to post
Share on other sites

И что? ошибок нет

 

$this->customer_GroupId

Что это?

Share this post


Link to post
Share on other sites

 

Чтобы везде отображалось это на сделать модулем

Что модулем?

Зачем модулем?

 

Костыль? ну... все что не через ваш модуль, то костыль

Share this post


Link to post
Share on other sites

И что? ошибок нет

 

$this->customer_GroupId

Что это?

На странице info['information_id'] == '14' ошибок нет. А в админке в  журнале ошибок: PHP Notice:  Undefined variable: redirect in .../catalog/view/theme/journal2/template/common/language.tpl on line 42

<input type="hidden" name="redirect" value="<?php echo $redirect; ?>" />
Edited by Borodin

Share this post


Link to post
Share on other sites

Что модулем?

Зачем модулем?

 

Костыль? ну... все что не через ваш модуль, то костыль

Да при чем здесь мой модуль. Всё он вам покоя не дает :-D

Просто надо СДЕЛАТЬ модуль, а не костыль

И да, мой модуль тоже умеет это делать

Share this post


Link to post
Share on other sites

 

На странице info['information_id'] == '14' ошибок нет. А в админке в  журнале ошибок: PHP Notice:  Undefined variable: redirect in .../catalog/view/theme/journal2/template/common/language.tpl on line 42

<input type="hidden" name="redirect" value="<?php echo $redirect; ?>" />

Хочу уточнить, что страница info['information_id'] == '14' отображается/загружается как раз до 

<div id="content" class="<?php echo $class; ?>">		

Эта строка уже не отображается.

Share this post


Link to post
Share on other sites

Да при чем здесь мой модуль. Всё он вам покоя не дает :-D

Просто надо СДЕЛАТЬ модуль, а не костыль

И да, мой модуль тоже умеет это делать

И.. расскажите как модуль может повлиять на отображение контента.

Если вызов модуля является дочерним процессом .

Share this post


Link to post
Share on other sites

Хочу уточнить, что страница info['information_id'] == '14' отображается/загружается как раз до 

<div id="content" class="<?php echo $class; ?>">		

Эта строка уже не отображается.

 

Проблема с $this->customer_GroupId() == '2'

После замены в

<?php if ($information_info['information_id'] == '14' && $this->customer_GroupId() == '2') { ?>

на 

<?php if ($information_info['information_id'] == '14' && !$logged) { ?>
  1. страница стала отображаться полностью;
  2. information страницы отображаются для всех (вошедших/не вошедших) покупателей;
  3. info['information_id'] == '14' отображается только для вошедших покупателей (любой группы);

Осталось еще сделать проверку для доступа только для группы покупателей $this->customer_GroupId() == '2'.

Edited by Borodin

Share this post


Link to post
Share on other sites

И что? ошибок нет

 

$this->customer_GroupId

Что это?

customer_group_id - это id группы покупателей.

Share this post


Link to post
Share on other sites

откуда?

Share this post


Link to post
Share on other sites

откуда?

 

Из БД, таблица : oc_customer_group_description, 

Ну и в админке в группе клиентов, при редактировании данной группы, ссылка так заканчивается customer_group_id=2. (Их у меня всего 2).

Share this post


Link to post
Share on other sites

Я не понимаю

 

Потому что..

Я показал вызов метода

Вы мне подсовывает какую-то херню, неизвестно откуда взятую..

 

Хрустальный шар мой уже покрылся налетом пыли  - не вижу!

Share this post


Link to post
Share on other sites

Я не понимаю

 

Потому что..

Я показал вызов метода

Вы мне подсовывает какую-то херню, неизвестно откуда взятую..

 

Хрустальный шар мой уже покрылся налетом пыли  - не вижу!

 

Сейчас не понимаю я. :)

- Я неправильно вызываю метод?

Share this post


Link to post
Share on other sites

в каком месте вы вызываете метод?

Share this post


Link to post
Share on other sites

в каком месте вы вызываете метод?

В контроллере я дописал (но так выдает ошибку 500)

public function getGroupId() {
        return $this->customer_group_id;
    }
	$this->customer->getGroupId();
Edited by Borodin

Share this post


Link to post
Share on other sites

 

В контроллере я дописал (но так выдает ошибку 500)

public function getGroupId() {
        return $this->customer_group_id;
    }
	$this->customer->getGroupId();

Да, простите, все понял!

В контроллере добавил

public function getGroupId() {
        return $this->customer_group_id;
    }

А в tpl сроку изменил на 

<?php if ($information_info['information_id'] == '14' && $this->customer->getGroupId() !== '2') { ?>

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.