Сергей Хлопов

Сергей Хлопов

С нами с 09 апреля 2018; Место в рейтинге пользователей: #849

Как выполнить обработку изображения товара самостоятельно ?

Здравствуйте, подскажите пожалуйста. Есть товары созданные с помощью miniShop2, создаю их программно, при выгрузке товаров из xml файла. Ранее я загружал картинки для товара таким образом:
foreach ($this->allGallery as $key => $value) {
    $this->modx->runProcessor('gallery/upload', $value, array(
        'processors_path' => MODX_CORE_PATH.'components/minishop2/processors/mgr/'
    ));
}
Сейчас появилась необходимость сделать такой эффект на картинках:

Нужно же самостоятельно обработать изображения для того что бы сделать такой эффект, сделать соответственно два привью разных размеров, каким образом это лучше сделать? Заранее благодарю за ответ.
Сергей Хлопов
24 мая 2020, 12:17
modx.pro
335
0

Есть ли готовые решения для экспорта из Modx товаров и ресурсов ?

Здравствуйте, подскажите пожалуйста, а есть ли какие нибудь готовые решения для экспорта? Просто на сайте есть товары которые были добавлены с помощью miniShop2. Потом ещё блог, информация, реализованные с помощью ресурсов, отзывы, и сейчас это нужно всё экспортировать, в файл xml, либо json. Я в принципе вроде бы понимаю как вручную написать экспорт, но может быть есть уже что-то готовое. Заранее благодарю за ответ.
Сергей Хлопов
04 февраля 2020, 18:12
modx.pro
534
0

Как в чанк передать массив и работать с ним ?

Здравствуйте, подскажите пожалуйста как в чанк передать массив, а потом в чанк с ним поработать?
Есть такая вот конструкция, $logArray — это массив. А в чанк как с ним дальше? Причем массив ассоциативный, есть просто {ключ => значение} а есть и {ключ => массив}
$modx->getChunk('tpl.1cUnloading.email',array(
           'elem'   => $logArray
        ));
На самом деле хотелось бы в чанке tpl.1cUnloading.email использовать fenom, и в нём уже сделать циклы по массиву который передаю.
Заранее благодарю за ответ
Сергей Хлопов
21 февраля 2019, 21:28
modx.pro
2 640
0

Почему в ресурсах нету переключателя на Английскую версию ? Babel

Здравствуйте подскажите пожалуйста, использую компонент Babel для мультиязычности.
Создал контекст En для английской версии сайта, а web (был уже создан) для русской версии.
Затем установил Babel, ну точнее удалил а потом по новой установил, т.к. он уже был установлен перед созданием контекстов.
Ну после установки Babel, в первоначальной настройке два моих контекста были, «web, en» в поле для ввода. Собственно проблема в том, что при создании ресурса в контексте EN в выпадающем списке только «ru» см. скриншот.

а должен же быть ещё один язык (EN). Не понимаю почему так происходит. Подскажите пожалуйста. Заранее благодарю.
Настройка контекста вот:


cat-art.ru/articles/multiyazyichnost-modx-revo — настраивал по этой инструкции.
Сергей Хлопов
03 октября 2018, 12:01
modx.pro
652
0

Почему не выполняется процесс resource/create в цикле ?

Здравствуйте, подскажите пожалуйста, не могу понять. Почему ради примера этот код не работает? Я тут пытаюсь создать товар в minishop программно, при это пропуская три итерации цикла. Вот с этим условием $i > 2, товар не создается, а если я это условие убираю, то товар создается. Собственно вопрос в том, почему товар не создается с условием $i > 2, заранее благодарю за ответ.
for($i = 0; $i < 5; $i++) {
if($i > 2) {
    $arrayPropertyProduct = array(
            "class_key" => "msProduct",
            "pagetitle" => "ТестТестТестТест",
            "parent" => 2115,
            "template" => 3,
            "show_in_tree" => 0,
            "vendor" => 4,
            "alias" => hash('md5',"Тест123".$i),
        );
        $response_copy = $modx->runProcessor('resource/create',$arrayPropertyProduct);
    }
}
Сергей Хлопов
12 августа 2018, 15:38
modx.pro
645
0

Как вызвать pdoPage если в параметрах указан пользовательский класс ?

