Загрузка ресурса через AJAX
Добрый день!
Ситуация следующая…
Есть каталог ресурсов которые выводятся через pdoResources.
Мне необходимо сделать так, чтобы при клике на любой ресурс каталог исчезал и на его месте (в этом же контейнере) загружался ресурс через AJAX, без перезагрузки.
Нашел код который подгружает только описание ресурса ( текст)
Вопрос как добавить (в этот код или новый) вывод TV и pagetitle ресурса?
Заранее спасибо!
Ситуация следующая…
Есть каталог ресурсов которые выводятся через pdoResources.
Мне необходимо сделать так, чтобы при клике на любой ресурс каталог исчезал и на его месте (в этом же контейнере) загружался ресурс через AJAX, без перезагрузки.
Нашел код который подгружает только описание ресурса ( текст)
<?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);
ну и сам скрипт который вешается на ссылку по клику$(document).on('click','.read-more',function(e){
e.preventDefault();
var id = $(this).data('id') || 0;
// Вставляем полученный контент в HTML блок с id="content"
$("#content").load("/assets/ajax.php",{action:"getContent", id:id});
});
Вопрос как добавить (в этот код или новый) вывод TV и pagetitle ресурса?
Заранее спасибо!
Комментарии: 4
$id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;
if (empty($id)) {
exit();
};
$resource = $modx->getObject('modResource', $id);
// ресурс есть, он опубликован и не удален
if(!$resource || !$resource->get('published') || $resource->get('deleted')) {
exit();
}
// еще бы проверку добавить, что это товар, а не какая-либо другая страница
$data = $resource->toArray();
$data['some_tv'] = $resource->getTVValue('some_tv');
return $modx->getChunk('ВАШ_ЧАНК_С_HTML', $data);
изменил с учетом Вашего кода и теперь вообще пустота загружается
<?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();
};
$resource = $modx->getObject('modResource', $id);
if(!$resource || !$resource->get('published') || $resource->get('deleted')) {
exit();
}
$data = $resource->toArray();
$data['tovar_big_image'] = $resource->getTVValue('tovar_big_image');
}
return $modx->getChunk('trade_item_small', $data);
Прям интересно, как это должно работать
Вот у меня так в десктопной версии golodnaya-panda.ru/shop/ тебе так нужно?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.