[PayAndSee] - Версия 2.0

[PayAndSee] — реализует закрытый контент на MODX Revolution. Создание контента и тарифов, клиентов и подписок на контент, подписка на контент через оплату любым методом [miniShop2], а так же через в админку сайта.

Особенности:
  • работа только с новым miniShop2 (version =>2.4.0-beta2)
  • сниппет для вывода контента pas.content
  • сниппет оформления заказа pas.order
  • сниппет вывода оформленного заказа pas.get.order
  • сниппет вывода подписок pas.subscription
Все сниппеты компонента работают при помощи [pdoTools] и рассчитывают на использование [Fenom] в чанках.
Подписка возможна на любой ресурс, товар, тикет и тд.

Демо: PayAndSee
Доки: Документация PayAndSee
Обзор: Обзор компонента PayAndSee от OpenModx

[Установка]
Для работы вам нужен MODX не ниже 2.3 и PHP не ниже 5.4.
— Установите pdoTools — это библиотека для быстрой работы с БД и оформлением, необходима для многих компонентов
— Установите miniShop2 — это магазин на основе которого реализован функционал заказов и оплаты
— Установите Theme.Bootstrap — это тема оформления Twitter Bootstrap для MODX, под неё заточены стандартные чанки
— Установите PayAndSee

[Обновление]
Компонент полностью переписан,ни о каком обновлении со старой версии не может быть и речи.
У кого стоит предыдущая версия, деинсталлируем и устанавливаем/ настраиваем новую.

[Основное]
Основная панель управления находятся в отдельном разделе сайта, доступном через меню.
Содержит следующие вкладки:

[Контент]
Вкладка, на которой собран контент. Доступна сортировка по статусу контента и поиск.

Для создании контента необходимо указать ресурс к которому он будет привязан. Тарифы и подписки контента будут доступны после его сохранения.

[Тарифы]
Вкладка, на которой собраны тарифы контента. Доступна сортировка по контенту, сроку действия тарифа и поиск.

Для создании тарифа необходимо указать стоимость, контент к которому он будет привязан и срок подписки.

[Клиенты]
Вкладка, на которой собраны клиенты. Доступна сортировка по статусу и поиск.

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

[Подписки]
Вкладка, на которой собраны подписки. Доступна сортировка по клиенту, контенту, статусу и поиск.

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

[Статусы]
Вкладка, на которой собраны статусы. Доступна сортировка по классу.

Для создании статусы необходимо задать название и выбрать класс. Указать флаг активности и разрешения.
Дефолтные статусы:

* новый — задается при создании
* активен — характеризует активность
* неактивен — характеризует неактивность

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

[Оповещения]
Вкладка, на которой собраны оповещения. Доступна сортировка по классу и поиск.

Оповещение срабатывает в момент смены статуса сущности.
Для создании оповещения необходимо указать класс и статус. Задать почту, тему и тело сообщения.

Для каждой сущности определены методы getClientEmails и getManagerEmails
Результат набивается в переменные:

* $client_email — почта клиента
* $manager_email — почта менеджера

Таким образом вы можете просто указать $client_email|join и для сущности клиент это будет почта клиента, для сущности контент это будет почта всех клиентов с активной подпиской на данный контент и тп.

[Настройки]
Настройки PayAndSee расположены в Системные настройки > PayAndSee

[Основные]
Содержит основные настройки:

* working_templates — активные шаблоны. Список id шаблонов через запятую, для которых нужно активировать функционал.
* front_css — файл с css для подключения на фронте.
* front_js — файл с javascript для подключения на фронте.
* client_groups — группы регистрации клиентов, через запятую.
* email_manager — почтовые адреса менеджеров, через запятую.

[Заказ]
Содержит настройки необходимые для заказа:

* order_handler_class — имя класса, который реализует логику оформления заказа.
* order_delivery_id — идентификатор способа доставки [miniShop2], который используется при оформлении заказа.
* order_resource_id — идентификатор страницы заказа, на которой происходит оформление заказа.

[Службы]
Покупка и оформление заказа реализовано своим классом, в конечном счете заказ будет
сформирован и его можно будет увидеть в интерфейсе заказов [miniShop2]


[Заказ]
Процессом оформления заказа занимается специальный класс PasOrderHandler, который реализует интерфейс PasOrderInterface.
Конечно, вы можете подключить собственный класс для заказа и указать его в системной настройке order_handler_class

