Всего 125 959 комментариев

Leonid Krylov
21 марта 2022, 13:15
0
Вообще такие случаи у нас были нередко — разработчик приходил с идеей, обсуждали ее с ним и даже с автором дополнения-конкурента. И публиковали потом.
Артем
21 марта 2022, 13:09
0
Я, конечно, уже давно не работаю с MODX, но проходил тут мимо и решил осветить свое видение этой политики со своей колокольни.
На мой взгляд, политика в отношении подобных вещей должна быть кристально ясной и четкой, как два пальца, а не «мы рассматриваем каждое дополнение индивидуально».

Поставьте себя на место разработчика, который хочет написать новое дополнение, но оно пересекается с уже существующим по функциональности. Ему что, идти в поддержку и рассказывать о своих еще не реализованных идеях? Политика должна такие вещи однозначно предусматривать заранее, чтобы разработчик уже знал на 100%, пройдет его дополнение или нет.

Иначе зачем ему вообще тратить свое время, если его дополнение может пройти, а может и не пройти? Это же не лотерея какая-то, а магазин дополнений, у которого, еще раз повторюсь, должны быть однозначные, четкие и понятные правила.
Leonid Krylov
21 марта 2022, 12:30
+2
Для этого у нас есть модерация, ее никто не отменял.
Андрей Степаненко
21 марта 2022, 11:50
0
Как быть с тем что кто то код скопирует и выложит как свое дополнение)) Это же ни кем не ограничено получается
Андрей Степаненко
21 марта 2022, 11:47
0
Да же еще круче))

Можно скопировать весь код
Доработать
И выложить

Это же open source
Rootiys
20 марта 2022, 20:33
+1
Спасибо. Помогло включение настройки «Разрешить php в феном»
Сергей Карпович
20 марта 2022, 15:06
0
Спасибо, этот вариант тоже работает
Sergey (Sentinel)
20 марта 2022, 14:59
+1
{set $remains = ('!getRemains'|snippet:['id' => $_modx->resource.id])*1}
{if $remains > 0}
нет в наличии
{else}
n шт
{/if}
так попробуй
Александр Мельник
20 марта 2022, 14:52
1
+1
не знаю что это за сниппет такой и для чего он нужен, но по идее, вот так.
{set $result = 'getRemains'|snippet}
{if $result}
    {$result}
{else}
    нет в наличии
{/if}
наверное условия можно переписать короче, но во первых так нагляднее, а во вторых — я ненавижу тернарный оператор)
Сергей Карпович
20 марта 2022, 14:01
0
Подскажите как на fenom вывести сниппет getRemains с проверкой на наличие.
Если 0 = нет в наличии, иначе n шт.
Артур Шевченко
20 марта 2022, 11:51
0
Так-то 10 форм на страницу это тоже не мало.
Дмитрий
20 марта 2022, 11:15
0
1. Спасибо огромное, это работает) Я так и думал, что есть какая-то такая фишка
2. Там не очень много вакансий. Это корпоративный сайт одной компании. Вакансий 10 будет. И форма вызывается не по кнопке, а просто стоит в тексте. Но я согласен. Если форм много, то лучше что-то придумать без сотен вызовов форм.
Александр Мельник
20 марта 2022, 11:00
+1
1. Но вы же не передаете эти параметры внутрь AjaxForm. Чтобы внутри формы вам был доступен [[+vacancy_name]] нужно передать его при вызове AjaxForm
[[!AjaxForm?
&form=`tpl.vacancyAjaxForm`
&vacancy_name=`hello world`
]]
2. Вы наверное не так поняли Артура. Это очень плохая практика, когда у каждой услуги (товаре или что там еще) создается своя форма при помощи ajaxform. А если их будет 1000? 1000 раз будете на одной странице запускать сниппет ajaxform? Более экономично и разумно, иметь один вызов ajaxform где то в футере, он реализует одну форму. А дополнительно на js вы пишите просто скрипт который при клике на кнопку берет данные конкретно той вакансии, по которой кликнули и вставляет данные в ту форму, которая у вас в футере. И открывает модальное окно с этой формой. Тогда имея всего одну форму вы сможете сделать заказ любой вакансии, потому что данные в форме будут заполнены при клике и будут каждый раз разные.
Дмитрий
20 марта 2022, 10:49
0
1. Так и пишем — [[+idx]], [[+vacancy_name]] и т.д. Но выводится пустота
2. Так и написал
<input name="vacancy" placeholder="[[+vacancy_name]]" value="[[+vacancy_name]]" type="text">
3. Каждая форма должна быть идентифицирована уникальным ID, соответствующим номеру элемента modx (то есть с помощью [[+idx]])
Артур Шевченко
20 марта 2022, 10:02
+1
1. AjaxForm принимает любые параметры и в шаблоне они доступны как [[+placeholder]].
2. Чтобы данные передавались на почту они должны быть значениями именованного поля формы.
3. Чья фантазия придумала вызывать AjaxForm внутри каждого элемента? Хорошей практикой считает сделать 1 форму и с помощью JS подставлять в неё нужные данные, например название вакансии.
Николай Савин
20 марта 2022, 08:51
+3
У вас в шаблонах, используются php методы в trim, array_merge в качестве модификаторов. В обычном режиме работы pdoTools про php методы ничего не знает. Чтобы узнал, можно попробовать включить настройку «Разрешить php в феном». Я не уверен что поможет, но попробовать можно.
Если не поможет то — либо убирать такие записи по коду шаблона, либо создать сниппеты реализующие подобный функционал.
Артур Шевченко
19 марта 2022, 22:54
0
Для начала я бы создал отсутствующие сниппеты или нашёл место вызова и удалил вызов.
deleted
19 марта 2022, 21:59
0
Обычно делаю кнопку «показать ещё» вместе с обычной пагинацией, чтоб такой проблемы не возникало. На DNS так сделано.
Александр Мельник
19 марта 2022, 20:52
+1
Для этого нужно знать javascript и поискать документацию на pdoPage.

Вы можете написать свою функцию, указав ее в качестве функции обратного вызова при событии pdopage_load
Ваша функция может получить количество карточек товаров (услуг или чего вы там выводите) и вставить это число в нужное вам место страницы.
Таким образом у вас общее число будет браться с [[+page.total]] а реальное количество на странице динамически подставляться через javascript