Здравствуйте, подскажите пожалуйста, с помощью CMP Generator сгенерировал объекты пользовательских таблиц БД (их две таблицы). Потом получилось вызвать pdoPage из ресурса, и что бы он вытащил данные из одной пользовательской таблицы, сделал это таким образом:
В самом ресурсе вызываю pdoPage
[[!pdoPage?
        &class=`MainSeviceName`
        &tpl=`tpl.listServices`
        &element=`Getdb`
    ]]
В параметре &element находится сниппет Getdb, и вот его код:
<?php
    $path = MODX_CORE_PATH . 'components/pdotools/model/pdotools/';
    $pdoFetch = $modx->getService('pdofetch','pdoFetch', $path, $scriptProperties);
    $pdoFetch->setConfig($scriptProperties);
    return $pdoFetch->run();
И всё в порядке, все записи из таблицы получаю, но если тоже самое делать в отдельном файле php с подключенным API MODX, то никаких записей не получаю.

Собственно должно работать это так:
  1. Идёт Ajax запрос на сервер.
  2. Сервер должен вернуть записи из БД.
  3. И потом я эти записи вставляю в нужное место.
Вот он Ajax запрос:
$(document).ready(function() {
	$("#formServices").change(function() {
		var IDServices = $("#valServices").val();
		$.ajax({
			dataType: "HTML",
			type: "POST",
			url: "/assets/template/adm/db_main.php",
			data: {"ID_serv":IDServices},
			success: function(data) {
				alert(data);
			}
		});
	});
});
А вот файл php который должен вернуть записи из БД с помощью pdoPage
<?php
    /* include MODX_API BEGIN */
    define('MODX_API_MODE', true);
    require_once($_SERVER['DOCUMENT_ROOT'].'/index.php');
    $modx=new modX();
    $modx->initialize('web');
    /* include MODX_API END */
    $output = $modx->runSnippet('pdoPage',array(
    							'class' => 'MainSeviceName',
    							'tpl' => 'tpl.listServices',
    							'element' => 'Getdb'));
    return $output;
Но никаких записей из БД я таким образом не получаю.
Я просто думаю может этот файл php не знает про мой класс MainSeviceName, может его нужно тоже подключить. Но а тогда почему я могу записать в таблицу БД данные, таким вот образом.
$sheet = $modx->newObject('MainSeviceName');
$sheet->save();
После этого вызова в таблице появляется новая запись.
Подскажите пожалуйста что я тут делаю не так, почему вызывая pdoPage не возвращаются записи из БД, если я его вызываю из своего файла php.
Заранее благодарю за ответ.
Сергей Хлопов
19 июля 2018, 08:06
modx.pro
984
0

Почему не появляется кнопка в pdoPage ?

Здравствуйте, подскажите пожалуйста вызываю pdoPage таким вот образом:
[[!pdoPage?
        &limit=`8`
        &tpl=`tpl.msProducts.row2`
        &element=`msProducts`
        &parents=`0`
        &resources=`[[!mSearch2:default=`999999`?returnIds=`1`&limit=`0`]]`
        &sortby=`Data.vendor`
        &sortdir=`asc`
        &toPlaceholder=`ResultSearch`
        &includeThumbs=`medium`
        &pageNavVar=`pagNav`
        &ajaxMode=`button`
    ]]
Указываю же вот параметр &ajaxMode=`button`но кнопки нет, то есть должна быть пагинация с помощью кнопки, а выводятся цифры, default пагинация, подскажите пожалуйста что я делаю не так, заранее благодарю Вас за ответ.
Сергей Хлопов
05 июля 2018, 12:22
modx.pro
798
0

Как вызвать mFilter2 через runSnippet с помощью API MODX ?

Здравствуйте, подскажите пожалуйста, я вызываю mFilter2 через MODX API, ну и к тому же это всё работает через ajax. То есть вот как всё происходит:
Есть ajax запрос:
$.ajax({
				type: "POST",
				url: 'assets/template/php/action.php',
				dataType: 'html',
				data:{"objectID":IdElem}, //Тут передаю ID ресурса на сервер
				success:function(msg) {
					$(".SectionContent").empty();
					$(".SectionContent").append(msg);
				}
			});
