Виталий

Виталий

С нами с 06 декабря 2015; Место в рейтинге пользователей: #427
Виталий
03 сентября 2016, 21:33
0
<a class="read-more" data-id="[[+id]]" data-pimg="[[+thumb]]" href="#modal-page">Быстрый просмотр</a>
<div id="modal-page">
<img src="" id="image">
<div id="modal-title"></div>
<div id="content"></div>

<div id="price"></div>
<div id="oldprice"></div>
<div id="new"></div>
<div id="popular"></div>
<div id="favorite"></div>
<div id="gipur"></div>
<div id="pimg"></div>

<form method="post" class="ms2_form">
<input type="hidden" name="id" value="">
<input type="hidden" name="count" value="1">
<input type="hidden" name="options" value="[]">
<div class="price">[[+price]]  [[%ms2_frontend_currency]]</div>
<button class="button button_green" type="submit" name="ms2_action" value="cart/add"><span>В корзину</span></button>
</form>
</div>
JS
<script src="[[++assets_url]]tempalates/js/jquery.fancybox.js"></script>

<script type="text/javascript">
$(document).ready(function() {
	$(".read-more").fancybox({
		maxWidth	: 800,
		maxHeight	: 600,
		fitToView	: false,
		width		: '70%',
		height		: '70%',
		autoSize	: false,
		closeClick	: false,
		openEffect	: 'none',
		closeEffect	: 'none',
		afterClose : function(){
			$('#content').html('');
			$('#modal-title').html('');
			$('#price').html('');
		}
	});
});


$(document).on('click','a.read-more',function(e){
	e.preventDefault();
	var id = $(this).data('id') || 0;
var pimg = $(this).data('pimg');

	$("#content").load("assets/ajax.php",{action:"getContent",id:id,pimg:pimg}, function(response){
		if (response) {
			var data = eval("(" + response + ")");
			$('#content').html(data.introtext);
			$('#modal-title').html(data.pagetitle);
			$('#price').html(data.price);
$('#oldprice').html(data.oldprice);
$('#new').html(data.new);
$('#popular').html(data.popular);
$('#favorite').html(data.favorite);
$('#gipur').html(data.gipur);
$('#pimg').html(data.pimg);
$("input[name='id']").val(data.id);
 $("#image").attr("src","data.pimg");
		}
	});

});
</script>
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 = isset($_POST['id']) ? (int) $_POST['id'] : 0;
		$pimg = isset($_POST['pimg']);
        if (empty($id)) {
            exit();
        };

        $object = $modx->getObject('modResource',$id);
		$output = array();
		$output['id'] = $id;
        $output['introtext'] = $object->get('introtext');
		$output['pagetitle'] = $object->get('pagetitle');
		$output['price'] = $object->get('price');
		$output['oldprice'] = $object->get('old_price');
		$output['new'] = $object->get('new');		
		$output['popular'] = $object->get('popular');
		$output['favorite'] = $object->get('favorite');
		$output['gipur'] = $object->get('gipur');
		$output['pimg'] = $pimg;
		
		$output = json_encode($output);
        $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);
