Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Куплю модуль для просмотра статей только зарег. пользователям


Recommended Posts

Добрый день. Подскажите пожалуйста, есть ли готовый модуль  чтобы можно было в некоторых статьях поставить возможность просмотра только для зарегистрированных пользователей?

Версия опенкарта 2.3 pro

Надіслати
Поділитися на інших сайтах


31 минуту назад, DarkEinstein сказал:

Добрый день. Подскажите пожалуйста, есть ли готовый модуль  чтобы можно было в некоторых статьях поставить возможность просмотра только для зарегистрированных пользователей?

Версия опенкарта 2.3 pro

В админке один чекбокс. Один столбец в таблице. Одна строка на фронте.

Надіслати
Поділитися на інших сайтах

catalog/controller/information/information.php

 

найти

if (isset($this->request->get['information_id'])) {
    $information_id = (int)$this->request->get['information_id'];
} else {
    $information_id = 0;
}

 

следом вставить

if (!$this->customer->isLogged()) {
    $this->session->data['redirect'] = $this->url->link('information/information', 'information_id=' .  $information_id);
    $this->response->redirect($this->url->link('account/login', '', 'SSL'));
} 

 

но это для всех кастомеров разом

Надіслати
Поділитися на інших сайтах

20 минут назад, slobGrower сказал:

catalog/controller/information/information.php

 

найти


if (isset($this->request->get['information_id'])) {
    $information_id = (int)$this->request->get['information_id'];
} else {
    $information_id = 0;
}

 

следом вставить


if (!$this->customer->isLogged()) {
    $this->session->data['redirect'] = $this->url->link('information/information', 'information_id=' .  $information_id);
    $this->response->redirect($this->url->link('account/login', '', 'SSL'));
} 

 

но это для всех кастомеров разом

 

 

Я что то похожее находил на форуме. мне этот вариант не подходит тем что он скроет все статьи от незарегистрированных пользователей. А я хочу скрыть только каталоги как на скрине. По этому лучше чтобы внутри статьи в админке было типа выпадающее окошко с выбором доступа к новости. Все, либо только зарегистрированные)

 

Screenshot_22.jpg

Надіслати
Поділитися на інших сайтах


1 час назад, DarkEinstein сказал:

 

Статьи уже готовые, те которые стандартные в админке. А тот я так понял свои создаёт

Так их можно и перенести в этот модуль, это недолго. В модуле есть следующая возможность отображения статей (группы можете по своему вкусу создавать):

 

Screenshot_1.jpg

Надіслати
Поділитися на інших сайтах


$forbidden = array("1","3","6","7","8");
if (in_array($information_id, $forbidden)) {
	if (!$this->customer->isLogged()) {
		$this->session->data['redirect'] = $this->url->link('information/information','information_id=' . $information_id);
		$this->response->redirect($this->url->link('account/login', '', 'SSL'));
	}
}

 

костыльно можно так. 1,3,6,7,8 по id спрячутся

Надіслати
Поділитися на інших сайтах

1 час назад, DarkEinstein сказал:

Я что то похожее находил на форуме. мне этот вариант не подходит тем что он скроет все статьи от незарегистрированных пользователей. А я хочу скрыть только каталоги как на скрине. По этому лучше чтобы внутри статьи в админке было типа выпадающее окошко с выбором доступа к новости. Все, либо только зарегистрированные)

Сделайте проверку по порядку сортировки.

Для закрытых статей например -1

И закрывайте статьи только для этого порядка сортировки.

Надіслати
Поділитися на інших сайтах

6 минут назад, mpn2005 сказал:

Сделайте проверку по порядку сортировки.

Для закрытых статей например -1

И закрывайте статьи только для этого порядка сортировки.

 

Вы имеете ввиду проделать всё так как написал slobGrower только в строке $forbidden = array указать просто ("-1") ; ?

Змінено користувачем DarkEinstein
Надіслати
Поділитися на інших сайтах


10 минут назад, DarkEinstein сказал:

Вы имеете ввиду проделать всё так как написал slobGrower только в строке $forbidden = array указать просто ("-1") ; ?

Да. Вот такое условие сделать:

if ($information_info['sort_order'] == -1) {
	... тут редирект на логин

 

  • +1 3
Надіслати
Поділитися на інших сайтах

2 hours ago, mpn2005 said:

Да.

 

почти) человек запутается. а так - сортировка халяльное решение ;)

 

@DarkEinstein вот так с сортировкой "-1":

ищешь

$information_info = $this->model_catalog_information->getInformation($information_id);

следом добавляешь

if ($information_info['sort_order'] == -1) {
	if (!$this->customer->isLogged()) {
		$this->session->data['redirect'] = $this->url->link('information/information','information_id=' . $information_id);
		$this->response->redirect($this->url->link('account/login', '', 'SSL'));
	}
}

 

  • +1 2
Надіслати
Поділитися на інших сайтах

9 часов назад, slobGrower сказал:

человек запутается.

Вы правы)) С моими познаниями пхп максимум что можно, это копировать/вставить))

 

Но и это не помогло. Вставил вроде как верно, и в статье добавил порядок сортировки -1 Но статья доступна всё равно для всех 

 

Screenshot_23.jpg

Змінено користувачем DarkEinstein
Надіслати
Поділитися на інших сайтах


Отличный вопрос - классные рекомендации, пожалуй тоже :geek:

 

Если можно обнаглеть тем, кто просто из категории знаний - скопировал вставил))), то я бы попросил расписать возможность просмотра статьи не просто зарегистрированному пользователю, а еще бы определенной группе покупателей-пользователей - в общем посвященных в тайный орден допускаемых)))

 

Спасибо!

Змінено користувачем specialforce22
Надіслати
Поділитися на інших сайтах


4 часа назад, DarkEinstein сказал:

Но и это не помогло. Вставил вроде как верно, и в статье добавил порядок сортировки -1 Но статья доступна всё равно для всех 

Только поставьте все проверки после строки:

if ($informatin_info) {

Чтобы не возникало ошибок если статья отключена или отсутствует, а ссылку открыли.

 

Вот так можно чуть короче записать:

if (!$this->customer->isLogged() && $information_info['sort_order'] == -1) {
    $this->session->data['redirect'] = $this->url->link('information/information','information_id=' . $information_info['information_id']);
    $this->response->redirect($this->url->link('account/login', '', 'SSL'));
}

 

  • +1 1
Надіслати
Поділитися на інших сайтах

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

еще можно егора туда-же в сессию. вроде "войдите, чтобы читать". чтоб кастомер не терялся

 

@specialforce22

if ($this->customer->getGroupId() == 1 && $information_info['sort_order'] == -1) {

 

Змінено користувачем slobGrower
Надіслати
Поділитися на інших сайтах

2 минуты назад, slobGrower сказал:

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

еще можно егора туда-же в сессию. вроде "войдите, чтобы читать". чтоб кастомер не терялся

Точно. Редирект лучше оставить.

Поправил код в последнем сообщении.

  • +1 1
Надіслати
Поділитися на інших сайтах

добавлю, чтобы совсем пушка была ))

if (!$this->customer->isLogged() && $information_info['sort_order'] == -1) {
    $this->session->data['redirect'] = $this->url->link('information/information','information_id=' . $information_info['information_id']);
    $this->session->data['error'] = $this->language->get('error_read_info');
    $this->response->redirect($this->url->link('account/login', '', 'SSL'));
}

 

и в язык

$_['error_read_info'] = 'Вы должны войти, чтобы читать эту статью!';

 

  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.