[Корзина]
Не реализован.

[Доставка]
Никак не используется, нужен только для задания обязательный полей заказа и наименования доставки в заказе.

[Оплата]
Стандартный [miniShop2]

Пример оформления и покупки можно увидеть тут pas.vgrish.ru/kupit.html?content=1

[События]
Актуальный список доступен в документации docs.modx.pro/components/payandsee/development/events

[Доступ]
Доступ определяется наличием разрешающих статусов у [контент], [клиента], [подписки]
Подписка также имеет дату начала/окончания действия что тоже учитывается при определении доступа.

Для проверки доступа добавлены два модификатора:

* pas_content_access — проверка доступа к контенту. Синоним pascaccess
* pas_resource_access — проверка доступа к ресурсу. Синоним pasraccess

1 параметр — значение по дефолту
2 параметр — идентификатор контента / ресурса. По умолчанию текущий ресурс.
3 параметр — идентификатор клиента. По умолчанию текущий клиент.

[Примеры]

— Закрыть свободный доступ для поля content
{$content|pasraccess}

— Закрыть свободный доступ для поля content и вывести форму покупки платного контента
{$content|pasraccess:('pas.content'|snippet:['resource'=>$id])}

— Проверить наличие доступа у текущего клиента к ресурсу 15 и записать в переменную
{set $access = 1|pasraccess:0:15}

{* далее можно использовать для проверки доступа переменную $access *}

{if $access}
Есть доступ
{else}
Нет доступа
{/if}

[Демо сайт]
Доступен демо сайт pas.vgrish.ru
Логин и пароль для входа в test

[Цена]
[PayAndSee] теперь стоит 1490 рублей. Старые покупатели получают новую версию бесплатно.
Компонент в магазине modstore.pro/packages/ecommerce/payandsee

P.S. Всем спасибо за внимание!)
Володя
Володя
30 августа 2017, 08:09
modx.pro
5 388
Поблагодарить автора Отправить деньги

Комментарии: 55

