Игорь

Игорь

С нами с 03 июля 2019; Место в рейтинге пользователей: #220
Игорь
28 января 2024, 13:40
0
Никто не подсказал.
вот ответ

[[!getImageList?
                &value=`[[+gallerys]]`
                &tpl=`tplIndicator`
                &docid=`[[*id]]`
                &docIdx=`[[+idx]]`
                &migxId=`[[+MIGX_id]]` 
                &tvname=`[[+MIGX_id]]`
            ]]

сниппет CountItems:
<?php
// Получаем входную строку, предположительно содержащую JSON
$inputString = $modx->getOption('input', $scriptProperties, '');
// Декодируем JSON-строку в массив
$data = json_decode($inputString, true);
// Возвращаем количество элементов в массиве, если массив не пуст
return $data ? count($data) : 0;


Выводим кол-во записей: [[CountItems? &input=`[[+gallerys]]`]]
Игорь
22 января 2024, 16:48
0
[[+fieldname]] — любое поле из конфигурации MIGX или из переданных параметров в сниппет
[[+idx]] — порядковый номер, начиная с 1
[[+_first]] — вернет 1, если это первая запись
[[+_last]] — вернет 1, если это последняя запись
[[+_alt]] — вернет 1, если это четная запись
[[+total]] — общее число элементов (можно изменить через &totalVar)
[[+property.name]] — выведет параметр с именем &name=`` в вызове getImageList. 

Например, при вызове:

[[getImageList? &tvname=`slider` &tpl=`@CODE: [[+image]]`]]

плейсхолдер [[+property.tvname]] будет иметь значение «slider».
Игорь
22 января 2024, 16:43
0
Ура, нашел!

<div id="carouselExampleControls-[[+MIGX_id]]" class="carousel slide carousel-fade" data-bs-ride="carousel" data-bs-interval="false">
        <div class="carousel-indicators">
           
           
            [[!getImageList?
                &value=`[[+gallerys]]`
                
                &tpl=`tplIndicator`
                &docid=`[[*id]]`
                &docIdx=`[[+idx]]`
                &migxId=`[[+MIGX_id]]` 
                
                
          &tvname=`[[+MIGX_id]]`
               
            ]]
<button type="button" data-bs-target="#carouselExampleControls-[[+property.tvname]]"
Игорь
27 октября 2023, 18:26
0
себе на заметку.
Игорь
25 октября 2023, 06:56
0
Решил частично проблему — просто у страницы поставил галочку «контейнер» и тогда страница из /page.html становится /page/
можно ещё окончание / убрать редиректом через htacess
Игорь
24 октября 2023, 11:58
0
Помогите, не получается вывести pagetitle в
<h5 class="modal-title" id="orderModalLabel"></h5>
Игорь
24 октября 2023, 11:42
0
Нашел другое решение и оно работает. От сюда решение modzone.ru/blog/2015/12/22/ajax-loading-of-content/

Создадим файл, на который будем отправлять AJAX запрос и который будет возвращать контент указанной страницы. Назовем его ajax.php и положим в папку assets.

ajax.php
<?php
// Если запрос не AJAX или не передано действие, выходим
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest' || empty($_REQUEST['action'])) {exit();}

$action = $_REQUEST['action'];

define('MODX_API_MODE', true);
require_once dirname(dirname(__FILE__)).'/index.php';

$modx->getService('error','error.modError');
$modx->getRequest();
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget('FILE');
$modx->error->message = null;

$output = '';
switch ($action) {
    case 'getContent':
        // Если не передан id страницы, тоже выходим
        $id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;
        if (empty($id)) {
            exit();
        };

        $object = $modx->getObject('modResource',$id);
        $output = $object->get('content');
        // Парсим теги MODX
        $maxIterations= (integer) $modx->getOption('parser_max_iterations', null, 10);
        $modx->getParser()->processElementTags('', $output, false, false, '[[', ']]', array(), $maxIterations);
        $modx->getParser()->processElementTags('', $output, true, true, '[[', ']]', array(), $maxIterations);
}


@session_write_close();
exit($output);

Создайте JavaScript файл, например script.js, и добавьте в него следующий код:

$(document).on('click', '.read-more', function(e) {
  e.preventDefault();
  var id = $(this).data('id') || 0;
  // Вставляем контент в тело модального окна
  $("#content").load("/assets/ajax.php", {action: "getContent", id: id}, function(response) {
    // Если ответ не пустой, открываем модальное окно
    if (response) {
      $("#mymodal").modal('show');
    }
  });
});
Подключите созданный JavaScript файл на вашем сайте.

<script src="путь/к/вашему/script.js"></script>
Добавление разметки для модального окна:
Добавьте на вашу страницу HTML код для модального окна Bootstrap:
<div class="modal fadeIn" id="mymodal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" aria-label="Close"><span aria-hidden="true">×</span></button>
        <h4 class="modal-title" id="myModalLabel">Модальное окно</h4>
      </div>
      <div id="content" class="modal-body"></div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default btn-close">Закрыть</button>
      </div>
    </div>
  </div>