Виталий
03 сентября 2016, 19:22
0
нет, по-прежнему true.
Виталий
03 сентября 2016, 18:57
0
$("#content").load("assets/ajax.php",{action:"getContent",id:id,pimg:pimg}, function(response){
теперь выдает true, а не /kupalnik/assets/images/products/13/80x112/3.jpg
Виталий
03 сентября 2016, 18:50
0
нет, не передает почему-то.
<a class="read-more" data-id="13" data-pimg="/kupalnik/assets/images/products/13/80x112/3.jpg"

а здесь вижу pimg:false
Виталий
03 сентября 2016, 15:06
0
Параметром не получилось. Ошибаюсь, по незнанию, наверно в php здесь
$pimg = isset($_POST['pimg'])? (int) $_POST['pimg']: 0;
полный код
$id = isset($_POST['id']) ? (int) $_POST['id'] : 0;
$pimg = isset($_POST['pimg']) ? (int) $_POST['pimg'] : 0;
        if (empty($id)) {
            exit();
        };

        $object = $modx->getObject('modResource',$id);
		$output = array();
		$output['id'] = $id;
        $output['introtext'] = $object->get('introtext');
		$output['pagetitle'] = $object->get('pagetitle');
		$output['new'] = $object->get('new');		
		$output['pimg'] = $object->get('pimg');
в JS здесь («src»,«data.pimg»);

var id = $(this).data('id') || 0;
var pimg = $(this).data('pimg') || 0;

	$("#content").load("assets/ajax.php",{action:"getContent",id:id}, function(response){
		if (response) {
			var data = eval("(" + response + ")");
			$('#content').html(data.introtext);
			$('#modal-title').html(data.pagetitle);
$('#new').html(data.new);
$("input[name='id']").val(data.id);
$('#pimg').html(data.pimg);
 $("#image").attr("src","data.pimg");
как правильно? как делал ты?
Виталий
02 сентября 2016, 19:04
0
получилось так:
$("input[name='id']").val(data.id)
спасибо!
еще подскажи пожалуйста как вывести сюда картинки minishop?
Виталий
02 сентября 2016, 14:26
0
как его вернуть?)
Виталий
02 сентября 2016, 14:00
0
да, по ссылке, вывожу так:
<a class="read-more" data-id="[[+id]]" href="#modal-page">Быстрый просмотр</a>
в JS сейчас так:
$(document).on('click','a.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) {
			var data = eval("(" + response + ")");
			$('#content').html(data.introtext);
			$('#modal-title').html(data.pagetitle);
			$('#price').html(data.price);
...
Виталий
02 сентября 2016, 13:39
0
Свойства товара удалось получить так же
$output['popular'] = $object->get('popular');
		$output['favorite'] = $object->get('favorite');
		$output['gipur'] = $object->get('gipur');
если чекбокс выбран – возвращает true. как сделать чтобы работало так же как плейсхолдер:
[[+popular:isnot=`0`:then=`<span class="hit">Хит</span>`:else=``]]
?

кнопка получается не функциональной
<button class="button button_green" type="submit" name="ms2_action" value="cart/add"><span>[[%ms2_frontend_add_to_cart]]</span></button>
пробую внутри модального окна вставить форму из чанка tpl.msProducts.row
<form method="post" class="ms2_form">
<input type="hidden" name="id" value="[[+id]]">
<input type="hidden" name="count" value="1">
<input type="hidden" name="options" value="[]">
<div class="price">[[+price]]  [[%ms2_frontend_currency]]</div>
 <button class="button button_green" type="submit" name="ms2_action" value="cart/add"><span>[[%ms2_frontend_add_to_cart]]</span></button>
 </form>
но так же не работает, товар в корзину не добавляется. Вместо «Добавить в корзину» – ms2_frontend_add_to_cart.
млжет этой форме нужно как-то передать ID товара?
value="[[+id]]"
картинки выводятся стандартно
<img src="[[+340x476:default=`/assets/components/minishop2/img/web/ms2_medium.png`]]" />
Виталий
01 сентября 2016, 16:50
0
Приветствую!

С помощью ваших советов удалось сделать загрузку Pagetitle, introtext и price. Делаю что-то вроде быстрого просмотра товара в модальном окне непосредственно из каталога, используется minishop2.
Как туда добавить другие поля?
нужны еще:
Картинки товара
свойства товара (favorite, popular, new, свои плагины)
кнопку добавления в корзину

или это можно сделать как-то иначе?
пробую еще так
[[!msProducts?
&resources=`13`
&tpl=`msProduct.content`
&includeThumbs=`340x476`
]]

выводятся свойства, цена, название. но как туда передавать id ресурса не знаю, и не показываются картинки (This resource is not instance of msProduct class.) кнопка тоже не работает
Виталий
21 февраля 2016, 14:37
0
спасибо за внимание! да вот даже не знаю, ставил его давно, да и плохо я в его настройках разбираюсь…
Виталий
21 февраля 2016, 14:26
0
пробовал менять тут настройки, но никак не реагирует
Виталий
21 февраля 2016, 14:20
0
да, только минишоп
вот как это выглядит
Виталий
21 февраля 2016, 14:14
0
Если правой кнопкой и «открыть в новой вкладке», какой полный адрес у картинки получается?
Такого типа? Просто тут gif указан хочу уточнить это опечатка или нет? Нет ли двойных слешей в адресе, который браузер пытается получить?
если открыть в новой вкладке то так
http://localhost/assets/images/products/64/180x140/princess-217400.jpg
т.е. нет diskont перед assets

если в редакторе html браузера изменить убрать / перед assets
<img class="" src="/assets/images/products/64/180x140/princess-217400.jpg" width="180" height="140">
то появляется diskont и картинка отображается
Виталий
21 февраля 2016, 14:04
0
<base href="http://localhost/diskont/">
Виталий
21 февраля 2016, 14:01
0
<base href="[[++site_url]]" />
пробовал его убирать — не помогает
.htaccess переименовал обратно в ht.access
Виталий
21 февраля 2016, 12:48
0
добавлю, картинки не показываются везде — на сайте и в административной части.
опытным путем выяснил, что если в браузере убрать / перед assets
<img class="" src="/assets/images/products/64/180x140/princess-217400.jpg" width="180" height="140">
то тогда адрес получается правильный, и картинка показывается, т.е. адрес получается такой:
http://localhost/diskont/assets/images/products/64/180x140/princess-217400.jpg

в поисках ответа, установил новый сайт с модкс и минишоп
в нем эта строка
<img class="" src="/assets/images/products/64/180x140/polaris-pcdh-1115.jpg" width="180" height="140">
выглядит так
<img src="/test/assets/images/products/13/120x90/foto.jpg" width="120" height="90">
т.е. перед assets появляется название папки сайта.

сравниваю \core\config\config.inc.php обеих сайтов
$modx_base_path= 'D:/OpenServer/domains/localhost/diskont/';
$modx_base_url= '/diskont/';
и
$modx_base_path= 'D:/OpenServer/domains/localhost/test/';
$modx_base_url= '/test/';
эти и другие пути схожи.

изменение basePath и baseUrl в источниках файлов MS2 Images так же ни к чему не приводит.

я в тупике, друзья!)
Виталий
06 декабря 2015, 19:47
0
minishop очень хорош!

Магазин работает, но возникла необходимость не удалять товары(которых нет в наличии временно), а скрывать в каталоге. пробую сделать таким же методом, т.е
создал Tv Nalichie список(одиночный выбор) возможные значения yes||no, по умолчанию yes. Доступен для шаблона категории и товара
В тестовой категории делаю вызов таким
[[!pdoPage? &element=`msProducts`  &includeTVs=`Nalichie` &tpl=`tpl.msProducts.row` where=`{"TVNalichie.value":"yes"}` &showLog=`1`]] [[!+page.nav]]
Но почему то выводятся все товары в категории, хотя в нескольких товарах поставил значение наличия «no»

where=`{«Nalichie»:«yes»} тоже пробовал, результат такой же

что я делаю не так?