Владимир
30 августа 2017, 11:52
Ааааааа!!! Бегу обновлять, как раз ждал. Спасибо.
Василий Столейков
30 августа 2017, 11:54
Здорово, спасибо!
А вопрос: можно с помощью этого пакета реализовать платную подписку на услуги, и потом проверять их по всему сайту? В прошлой версии я делал это костылями, подписывал на скрытый ресурс, и потом отдельным сниппетом проверял по базе подписан на него пользователь или нет.
Пример такой реализации: подписка на Премиум-аккаунт, открывающий различные возможности на сайте.
    Володя
    30 августа 2017, 12:02
    а почему нет? Можно вполне, реализаций может быть несколько.
    Пример для VIP клиента имеющего доступ ко всему контенту сразу github.com/vgrish/Docs-1/blob/master/ru/01_%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D1%8B/22_PayAndSee/03_%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0/03_%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D1%8F.md
    реализуется просто отдельным статусом
      Василий Столейков
      30 августа 2017, 12:09
      Супер, да, пример проверки доступа даже в последнем примере описан.
      Спасибо, будем осторожно обновляться…
        Володя
        30 августа 2017, 12:13
        Спасибо, будем осторожно обновляться…
        Не, не… обновление не прокатит! Только с нуля.
        Сейчас добавлю это в описание.
          Василий Столейков
          30 августа 2017, 12:16
          Ок, я так и думал. Просто вводит в заблуждение эта фраза:
          Старые покупатели обновляются бесплатно.
          :)
            Володя
            30 августа 2017, 12:18
            уже понял, тоже поправил чтобы не вводить в заблуждение.
            Спасибо!
              Владимир
              30 августа 2017, 12:26
              А старый компонент еще таблицы свои не удалял, я зачистил вручную перед установкой нового (если, конечно, это не лишняя перестраховка).
                Володя
                30 августа 2017, 12:41
                (если, конечно, это не лишняя перестраховка).
                Вполне разумно если эти данные тебе не нужны
    Прохор
    30 августа 2017, 20:43
    Здравствуйте Владимир! Есть ли какая то статейка или гайд как правильно съехать со старого компонента на новый? Пользуемся старым компонентом с 6000 подписанных юзеров. Трудозатратно ли обновится на новый?
      Володя
      30 августа 2017, 21:30
      Добрый вечер. Нет никакого подобного гайда нет.
      Необходимо выполнение следующих условий
      — новая версия minishop2
      — шаблонизатор fenon
      Далее установить новую версию компонента.
      Клиенты могут быть созданы в главной панели, надо просто нажать на кнопку обновления. А вот контент и подписки потребуется набросать скрипт для переноса из старых таблиц в новые.
      Так же нужно будет изменить чанки вывода и покупки подписок.
      Вероятно проще сделать бекап сайта и все это спокойно выполнить на нем…
        Прохор
        31 августа 2017, 09:11
        Если в доках будет небольшая инструкция по переезду это облегчит жизнь) Спасибо за компонент!
          Володя
          31 августа 2017, 10:13
          Пока что мне этого не приходилось делать. А писать просто теоретически нет никакого желания. Если представится такой случай то инструкция появится.
          Спасибо за понимание!
      Алексей Федоров
      01 сентября 2017, 15:57
      Спасибо! Удалил, установил, пошел читать доки, а то, вроде, следил за процессом в трелло, но выход новой версии стал неожиданностью)) Приятной, конечно.
      Сергей
      03 сентября 2017, 05:44
      Мдя, знал бы не обновлял.
      В описании ни чего не написано, что все глобально переделывать надо.
      И поддержки нет (
        Илья Уткин
        03 сентября 2017, 07:41
        То есть, по этой фразе было непонятно, что «всё глобально переделывать надо»?

        [Обновление]
        Компонент полностью переписан, ни о каком обновлении со старой версии не может быть и речи.
        У кого стоит предыдущая версия, деинсталлируем и устанавливаем/ настраиваем новую.
          Сергей
          03 сентября 2017, 07:58
          Не прочел это пояснение и обновил. Пришлось откат делать. И вероятно нужен будет скрипт писать на перенос. В принцыпе это новое дополнение. Не помню, чтоб после обновления нужно было глобально все переписывать.
        Алексей Федоров
        11 сентября 2017, 15:51
        Заметил, что появилась версия 2.0.6 и происходит что-то необычное) При обновлении пакет дублируется, при этом кнопка «обновить» остается активной. Думал, так и нужно, удалил не обновленный вариант, но перестала отображаться страница компонента (при переходе через меню). Выдает:
        Could not find action file at: controllers/default/index.php
        Опять установил версию 2.0.0, перезагрузил права доступа — все вернулось на круги своя. Удалил версию 2.0.6, снова попытался обновить, повторно два пакета висят. Опасаюсь чего-то испортить. Это нормально, так и должно быть?
          Володя
          11 сентября 2017, 15:58
          Заметил, что появилась версия 2.0.6 и происходит что-то необычное)

          это необычное никак не связано в пакетом. Обновляйте, чистите кеш…
          Опасаюсь чего-то испортить.
          Понятно что удалять ничего не надо.
          Это нормально, так и должно быть?
          нет конечно, это не нормально. Но я на данное поведение повлиять не могу.
          Возможно кто-то прояснит ситуацию…
            Алексей Федоров
            11 сентября 2017, 16:01
            Тогда подожду пока) Кеш чистил. Из-за разницы в названии такого случиться не могло? В смысле, с указанием цены в скобках и без него?
              Володя
              11 сентября 2017, 16:06
              Из-за разницы в названии такого случиться не могло? В смысле, с указанием цены в скобках и без него?
              я не пишу нигде никаких цен… название формируется с репозитория магазина.
              Тогда подожду пока)

              Попробуй деинсталируй все версии пакета и затем установи последнюю.
                Алексей Федоров
                11 сентября 2017, 16:16
                Туплю(( Очевидное же решение. Да, так все получилось. Пакет один в установленных, работает все отлично
                  Володя
                  11 сентября 2017, 16:33
                  Хорошо что разобрались. Спасибо!
          Юрий Венедиктович
          16 октября 2017, 08:44
          Володя привет, подскажи куда копать

          мне нужно ограничить список разделов в форме создания тикета
          т.е. вывести только те на которые есть активная подписка у пользователя
          пытаюсь это сделать указав в параметрах снипета ticketForm &where предварительно загрузив модель &loadModels=`payandsee`, не могу сообразить какие поля подцеплять
          ведь надо получить ид пользователя и выдернуть по его ид статус подписки
          а потом в select отобрать только с активным статусом

          подскажи в правильном ли направлении думаю
          заранее Спасибо!
            Володя
            16 октября 2017, 09:59
            Привет.
            {'!TicketForm'|snippet:[
            'tplSectionRow' => '@INLINE <option value="{$id}" {$selected} {""|pasraccess:"disabled":$id}>{$pagetitle}</option>'
            ]}
              Юрий Венедиктович
              16 октября 2017, 13:03
              Спасибо дружище.

              уже второй день изучаю эти запросы голова кругом
              поэтому забыл уточнить, что у меня 2 одинаковых раздела
              в один подписываются в другой пишут
              вот поэтому то я попросил помощи в том как можно организовать выборку и возможно ли это используя сниппет ticketForm
              [[!TicketForm?
                  &parents=`7`
                  &loadModels=`payandsee`
                  &leftJoin=`{
                              "contents":{
                                      "class" : "TicketsSection",
                                      "on" : "ticket.id = "(таблица payandsee_contents).resource",
                                      },
              		"subscribe":{
              				"class":"payandsee",
              				"on" : " payandsee.client ="{$_modx->user.id}"
              			}
                              }`
                  &where=`{"subscribe.status.2"}`
              ]]
              вот как-то так я думаю

              Спасибо за терпение :)
                Володя
                16 октября 2017, 13:33
                Пожалуйста!
                поэтому забыл уточнить...
                Пишите в ТП с указанием доступов к админке сайта и ссылкой на форму вызова.
                Так будет проще и понятнее.
                Спасибо!
                  Юрий Венедиктович
                  16 октября 2017, 13:50
                  я покупал компонент в 15 году и тока сейчас он понадобился :), поэтому не могу написать в ТП
                  Володя
                  16 октября 2017, 17:29
                  просто приджойнить не получится, там много всего…
                  — таблица контента
                  — таблица клиента
                  — таблица подписок
                  — статусы ко всем этим сущностям
                  все это определяет наличие доступа.
                    Юрий Венедиктович
                    16 октября 2017, 18:00
                    да я уже смотрел все таблицы компонента payandsee
                    вроде даже понятна логика того что мне нужно но как реализовать не знаю, знаний не хватает
                    с джойнами то я бы еще справился но написать сниппет мне пока не под силу

                    в любом случае Спасибо дружище!
              Володя
              12 января 2018, 10:57
              Добавлена ссылка на обзор компонента PayAndSee от OpenModx.
              От себя хочу сказать Modstore и OpenModx за обзор — большое спасибо!!!
                Олег Захаров
                04 февраля 2018, 02:53
                Привет!
                На сайте хотим сделать 3 варианта оплаты — за 1 урок, за конкретный месяц (в нем несколько уроков) и за годовой доступ ко всем урокам. 9 учебных месяцев в курсе. Как лучше логику отстроить.
                Пока сообразил проверку через вложенные
                {If} {else} {/if}
                .
                Подскажите как вывести форму оплаты за годовой доступ?
                Пока сообразил так:
                ...
                {set $parrentmounth = $_modx->resource.parent}
                {set $parrentmounthObject = $modx->getObject('modResource',$parrentmounth)}
                {set $parrentyear = $parrentmounthObject ->get('parent')}
                {set $accessyear = ''|pasraccess:0:$parrentyear}
                {if !$accessyear}
                	Вы можете оплатить курс за год по цене 
                	<p class="bg-danger"> Оплатить доступ</p>
                	{getContentId($parrentyear, 10, $cache)|pasraccess:('pas.content'|snippet:['resource'=>$parrentyear])}
                {else}
                	Год оплачен {$parrentyear}
                {/if}
                {set $accessmounth = $parrentmounth|pasraccess:0:$parrentmounth}
                {if !$accessmounth}
                	<pre class="alert alert-info">  
                	Нет оплаты к курсу [[!pdoField? &id=`[[*id]]` &field=`pagetitle` &top=`2`]] 
                	</pre>
                	<!--  как вывести форму оплаты за месяц? -->
                	{getContentId($parrentmounth, 10, $cache)|pasraccess:('pas.content'|snippet:['resource'=>$parrentmounth])}
                {else}
                	<!-- для тестирования вывожу номера ресурсов -->
                	У вас активная подписка ко всем урокам месяца ({$parrentmounth}) "[[!pdoField? &id=`[[*id]]` 		&field=`pagetitle` &top=`1` ]]" курса ({$parrentyear}) [[!pdoField? &id=`[[*id]]` &field=`pagetitle` &top=`2` ]]
                {/if}
                <!--смотрим доступ к уроку -->
                {set $access = $_modx->resource.id|pasraccess:0}
                <!--Если вообще никакого доступа нет то выводим форму оплаты за урок-->
                {if !$access and !$accessmounth and !$accessyear}
                	<p class="bg-danger"> Оплатить доступ</p>
                	{$_modx->resource.content|pasraccess:('pas.content'|snippet:['resource'=>''])}
                {else}
                	<div id="lessonvideo" data-video-1080="тут полезный платный контент"></div>
                {/if}
                то есть вывод формы оплаты сделал так:
                {getContentId($parrentyear, 10, $cache)|pasraccess:('pas.content'|snippet:['resource'=>$parrentyear])}
                что значит параметр 10 сам не понял, взял из документации расширения, вроде сработало. Где лежит код функции getContentId?
                Прикол в том что в 1 уроке все норм работает, а в следующих (входящем в месяц 1) не работает.
                Контент и тарифы зада на годовой курс (он корневой ресурс), на месяцы (они включают в себя уроки) и на сами уроки.
                  Володя
                  04 февраля 2018, 10:13
                  сам не понял
                  я из всего вышеизложенного ничего не понял, извини.
                    Олег Захаров
                    04 февраля 2018, 14:19
                    я понял почему в 1 уроке форма выводится а в остальных не выводились. Оказалось что я ресурсы оставил на другие уроки в статусе «Неопубликовано». Проставил везде опубликовано и все заработало.
                  Олег Захаров
                  04 февраля 2018, 03:07
                  и еще как можно сделать одно выпадающее окно выбора подписки для разных ресурсов (контентов)?
                  И как можно повесить на свою кнопку?
                    Олег Захаров
                    04 февраля 2018, 03:19
                    и еще вопрос не совсем понятно как работает настройка контента «Активен для потомков». Можно ли сделать логику что если оплатили доступ к родительскому ресурсу, то доступы к дочерним автоматически добавлялись (сделать бы доп. настройку для выбора схемы подчиненности?)?
                      Олег Захаров
                      04 февраля 2018, 04:57
                      Еще бы добавить возможность использовать тариф для разных контентов. А то когда много страниц — тяжело добавлять и менять вручную цены на десятки ресурсов. Было бы круто прописывать например переменную из clientconfig.
                        Володя
                        04 февраля 2018, 10:16
                        Можно ли сделать логику что если оплатили доступ к родительскому ресурсу, то доступы к дочерним автоматически добавлялись (сделать бы доп. настройку для выбора схемы подчиненности?)?
                        docs.modx.pro/components/payandsee/development/extensions
                        написать кастомный
                        getResourceAccess
                          Олег Захаров
                          04 февраля 2018, 14:21
                          я посмотрел пример расширения. Сделал по своемому как в посте выше в выше и все заработало.
                          В описании расширения для примеров не указаны какие параметры задавать надо — где их посмотреть я не нашел. Можете документацию дополнить описанием параметров?
                          $cid = $PayAndSee->getContentId($rid, 10, $cache);
                          — вот тут второй параметр из документации — почему 10?
                          $access = $PayAndSee->getContentAccess($cid, $uid, $cache);
                          — я так понимаю этим способом можно присвоить доступ? $uid как подхватывается? Из примера не понял как он присваивается переменной, вроде задана пустая? Это id клиента (скорее всего) или пользователя?
                          $PayAndSee->addStore('access', $key, $access);
                          — это мы добавляем по ключу я так понимаю доступ?
                          $cache — что за переменная? Надо ее как-то задавать?
                          $PayAndSee->getStore('access', $key)) — это я так понимаю можно считать доступ к ресурсу для любого ресурса?
                            Олег Захаров
                            04 февраля 2018, 14:32
                            getPls — в каком виде данные получаются?
                            Извините, что вопросов много задаю :) PayAndSee супер вещь, но многое не понятно.
                        Володя
                        04 февраля 2018, 10:14
                        и еще как можно сделать одно выпадающее окно выбора подписки для разных ресурсов (контентов)?
                        как тут pas.vgrish.ru/katalog/?

                        И как можно повесить на свою кнопку?
                        написать какой то обработчик на нажание своей кнопки.
                        Олег Захаров
                        04 февраля 2018, 15:02
                        Посмотрите пожалуйста пост выше — наверное не заметили — про Активен для потомков?
                          Володя
                          04 февраля 2018, 15:08
                          там же и дан ответ — modx.pro/components/13202/#comment-93716
                          Олег не нужно бомбить тут вопросами, посмотри демо, почитай описание
                          docs.modx.pro/search?query=%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%B5%D0%BD+%D0%B4%D0%BB%D1%8F+%D0%BF%D0%BE%D1%82%D0%BE%D0%BC%D0%BA%D0%BE%D0%B2
                          подумай…
                          Так или иначе ответы на твои вопросы есть.
                          Спасибо!
                            Олег Захаров
                            04 февраля 2018, 18:08
                            Спасибо за обратную связь!
                            Вопрос сюда пишу потому что в других ветках вижу люди также делятся наработками.
                            Мне пришлось делать треххуровневый доступ с разными тарифами оплаты.
                            Несколько бессонных дней и ночей уже делаю сайт, многое не сразу стало понятно, но разобрался вроде. Ваше приложение очень крутое, сильно выручило!
                          Олег Захаров
                          12 февраля 2018, 11:13
                          Предлагаю добавить во вкладку Тарифы возможность указывать цену используя некий шаблонный тариф — который был бы не привязан только к одному контенту, а чтобы его можно было привязать к нескольким разным контентам. И если мне понадобилось поднять цену сразу для всех контентов. Это сильно упростит жизнь если нам вдруг надо будет везде поменять цену — меняем в одном месте, а не в сотне разных мест.
                          Или еще как вариант используя плейсхолдеры ClientConfig. Для этого надо добавить возможность прописывать их в поле цены — сейчас плейсхолдер ClientConfig туда не вставишь :).
                            Олег Захаров
                            07 марта 2018, 00:14
                            А что за изменения в новой версии?
                            2.0.12-beta (23.02.2018)
                            — Add «checkStat» [PayAndSee]
                            — Change «Order.submit» [js]
                              Олег Захаров
                              13 мая 2018, 17:05
                              Автора прошу сделать нормальную документацию, до много приходится додумывать как пользоваться (без претензии, это просьба).
                              Что за изменения в последних версиях?
                                Володя
                                13 мая 2018, 17:11
                                Все основны моменты изложены в документации.
                                Не нужно ичего додумывать, если у вас какие либо сложности стоит писать в ТП.

                                Какие либо новшества будут документированы после обкатки…
                                Спасибо.
                              max
                              max
                              21 апреля 2024, 16:49
                              Не работает дополнение.
                              modx 2.8.3
                              Minishop 2.8.3
                              PAS 2.0.24-beta

                              Поднимал на modhost разные тестовые сайты с PAS 2.0.24 и разными modx (2.6.5, 2.7.0, 2.8.0) — ни на одном хосте PAS не работает.

                              Например, конструкция в шаблоне:
                              {set $access = 1|pasraccess:0}
                              {* далее можно использовать для проверки доступа переменную $access *}
                              {if $access}
                              Есть доступ
                              {else}
                              Нет доступа
                              {/if}
                              {$_modx->resource.content|pasraccess:('!pas.content'|snippet:['resource'=>$_modx->resource.id])}
                              дает всегда один результат — Есть доступ.
                                Володя
                                22 апреля 2024, 08:56
                                Добрый день.
                                Дополнение работает, никто в ТП не писал о каких либо проблемах с пакетом.
                                Если у вас какие либо сложности пишите в ТП — решим.
                                  max
                                  max
                                  22 апреля 2024, 10:16
                                  Я пакет покупал в 2020. С тех пор так до него руки и не дошли. Сейчас вот взялся настраивать по инструкции — не хочет работать =( Написать в ТП modstore уже не позволяет =(
                                  В лог modx пишется следующее:
                                  [2024-04-22 10:18:14] (ERROR @ /var/www/site.ru/core/xpdo/xpdo.class.php: 644) Could not load class: PasValidator from payandsee.pasvalidator.
                                    Володя
                                    22 апреля 2024, 12:57
                                    Данная ошибка в логе никак не связана с проверкой доступа по модификатору pasraccess.
                                    Можете написать в ТГ в профиле.
                                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                55