А на сервере вот такой обработчик:
define('MODX_API_MODE', true);
require_once($_SERVER['DOCUMENT_ROOT'].'/index.php');
$modx=new modX();
$modx->initialize('web');
/* include MODX_API END */
$IDResureses = $_POST["objectID"];
$parametrArray = array(
		'suggestions' => '',
		'class' => 'msProduct',
		'element' => 'msProducts',
		'limit' => '8',
		'sort' => 'ms_vendor|Id:asc',
		'parents' => $IDResureses,
		'tplOuter' => 'mSearch2_blockElement2',
		'tpls' => 'tpl.msProducts.row2',
		'includeTVs' => 'fileDowl,Proiz',
		'includeThumbs' => 'medium',
		'filters' => 'ms|vendor:vendors',
		'tplFilter.outer.ms|vendor' => 'tpl.mFilter2.filter.outerMain',
		'tplFilter.row.ms|vendor' => 'tpl.mFilter2.filter.checkboxMain',
		'ajaxMode' => 'button',
		'CurrentID' => $IDResureses, //Это я добавил параметр в mFilter2 в него передаю ID ресурса который пришел из ajax
		);
$output = $modx->runSnippet('mFilter2My',$parametrArray); //И сделал копию mFilter2 только с именем mFilter2My
$modx->getParser()->processElementTags('', $output, false, false, '[[', ']]', array(), 10);
$modx->getParser()->processElementTags('', $output, true, true, '[[', ']]', array(), 10);
$modx->log(1, print_r($output, 1));
echo $output;
Ну добавил в mFilter2 только по сути одно условие вот оно:
if (!empty($CurrentID)) {$modx->setPlaceholder('AjaxId',$CurrentID);}
И потом вот после того как php выполнился, получаю вот такую вот разметку, это код чанка 'tplOuter' => 'mSearch2_blockElement2', но соответственно вместо плейсхолдеров и всего остального я получаю html соответствующий:
<div class="msearch2" id="mse2_mfilter">
    <div class="row" id="filterBlock">
        <div class="col-md-12 main-filter-Config">
            <ul class="nav nav-pills nav-justified" id="myTab" role="tablist">
              <li class="nav-item checkElemBefore">
                <a class="witdhElement nav-link active" title="Фильтр по производителю" id="fabr-tab" data-toggle="tab" href="#fabr" role="tab" aria-controls="fabr" aria-selected="true">Производитель <span class="count-check-checkElem1 disNon">(<span class="elemcheck currentCheck-checkElem1"></span> из <span class="elemcheck allCheckbox-checkElem1"></span>)</span></a>
              </li>
            </ul>
            <div class="main-line-default"></div>
            <form action="[[+AjaxId]]" method="post" id="mse2_filters">
                <div class="resultQuery tab-content" id="pills-tabContent">
                    [[+filters]]
                </div>
                [[+filters:isnot=``:then=`
				<button type="reset" class="restartBtn btn btn-default hidden">[[%mse2_reset]]</button>
				<button type="submit" class="btn btn-success pull-right hidden">[[%mse2_submit]]</button>
				<div class="clearfix"></div>
			    `]]
            </form>
        </div>
    </div>
    <div class="informationBlock"></div>
    <div class="row gridElementShop">
        <div class="col-md-12 Arraycollection">
            <div id="mse2_results" class="contentBlock row">
                [[+results]]
            </div>
            <div id="pdopage" class="mse2_pagination">
    			[[!+page.nav]]
    		</div>
        </div>
    </div>
</div>
Вся вот эта разметка возвращается с сервера и я с помощью Jquery вставляю полученный html в блок
$(".SectionContent").empty();
$(".SectionContent").append(msg);
Но вот проблема в том, что фильтры теперь не работают после этого. Подскажите пожалуйста как сделать так что бы когда мы вызываем mFilter2 через ajax, и получаем html с фильтрами, сами фильтры работали?
Просто вот кстати что я заметил, когда я выбираю какой либо фильтр, после того как получил html и вставил его на страницу с помощью ajax. Сам Ajax запрос от mFilter2 отправляется и соответственно ответ получаю см. скриншот «ajax запрос», но он не вставляется на страницу и вот пагинация тоже, у меня стоит параметр 'ajaxMode' => 'button', а в итоге получаются пагинация цифрами, а должна быть кнопкой. Ну и в итоге данная проблема только когда я используя ajax и API MODX-а для вызова mFilter2. Когда он просто вызывается в ресурсе таким вот образом [[!mFilter2… ]] всё в порядке.
Подскажите пожалуйста что тут можно сделать, заранее благодарю за внимание и ответ.
Сергей Хлопов
30 июня 2018, 09:35
modx.pro
1
1 257
0