Zulya

Zulya

С нами с 15 ноября 2016; Место в рейтинге пользователей: #355
Артур Шевченко
08 октября 2023, 10:09
1
+1
pdoPage умеет так делать. Ставишь ajaxMode=scroll и limit=1 и в добрый путь
Наумов Алексей
13 сентября 2023, 10:02
1
+1
У вас несколько вариантов:
1. Указать в параметре threads строку с нужными вам цепочками, например resource-5,resource-6,resource-7, где 5,6,7 — как раз те самые дочерние страницы. Но этот способ нормально будет работать только если таких страниц не так много, 5..10..100.
2. Изначально можно изменить способ формирования параметра thread, например сделать его вида category-2-product-5, тогда можно делать запрос вида thread LIKE 'category-2-%'. Но тоже, если тысячи товаров, то LIKE может быть не быстрым.

Если речь о тысячах товаров — нужно придумывать что-то другое, я бы рассмотрел возможность добавления какой-нибудь колонки в таблицу modx_ec_threads, куда бы записывались данные, по которым фильтровать удобно. В вашем случае колонка category со значением 2.
Zulya
02 сентября 2023, 01:08
1
+1
Благодаря помощи Артура Шевченко, нашли причину.

Решение:
У меня на сайте было 2 контекста.
При регистрации с автологином, юзер почему-то привязывался к контексту web. Но у меня контекст web был пустой и не использовался. Поэтому в сниппете Register, добавила параметр
&authenticateContexts=`web,meb`
.
После этого, авторизованный пользователь получил доступ к оценкам тикетов, комментариев, добавление в избранное.
Артур Шевченко
27 августа 2023, 10:49
1
+1
Можно, только нужно создать css класс, который будет управлять видимостью элементов, если такого класса еще нет, например «d-none», и блоку с формой и блоку с табами добавить условия. Для формы
[[!+modx.user.id:isloggedin:isnot=`1`:then=`d-none`]]
для табов
[[!+modx.user.id:isloggedin:is=`1`:then=`d-none`]]
Ну и в JS на событие «afl_complete» если response.success и ['regForm', 'authForm'].includes(form.id) переключать классы.
Zulya
27 августа 2023, 00:04
1
0
Артур, подскажите пожалуйста, с помощью AjaxFormitLogin возможно ли без перезагрузки страницы после отправки формы на той же странице отобразить TicketForm?
На странице добавления вопроса в шаблоне я разместила следующий код:
[[!+modx.user.id:isloggedin:is=`1`:then=`[[$addquestion]]`:else=`[[$authregtabs]]`]]
  • [[$addquestion]] — в этом чанке у меня сниппет TicketForm
  • [[$authregtabs]] — тут блок с табами, где есть формы авторизации/регистрации/восстановление пароля (как в этом видео скриншоте skrinshoter.ru/vLVs638ZeZi?a )
Когда посетитель не авторизован на сайте, ему отображается табы. Когда посетитель авторизуется/регистрируется, то сейчас страница перезагружается и потом отображается [[$addquestion]] со сниппетом TicketForm. А без перезагрузки страницы, даже после успешной авторизации/регистрации TicketForm не появляется, а остается формы в табах.
Артур Шевченко
26 августа 2023, 21:07
1
+2
Если хотите разобраться то вот и вот история моих изысканий на эту тему. Всё это в итоге переросло в компонент AjaxFormitLogin, поддержку которого я прекратил, потому что решил полностью переписать JS и PHP, которые достались мне по наследству от AjaxForm. Однако весь функционал из AjaxFormitLogin перекочевал в новый компонент SendIt. Он полностью готов и отлажен. Сегодня я закончил написание документации. Думаю в понедельник или во вторник он станет доступен для скачивание через менеджер пакетов в modstore.
Dan
Dan
26 августа 2023, 20:51
3
+3
В принципе можно и button использовать, но тогда нужно указать у нее атрибут value с любым значением. Ибо иначе в post-запросе передается пустой ключ и поэтому submitVar не отрабатывает.
Dan
Dan
26 августа 2023, 19:46
3
+3
Если вы указываете submitVar, то замените button на input
<input class="form-btn" type="submit" name="login-register-btn" value="Создать аккаунт">
Zulya
09 апреля 2023, 16:17
1
0
Надеюсь, кому-нибудь пригодится. Оказывается если в ТВ стоит значение по умолчанию, то при нем tvFilters не будет работать, даже после сохранения и смены на другое значение, не пишется в бд. Я убрала значение по умолчанию, и вручную указала значения ТВ в ресурсах. После все сработало.
Zulya
09 апреля 2023, 10:34
1
0
Здравствуйте!
Когда я добавляю &tvFilters=`companytype==mfo` к запросу pdoResources, то ничего не выводит, убираю tvFilters, снова выводит список ресурсов. Подскажите пожалуйста, где моя ошибка, почему tvFilters не работает? Спасибо!

[[pdoResources:default=`Ничего не найдено`?
			&parents=`47`
			&includeTVs=`address,tel,logo,companytype`
			&tvFilters=`companytype==mfo`
			&processTVs=`1`
			&limit=`10`
			&loadModels=`easycomm`
			&where=`{"class_key":"modDocument"}`
			&leftJoin=`{
			"ecThread": {
			"class": "ecThread",
			"on": "modResource.id = ecThread.resource"
						}
					   }`
			&select=`{
			"modResource": "*",
			"ecThread": "ecThread.rating_simple AS rating, ecThread.count AS reviews"
				}`
			&tpl=`topcompanies`
			&sortby=`{"rating":"DESC", "reviews":"DESC"}`
			]]