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

Дмитрий
22 ноября 2024, 19:55
0
Все исправилось, после замены на 'parents' => $_modx->resource.id
Дмитрий
22 ноября 2024, 19:53
0
Добрый вечер! Я в курсе, что вылетает ошибка, т.к. не заполнены поля у товара… он выдает что то такое… надо исправить )…
Ruslan
22 ноября 2024, 09:31
0
А кто подскажет, как в форму Создания/Редактирования ресурса, через ms2Form, добавить возможность выбирать несоклько параметров в одном TV?
Ну то-есть например у меня есть у карточки недвижимости TV c select и checkbox значениями.
Как мне в самой форме создания/редактирования ресурса, вывести список значений TV параметра так же выпадающим списком, или чекоксом?
Перекопал форум, и ненашел никакой документации с примером такой реализации.
Подскажите где посмотреть?
ВитОс
22 ноября 2024, 08:53
0
если правильно понял то так
{set $rows = json_decode($_modx->resource.constructor_block, true)}
                        {foreach $rows as $index => $row}
                                <strong>{$row.name}</strong> {$row.description}
                                {set $lessons = json_decode($row.lesson, true)}
                                            {foreach $lessons as $lesson}
                                                    <h4>{$lesson.title}</h4>
                                            {/foreach}
                        {/foreach}
Роман
22 ноября 2024, 08:43
0
Подскажите, если на странице будет две формы, они будут работать? К примеру reCaptchaV3 этого сделать не может, нужно через костыль в виде скрипта, который сбрасывал через указанное время отправку и обновлял ключи.
Ivan
22 ноября 2024, 01:42
0
У вас есть баг при изменении кол-ва позиции в корзине
Артур Шевченко
21 ноября 2024, 22:15
1
0
надо как то подгружать через Ajax, разные формы
Можно и подгружать. Устанавливаешь SendIt. Разметка будет такая
<form action="">
    <select name="realty_type" data-si-preset="load_fields" data-si-event="change" data-si-form>
        <option value="квартира" selected>квартира</option>
        <option value="земельный участок">земельный участок</option>
    </select>
    <div id="results">{'loadFields' | snippet: ['type' => 'квартира']}</div>
</form>
Пресет такой
'load_fields' => [
    'hooks' => '',
    'resultBlockSelector' => '#results',
    'resultShowMethod' => 'insert',
    'snippet' => 'loadFields'
]
Сниппет loadFields примерно такой
$type = $type ?? $_POST['realty_type'];
$html = '';
switch ($type) {
    case 'квартира':
        $html = $modx->getChunk('flatFields', []);
        break;
    case 'земельный участок':
        $html = $modx->getChunk('groundFields', []);
        break;
}
if($SendIt){
    if($result['success']){
        return $SendIt->success(true, ['html' => $html]);
    }else{
        return $SendIt->error(false, []);
    }
}
return $html;
Ну а в чанках соответственно поля.
Дмитрий
21 ноября 2024, 14:22
0
А подскажите тогда, у меня есть допустим Теги: Новости, Акции, что надо дописать что бы видно было 10 допустим а остальное скрыто с кнопкой «еще»
Дмитрий
21 ноября 2024, 14:20
0
Спасибо, все получилось!!!
Ruslan
21 ноября 2024, 13:56
0
Мне кажется. это не совсем правильно, и придется писать много проверок на JS.
В идеале, я думаю надо как то подгружать через Ajax, разные формы, в зависимости от выбранных параметров.
Артур Шевченко
21 ноября 2024, 11:40
0
как вообще можно реализовать подгрузку разных параметров недвижимости, в зависимости от того, жилая это недвижимость или коммерческая?
В простом варианте решения все параметры сразу есть в форме, а ты с помощью JS скрываешь те, которые не относятся к выбранному типу недвижимости. Примерно так
<style>
    .d-none {
        display: none;
    }
</style>
<form action="">
    <select name="realty_type">
        <option value="квартира" selected>квартира</option>
        <option value="земельный участок">земельный участок</option>
    </select>
    <input type="number" name="room_count" data-type="квартира">
    <input type="number" name="square_for_live" data-type="квартира">
    <input type="number" name="total_square">
    <select name="destination" data-type="земельный участок" class="d-none">
        <option value="ИЖС">ИЖС</option>
        <option value="Земли сельхоз назначения">Земли сельхоз назначения</option>
    </select>
</form>

<script>
    const realtyType = document.querySelector('[name="realty_type"]');
    const linkedFields = document.querySelectorAll('[data-type]');
    realtyType && realtyType.addEventListener('change', e => {
      linkedFields.forEach(field => field.classList[field.dataset.type === e.target.value ? 'remove' : 'add']('d-none'));
    })
