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

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
Артур Шевченко
19 марта 2022, 13:31
0
Код ниже удалит все неактивные модификации созданные через компонент msOptionsPrice2. Думаю что компонент msOptionsColor так же хранит данные в отдельной таблице и имеет свой класс объектов. Надо посмотреть в схеме таблиц как этот класс называется и как называется поле которое отвечает за активность и поменять «msopModification» на найденный класс, а «active» на название поля.
<?php
$modifications = $modx->getIterator('msopModification', array('active:!=' => 1));
$counter = 0;
if(count($modifications)){
    foreach($modifications as $modification){
        $counter++;
        $modification->remove();
    }
    echo 'Removed ' . $counter . ' modifications';
}
Артур Шевченко
19 марта 2022, 13:25
0
Если в чанке
{$tv_img | imgattr : 'dimensions' }
Если в шаблоне
{$_modx->resource.tv_img | imgattr : 'dimensions' }