</div>
Пример ссылки, где 42 это id страницы:

<a href="#" class="read-more" data-id="42">Подробнее</a>
Все, теперь страницы будут открываться без шаблона страницы.
Игорь
23 октября 2023, 17:29
0
это засунуть в js файл?
а вызывать как тогда… )
Игорь
23 октября 2023, 16:28
0
так… осталось понять как это применить…
Игорь
23 октября 2023, 16:12
0
<a data-fancybox data-type="ajax" data-src="[[#42.content]]" href="#">Тест3</a>
контент подгрузил со страницы в моем случае в footer… получается это уже не ajax…

[[#42.content]] - грузит содержимое без шаблона. но не ajax..
Игорь
26 сентября 2023, 07:18
0
Может кто-то решил проблему отображения MIGX картинок внутри MIGX?
я пробовал еще так forums.modx.com/thread/79003/migx-this-renderimage-phpthumb-errors#dis-post-435441
но не помогло.

использую MIGX внутри MIGX фотографии, tv отдельная, используй источник файлов.
ltdfoto.ru/image/y1lg9R
но если нажать на любую то отображается.

в html migx так
<div class="x-grid3-cell-inner x-grid3-col-0"><img src="/connectors/system/phpthumb.php?h=80&f=png&src=my-picture-1.jpg&source=1" alt=""></div>
неужели это баг MIGX который еще никто не исправил?
Игорь
23 сентября 2023, 10:39
0
Ура) помогло

ssl:
mysqldump -u my_bd -p my_bd > dump.sql
mysql -u new_bd -p new_bd < dump.sql

далее в таблице modx_system_settings
ищите записи с ключами site_url и base_url. Эти ключи содержат URL вашего сайта и меняем на новый домен.

Далее заходим в админку, чистим кэши, через время фронтенд сайт заработает (не сразу), видимо надо время прокешироваться по новой
Игорь
02 августа 2023, 21:41
0
Спасибо кто откликнулся и за помощь)) Сработал свой костыль Сниппет getTV + js (подстановка номера через поиск на странице и замену пустого значения).

в шаблоне вызова так:
[[!getTV]]
[[!$vitrina]]
Игорь
02 августа 2023, 15:40
0
Пробовал даже так, хотел замену сделать

[[*city_phone_whatsapp]]
на
[[#[[*parent]].city_phone_whatsapp]]

Сниппет:
<?php
// Получить содержимое чанка 'vitrina'
$chunkContent = $modx->getChunk('vitrina');

$updatedChunkContent = str_replace('*', '#[[*parent]].', $chunkContent);

return $updatedChunkContent;

Вызов в шаблоне:
[[!getUpdatedVitrina]]

не помогло.
Игорь
02 августа 2023, 14:23
0
если использую
[[If? &is=`[[*city_phone_whatsapp]]`:then=`вывод текста`]],
ничего не выводит
Игорь
02 августа 2023, 14:07
0
Я немного ушел в сторону.

Сниппет getTV:
<?php
// Получить родительский ресурс
$parentResource = $modx->getObject('modResource', $modx->resource->get('parent'));

if ($parentResource) {
    // Получить все TV у родительского ресурса
    $parentTvs = $parentResource->getTemplateVars();
    
    foreach($parentTvs as $tv) {
        // Проверить, существует ли такая переменная у текущего ресурса
        $currentTv = $modx->getObject('modTemplateVar', ['name' => $tv->get('name')]);
        if ($currentTv) {
            // Получить значение родительского TV
            $parentValue = $tv->getValue($parentResource->get('id'));
            // Установить значение родительского TV для текущего ресурса
            $currentTv->setValue($modx->resource->get('id'), $parentValue);
            $currentTv->save();
        }
    }
      
}
в шаблоне вызова так:
[[$vitrina]]
[[getTV]]

Проблема осталась что иногда по не понятным причинам один TV не всегда получает значение…
а именно:

[[*city_phone_whatsapp:isnot=``:then=`вывод текста`]]
Игорь
02 августа 2023, 09:58
0
Помогите решить проблему…
Нужно такое условие…
[[#[[*parent]].tovar_kit_chekbox:is=`1` или *tovar_kit_chekbox:is=`1`:then=``]]
Игорь
08 марта 2023, 12:52
0
да вот хотелось что б фотки и видео можно было в перемешку. Странно что нельзя расковырять migx и отключить проверку наличия загруженной фотографии.

А что если при добавлении одиночного фото у тв что б сразу в поле инпут была какая-нибудь фотка заглушка. (Тогда при удалении видео удалится и картинка и везде где она была указана у видео).