Скачивание авторизованым

ЕСТЬ РЕШЕНИЕ InstantCMS 2.X

Как лучше слелать кнопку скачать?

#1 5 февраля 2023 в 20:53

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

Создал поле скачивания файла в необходимом типе контента, настроил чтобы видно было только авторизованным но у гостей сообщения для того чтобы они зашли на сайт или зарегистрировались для скачивания не знаю как лучше сделать(

#2 5 февраля 2023 в 21:10

 Kantona, придется немножко покодить.

В файле templates/modern/content/default_item.tpl.php перед циклом, где перебираются поля типа контента пишем такую конструкцию: (цикл начинается с <?php foreach ($fields_fieldsets as $fieldset_id => $fieldset) { ?>)

Так как данный файл обрабатывает записи из всех типов контента, то сначала необходимо проверить, что вы в нужном ТК:

  1. <?php if($ctype['name'] == 'your_name') { ?>
  2. ...
  3. <?php } ?>

your_name — это системное имя вашего ТК.

Ну а далее уже напишем условие для показа поля авторизованным пользователям:

  1. <?php if($ctype['name'] == 'your_name') { ?>
  2.  
  3. <?php $user = cmsUser::getInstance(); ?>
  4.  
  5. <?php if (cmsUser::isLogged()) { ?>
  6. <?php echo $item['fields']['вашеполе']['html'] ?>
  7. <?php } else { ?>
  8. <p class = "text-danger">Чтобы скачивать этот файл, необходимо <a class = "ajax-modal key" href = "/auth/login">авторизоваться</a> на сайте</p>
  9. <?php } ?>
  10.  
  11. <?php } ?>

Как-то примерно так. Пишу с телефона, поэтому если где-то синтаксическая ошибка — не пинайте.

Хотя подключать сюда работу с методами компонента пользователи не совсем правильно — но, такой вариант тоже должен работать. Буду у ПК, напишу более цивильное решение. Если кто-то не даст его раньше )

#3 5 февраля 2023 в 21:22

 Kantona, придется немножко покодить.

В файле templates/modern/content/default_item.tpl.php перед циклом, где перебираются поля типа контента пишем такую конструкцию: (цикл начинается с <?php foreach ($fields_fieldsets as $fieldset_id => $fieldset) { ?>)

Так как данный файл обрабатывает записи из всех типов контента, то сначала необходимо проверить, что вы в нужном ТК:

  1. <?php if($ctype['name'] == 'your_name') { ?>
  2. ...
  3. <?php } ?>

your_name — это системное имя вашего ТК.

Ну а далее уже напишем условие для показа поля авторизованным пользователям:

  1. <?php if($ctype['name'] == 'your_name') { ?>
  2.  
  3. <?php $user = cmsUser::getInstance(); ?>
  4.  
  5. <?php if (cmsUser::isLogged()) { ?>
  6. <?php echo $item['fields']['вашеполе']['html'] ?>
  7. <?php } else { ?>
  8. <p class = "text-danger">Чтобы скачивать этот файл, необходимо <a class = "ajax-modal key" href = "/auth/login">авторизоваться</a> на сайте</p>
  9. <?php } ?>
  10.  
  11. <?php } ?>

Как-то примерно так. Пишу с телефона, поэтому если где-то синтаксическая ошибка — не пинайте.

Хотя подключать сюда работу с методами компонента пользователи не совсем правильно — но, такой вариант тоже должен работать. Буду у ПК, напишу более цивильное решение. Если кто-то не даст его раньше )

Make

Большое спасибо!) Все работает))

#4 8 апреля 2023 в 13:37

Скажите как прописать условие, чтоб нужное поле показывалось только если автор записи Админ с ID 1?

#5 8 апреля 2023 в 14:42

Скажите как прописать условие, чтоб нужное поле показывалось только если автор записи Админ с ID 1?

lakomet

В настройках любого поля есть «Настройка доступа», выбирайте нужную группу и это поле будут видеть только они, в вашем случае админ.Изображение

#6 9 апреля 2023 в 12:44

Скажите как прописать условие, чтоб нужное поле показывалось только если автор записи Админ с ID 1?

lakomet

В настройках любого поля есть «Настройка доступа», выбирайте нужную группу и это поле будут видеть только они, в вашем случае админ.Изображение

CEH9I

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

Добавлено спустя 21 час

Мне нужно чтоб поле видели все, если автор записи админ

lakomet

В общем сделал так, вставил в цикл где перебираются поля типа контента такой код

  1. <?php if ($field['name'] === 'системное_имя_скрываемого_поля' && $item['user_id'] != 1) {continue;} ?>

может кому пригодится

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.