Загрузить страницу через Ajax без шаблона

Здравствуйте, не смог найти простой способ просто загрузить содержимое страницы [[*content]] без шаблона этой страницы…

<a data-fancybox data-type="ajax" data-src="[[~42]]" href="#">Тест2</a>
хочу грузить страницы, но грузит и шаблон ее…
у страницы ставить без шаблона не подходит такой вариант.
Игорь
23 октября 2023, 15:54
modx.pro
325
0

Комментарии: 8

Денис Усманов
23 октября 2023, 15:58
0
Попробуйте не [[~ID]], а [[#ID.content]]
    Игорь
    23 октября 2023, 16:12
    0
    <a data-fancybox data-type="ajax" data-src="[[#42.content]]" href="#">Тест3</a>
    контент подгрузил со страницы в моем случае в footer… получается это уже не ajax…

    [[#42.content]] - грузит содержимое без шаблона. но не ajax..
      Денис Усманов
      23 октября 2023, 16:18
      0
      Простейший способ решения задачи: сделать запрашиваемый ресурс без шаблона.
      Вот у меня скрипт 1 есть, мб поможет как:
      $(document).on('click', '.modalTrigger', function(e) {
      	e.preventDefault();
      	$.ajax({  
      	  type: "POST",  
      	  url: '[[~ID]]', 
      	  data: {parent: '[[*id]]'},
      	  success:  function(data) { 
      		if (data){
      		    $('#modalAjax').html(data);
      		}else{
      		  AjaxForm.Message.error('Что-то пошло не так, попробуйте позже!');
      		}
      	  } 
      	}); 
      });
        Игорь
        23 октября 2023, 16:28
        0
        так… осталось понять как это применить…
          Игорь
          23 октября 2023, 17:29
          0
          это засунуть в js файл?
          а вызывать как тогда… )
            Денис Усманов
            23 октября 2023, 17:49
            0
            Засунуть в файл вряд-ли получится, так не передашь ID… вызывать в шаблоне страницы, где эта функция должна выполняться. Вызывается классом modalTrigger на кнопке необходимой, а выводится вызов в блоке с id modalAjax
      Игорь
      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>
      Все, теперь страницы будут открываться без шаблона страницы.
        Игорь
        24 октября 2023, 11:58
        0
        Помогите, не получается вывести pagetitle в
        <h5 class="modal-title" id="orderModalLabel"></h5>
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8