</script>
Alexey
20 ноября 2024, 22:25
0
Блин, точно… нужно больше отдыхать)) Понимаю же, что должен быть текущий ресурс, а мозг клинит…
Sergey (Sentinel)
20 ноября 2024, 20:53
+1
а почему 'parents' => '{$id}',?
надо наверное 'parents' => $_modx->resource.id
Alexey
20 ноября 2024, 19:51
0
Что-то показания путаные! То ошибка 404, то все то же самое…
Можно попробовать вообще строку 'parents' => $id, убрать на время и проверить. По умолчанию в parent подставляется $id текущего ресурса.

Повторюсь, навскидку все должно работать. Тут либо шаблон не тот, либо лыжи не те)))

И что за сниппет setlocale? Он не может как-то влиять?
Дмитрий
20 ноября 2024, 16:38
0
Да эти ссылки ведут на контейнеры с шаблоном 7


Если я ставлю как вы говорите parents' => $id, то у меня уже попадает в этот список страница Ошибка 404 и т.д. не работает…
Дмитрий
20 ноября 2024, 16:29
0
До этого был шаблон вот такой, может где то ошибка в нем!

[[$template.breadcrumb]]
			<div class="page-section">
				<div class="container">
					<h1>[[*longtitle:default=`[[*pagetitle]]`]]</h1>
					<nav class="categories-nav">
						<ul>
							<li[[*id:is=`4`:then=` class="active"`]]><a href="[[~4]]">Все</a></li>
                            [[pdoMenu?
                                &parents=`4`
                                &level=`1`
                                &firstClass=``
                                &lastClass=``
                                &tpl=`@INLINE <li[[+classes]]><a href="[[+link]]">[[+menutitle]]</a></li>`
                                &tplOuter=`@INLINE [[+wrapper]]`
                            ]]
						</ul>
					</nav>
					[[setlocale]]
					[[!pdoPage?
                        &parents=`[[*id]]`
                        &limit=`8`
                        &sortby=`{"publishedon": "DESC"}`
                        &useWeblinkUrl=`1`
                        &tpl=`news.item`
                        &includeTVs=`image`
                        &prepareTVs=`image`
                        &where=`{"template": 7}`
                        &tplPageWrapper=`@INLINE 

<div class="paginate-links js-paginate-links"> <ul class="pagination justify-content-center js-pagination ajax-pagination"> [[+pages]] </ul> </div>` &tplPage=`@INLINE <li class="page-item"><a href="[[+href]]" class="page-link">[[+pageNo]]</a></li>` &tplPageActive=`@INLINE <li class="page-item active"><span class="page-link">[[+pageNo]]</span></li>` &tplPageSkip=`@INLINE <li class="page-item disabled"><span class="page-link">...</span></li>` &toPlaceholder=`listing` ]] [[+listing:ne=``:then=`<div class="objects-archive by2-sm by4-lg row ajax-result"> [[+listing]] </div> [[!+page.nav]] `:else=`<p>Пусто...</p>`]] [[*content]] </div> </div> </div>
Alexey
20 ноября 2024, 16:28
0
disk.yandex.ru/d/TZ1s71O-Q8cXEQ — эти ссылки ведут на отдельные ресурсы-контейнеры, у которых дочерними являются ресурсы с шаблоном 7, так? И у этих контейнеров шаблон как в описании, так?

Если да, то должно работать с 'parents' => $id, Если элементы хранятся в файлах, возможно, был кеш не сброшен после редактирования шаблона?
Андрей Чаплыгин
20 ноября 2024, 16:25
0
В сниппете rcv3_html достаточно отложить загрузку через setTimeout (хотя кто-то делает через onClick). Не думаю что мой вариант самый правильный и что вообще стоит принудительно таймаутить что-либо, но меня пока так устраивает + поможет улучшить показатель TBT в PageSpeed.

Меняем вот эту строку:

$modx->regClientStartupScript('<script src="https://www.google.com/recaptcha/api.js?onload=ReCaptchaCallbackV3&render=' . $public . '" async></script>');

на

$modx->regClientScript('
        <script>
            function loadCaptcha() {
              let script = document.createElement("script");
              script.src = "https://www.google.com/recaptcha/api.js?onload=ReCaptchaCallbackV3&render=' . $public . '";
              script.async = true;
              document.body.append(script);
            }
            setTimeout(loadCaptcha, 2500);
        </script>
    ', true);

В итоге получаем отложенную загруку скрипта на 2,5 секунды + он будет не в head, а в body за счёт замены regClientStartupScript, на regClientScript.
Дмитрий
20 ноября 2024, 16:06
0
Пробовал, все тоже самое….
т.е. если я нажимаю «акция» он мне должен показать документы в категории «акция», а он показывает «все»
Alexey
20 ноября 2024, 15:16
0
так попробуй:
'parents' => $id,