Jump to content
Sign in to follow this  
vostrvl2

[Решено?..] Проверка залогинен ли пользователь

Recommended Posts

Добрый день. Подскажите, пожалуйста, как сделать проверку на то, залогинен  ли пользователь при нажатии на кнопку КУПИТЬ? Если да - ничего не происходит, товар отрпавляется в корзину и продолжаем работать. Если - нет - выводится оповещение, что необходимо зарегистрироваться и соответственно, в корзину ничего не добавлять? (ocStore-1.5.5.1.2)

Edited by vostrvl2

Share this post


Link to post
Share on other sites

Можно дополнить вопрос? А существует проверка еще и по группам пользователям? Да бы в контроллере доп. загружать контент если на сайте администратор.

Share this post


Link to post
Share on other sites

Добрый день. Подскажите, пожалуйста, как сделать проверку на то, залогинен  ли пользователь при нажатии на кнопку КУПИТЬ? Если да - ничего не происходит, товар отрпавляется в корзину и продолжаем работать. Если - нет - выводится оповещение, что необходимо зарегистрироваться и соответственно, в корзину ничего не добавлять? (ocStore-1.5.5.1.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

Ну либо сделать для незалогиненных пользователей кнопку КУПИТЬ неактивной.. Но сам принцип, чтоб человек пошел и зарегистрировался.

Лучше неактивной. А еще лучше, подменить ее кнопкой "для покупок необходимо зарегистрироваться" и по кнопке отправлять на регистрацию :)

Share this post


Link to post
Share on other sites

Лучше неактивной. А еще лучше, подменить ее кнопкой "для покупок необходимо зарегистрироваться" и по кнопке отправлять на регистрацию :)

 

 

Это было бы лучшим вариантом ) А куда копать, не подскажете?

Share this post


Link to post
Share on other sites

Копать в двух направлениях

 

Во всех контроллерах где выбираются товары пдонимать признак

 

$this->data['logged'] = $this->customer->isLogged()

 

Во всех шаблонах, где есть кнопка Купить

 

if ($logged) {

// выводим правильную кнопку

} else {

// выводим неправильную кнопку

}

Share this post


Link to post
Share on other sites

Погуглил в смежных темах, получился такой код

 

<?php if ($this->customer->isLogged()) { ?>  

..

..

<?php } ?>

 

Этим мы скрываем кнопку КУПИТЬ для незалогиненных пользователей, но хотелось бы подмену кнопки на ссылку для регистрации.  Если брать код из спеццены, то получается, что price-new определен где-то, и выводит новую цену, как бы можно поставить туде ссылку вместо цены?

 

        <?php } else { ?>
        <span class="price-new"><?php echo $special; ?></span> <span class="price-old"><?php echo $price; ?></span>
        <?php } ?>

Share this post


Link to post
Share on other sites

Погуглил в смежных темах, получился такой код

 

<?php if ($this->customer->isLogged()) { ?>  

..

..

<?php } ?>

 

Этим мы скрываем кнопку КУПИТЬ для незалогиненных пользователей, но хотелось бы подмену кнопки на ссылку для регистрации.  Если брать код из спеццены, то получается, что price-new определен где-то, и выводит новую цену, как бы можно поставить туде ссылку вместо цены?

 

        <?php } else { ?>

        <span class="price-new"><?php echo $special; ?></span> <span class="price-old"><?php echo $price; ?></span>

        <?php } ?>

Зачем вам код из спеццены, если вы хотите вывести кнопку для регистрации? Просто вставьте в ELSE код кнопки для регистрации.

Edited by Helloween

Share this post


Link to post
Share on other sites

Нет, код спеццены мне не нужен, сделал проверку и скрыл кнопку купить для незалогиненных пользователй. 

Share this post


Link to post
Share on other sites

$this->customer->isLogged() не работает в opencart 2. Подскажите, как быть в таком случае

Share this post


Link to post
Share on other sites
30 минут назад, 4ester7 сказал:

$this->customer->isLogged() не работает в opencart 2. Подскажите, как быть в таком случае

как это не работает, если в контроллере /catalog/controller/account/account.php именно так и проверяется залогинен ли пользователь

Edited by thentru

Share this post


Link to post
Share on other sites
1 час назад, thentru сказал:

как это не работает, если в контроллере /catalog/controller/account/account.php именно так и проверяется залогинен ли пользователь

Уже увидел, но при использовании элементарной конструкции рвёт вёрстку (на скрине).

Вот конструкция: <a href="<?php if (!$this->customer->isLogged()) { ?> /index.php?route=account/login <?php } else { echo 'index.php?route=checkout/simplecheckout'; } ?>">

Использовал в файле common/cart.tpl

В другом сайте на opencart 1.5 один в один испоьзовал - не рвёт, сделал в контроллере для теста переменку, в которую вбил $this->customer->isLogged(), только начинаю её использовать - сразу вёрстке хана. То же самое, если переменки сессий использовать.

Так что может и она работает, но почему-то сразу всё пропадает)

Снимок экрана 2017-01-31 в 19.21.39.png

Share this post


Link to post
Share on other sites

Правильнее будет поместить в контроллер проверку логина, а во вьюшку сделать только вывод готового результата.
В данном случае - ссылки

Share this post


Link to post
Share on other sites
12 минут назад, thentru сказал:

Правильнее будет поместить в контроллер проверку логина, а во вьюшку сделать только вывод готового результата.
В данном случае - ссылки

Так и сделал только что - всё равно трабл :)

Вывел вар дампом в футере - вот такая ситуация - как будто он не видит этого класса, хотя в конфигах всё ок

Снимок экрана 2017-01-31 в 19.43.24.png

Share this post


Link to post
Share on other sites

поместить в контроллер

вы делаете все во вьюшке

  • +1 1

Share this post


Link to post
Share on other sites

Спасибо, через контроллер помогло! Вот только $logged постоянно отдаёт NULL как авторизованному, так и нет. Сейчас ищу ответ

Share this post


Link to post
Share on other sites
6 минут назад, 4ester7 сказал:

Спасибо, через контроллер помогло! Вот только $logged постоянно отдаёт NULL как авторизованному, так и нет. Сейчас ищу ответ

правильный метод isLogged()

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.