Вопросы

создание документа программно не msproduct обычный ресурс

Всем привет.

Опытные разработчики на modx revo нетолько shopов подскажите пожалуйста

как создать документ программно обычный resource

нашёл примеры в инете создаётся с pagetitle всё ок

но при повтороном создании создаётся заново

тоесть как бы простой отзыв из личного кабинет

простая форма, shop нравится всё ок submit

создаётся ресурс программно от usera c pagetitle от usera

ресурс pagetitle с username отзыв 1

ресурс pagetitle с username отзыв 2

ресурс pagetitle с username отзыв 3

ресурс pagetitle с username отзыв 4

ресурс pagetitle с username отзыв 5

как реализовать проверку чтобы ресурсы постоянно несоздавались а был один ресурс и постоянно обновлялся,
несоздавая новые

создаётся ресур (доэтого проверяется есть ли данный ресур и несоздаётся с новым id )

[[!FormIt?
&hooks=`formit2file,formit2resource`
&template=``]]
</div>


snippet

formit2resource

<?php
$doc = $modx->getObject('modResource',array('id'=>$hook->getValue('username')));


if (empty($doc)){
    $doc = $modx->newObject('modResource');
    $doc->set('createdby', $modx->user->get('id'));
}


else{
    $doc->set('editedby', $modx->user->get('id'));
}


 
$allFormFields = $hook->getValues();
foreach ($allFormFields as $field=>$value)
{
 
   if ($field !== 'spam' && $field !== 'resource_id'){
         $doc->set($field, $value);
    }
}

$alias = $doc->cleanAlias($fields['pagetitle']);
if($modx->getCount(modResource, array('alias'=>$alias))!= 0) {
$count = 1;
$newAlias = $alias;
while($modx->getCount(modResource, array('alias'=>$newAlias))!= 0) {
$newAlias = $alias;
$newAlias .= '-' . $count;
$count++;
}
$alias = $newAlias;
}
$doc->set('alias',$alias);

$doc->set('template', $template);
$doc->set('published', 0);
$doc->set('hidemenu', 1);

$doc->save();
 
foreach ($allFormFields as $field=>$value)
{
    if (!empty($value) && $tv = $modx->getObject('modTemplateVar', array ('name'=>$field)))
    {
        /* handles checkboxes & multiple selects elements */
        if (is_array($value)) {
            $featureInsert = array();
            while (list($featureValue, $featureItem) = each($value)) {
                $featureInsert[count($featureInsert)] = $featureItem;
            }
            $value = implode('||',$featureInsert);
        }  
        $tv->setValue($doc->get('id'), $value);
        $tv->save();
    }
}

$modx->cacheManager->refresh();
 
return true;

chunk form

сделал так

<input class="field" type="text" name="pagetitle" 
value="[[+fi.pagetitle]]отзыв [[*createdon:strtotime:date=`%c`]] 
от пользователя [[!+modx.user.id:userinfo=`username`]]" />


буду очень признателен кто поможет дополнить проверку

Если нужен в помошь человек по созданию интернет магазинов, с удовольствием поучавствую с лояльной занятостью.
В прогрраммной части несилён (создание кастомных сниппетов сложная кастомная фильтрация и тд), пишите в личку если нежун в помошь человек и есть надобность
(сроки поджимают, устаём наполянть своим тимом, просто сам делаю нужна помошь неуспеваю отдать shop заказчику).
Кирилл
21 мая 2019, 16:00
modx.pro
994
0

(РЕШЕНО) Проблема с соединением через SSL

Неожиданно возникла проблема с соединением через SSL у заказчика. У меня сайт доступен, все прекрасно. Проверил по ping-admin.ru/index.sema на некоторых серверах (в том числе Москва, центр-1) есть такое сообщение:

«Проблема с соединением через SSL. Скорее всего на сервере отключены ряд шифров для SSL, из-за чего некоторые клиенты не смогут подключиться. Обращение производилось к IP...»

По http сайт прекрасно открывается.

Кто-нибудь сталкивался? Как это вылечить? Или это какое-то локальные проблемы провайдеров?

UPD: перевыпустил сертификат Let's Encrypt — все стало ок!
Семен Красиков
21 мая 2019, 15:09
modx.pro
3 047
0

Пустое поле в фильтре YandexMaps


Подскажите, почему слева пусто?
Вывожу вот так:
[[!yandexMaps?
                    &tvCoords=`coords`
                    &zoom=`10`
                    ¢erCoords=`59.945648, 30.315868`
                    &checkZoomRange=`0`
                    &fieldForBalloonContent=`pagetitle`
                    &markerPresetFieldText=`pagetitle`
                    &showMoreLink=`true`
                    &showMoreLinkTpl=`mapBalloon`
                    &styleMapBlock=`width:100%; height:60vh;`
                    &styleFiltersBlock=`display:none;`
            		&objectsTypesJSON=`[
                		{
                			"Buildings": {
                				"parent":"2",
                				"preset":"islands"
                        	}
                        }
                	]`
                ]]
Денис
21 мая 2019, 11:48
modx.pro
821
0

[РЕШЕНО] $modx->newQuery получить значение TV зная id документа

Добрый вечер. По некоторым причинам нет возможности использовать конструкцию $modx->getObject, но существует еще $modx->newQuery
Как через данный запрос получить значение TV зная id документа?
Спасибо за ответы!

UPD
В моем случае решение выглядит так

<?php
switch ($modx->event->name) {
    case 'msOnGetProductPrice':
    	$values = & $modx->event->returnedValues;
		if (isset($values['price'])) {
			$price = $values['price'];
		}
		$parent = $product->get('parent');
		
        $q = $modx->newQuery('modTemplateVar');
        $q->leftJoin('modTemplateVarResource', 'modTemplateVarResource', 'modTemplateVarResource.tmplvarid = modTemplateVar.id');
        $q->where(array('modTemplateVar.name' => 'day', 'modTemplateVarResource.contentid' => $parent));
        $q->select('modTemplateVarResource.value');

        if ($q->prepare() AND $q->stmt->execute()) {        
            $sale_day = (string)$modx->getValue($q->stmt);
            if (date("N") == $sale_day) {
                $q = $modx->newQuery('modTemplateVar');
                $q->leftJoin('modTemplateVarResource', 'modTemplateVarResource', 'modTemplateVarResource.tmplvarid = modTemplateVar.id');
                $q->where(array('modTemplateVar.name' => 'percent', 'modTemplateVarResource.contentid' => $parent));
                $q->select('modTemplateVarResource.value');
                
                if ($q->prepare() AND $q->stmt->execute()) {
                    $sale_percent = (string)$modx->getValue($q->stmt);
                    $sale_percent = (100 - $sale_percent) / 100;
                    $price = preg_replace('/\s+/', '', $price);
                    $new_price = round($price * $sale_percent);
                    $values['price'] = $new_price;
                }
            }
        }
        break;
}
MrKarandash
20 мая 2019, 19:51
modx.pro
907
0

Не приходят уведомления о заявках на почту

Резко перестали приходить уведомления о заявках на почту. Приходят только в 1С. ModX Evolution 1.1
В чем проблема?
Данила
20 мая 2019, 17:22
modx.pro
688
0

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

Всем привет.
Для проекта надо создать несколько кастомных пдо-объектов. С самими объектами проблем нет, а вот с их связями есть.
Как мне привязать свой объект к пользователю, чтоб потом можно было делать вот так:
$modx->user->getOne('myObject1')
и так:
$modx->user->getMany('myObject2')
В схеме объекта я пишу
<aggregate alias="User" class="modUser" local="user_id" foreign="id" cardinality="one" owner="foreign" />
Достаточно ли этого, или надо каким-то образом модифицировать объект modUser, чтоб у него появилась симметричная связь, только composite? Если надо, то как?
Антон
20 мая 2019, 13:19
modx.pro
991
0

Появляются ссылки в поиске непонятные.

Всем привет, в поиске появляются ссылки типа такого (прикладываю скрин), сайт как и большинство был взломан в июне, но его чистили, но до сих пор появляются ссылки в поиске такие, таких директорий в сайте нет, может кто сталкивался с такой проблемой?
Дмитрий
20 мая 2019, 11:34
modx.pro
1 205
0

Проверка file со стороны сервера перед отправкой письма

Добрый день, не могу ни как разобраться почему у меня не до конца срабатывает условие. Вроде как делаю все по документации formit
создал валидатор «checkfile»
<?php
$output = true;
$maxFileSize = 50 * 1024 * 1024;
$fileName = $_FILES[$key]['name'];
$fileSize = $_FILES[$key]['size'];

if ($fileName != '') {
  if($fileSize > $maxFileSize) {
    $validator->addError($key,'Размер файла превышает 50 Мб.');
    $output = false;
  }
}
return $output;
вызываю форму
[[!AjaxForm?
                &snippet=`FormIt`
                &form=`tpl.AjaxForm.example`
                &hooks=`email`
                &customValidators=`checkfile`
                &emailSubject=`Сообщение с сайта [[++site_name]]`
                &emailTo=`[[++emailsender]]`
                &validate=`name:required,email:required,phone:required,files:checkfile`
                &validationErrorMessage=`В форме содержатся ошибки!`
                &successMessage=`Сообщение успешно отправлено`
            ]]
и вот чанк самой формы
<form action="" class="ajax_form af_example" enctype="multipart/form-data">
	<div class="left">
	    <div class="group">
    		<input type="text" name="name" value="[[+fi.name]]" placeholder="Имя">
    		<span class="error_name">[[+fi.error.name]]</span>
		</div>
		<div class="group">
    		<input type="phone" name="phone" value="[[+fi.phone]]" placeholder="Телефон">
    		<span class="error_name">[[+fi.error.phone]]</span>
		</div>
		<div class="group">
    		<input type="email" name="email" value="[[+fi.email]]" placeholder="Электронная почта">
    		<span class="error_name">[[+fi.error.email]]</span>
    	</div>
		<input type="file" id="file" name="files" value="[[+fi.files]]">
		<label for="file" class="file">
			<p>Прикрепить файл</p>
			<p>не более 50 мб</p>
		</label>
		<p class="error_files">[[+fi.error.files]]</p>
	</div>
	<div class="right">
		<textarea name="text" placeholder="Сообщение"></textarea>
		<div class="range-slide">
			<p class="title">Ваш бюджет</p>
			<div id="slider" data-min="35000" data-max="400000"></div>
            <div class="numbers">
                <span id="input-with-keypress-2"></span>
                <p>–</p>
                <span id="input-with-keypress-3"></span>
                <input type="text" id="input-with-keypress-0" name="price_from" value="1000000">
                <input type="text" id="input-with-keypress-1" name="price_to">
            </div>
        </div>
		<button type="submit">Отправить</button>
		<p>Нажимая на кнопку «Связаться», я даю согласие на обработку персональных данных, как описано в «<a href="#">Соглашении об использовании сайта</a>»</p>
	</div>
	    [[+fi.success:is=`1`:then=`
    <div class="alert alert-success">[[+fi.successMessage]]</div>
    `]]
    [[+fi.validation_error:is=`1`:then=`
    <div class="alert alert-danger">[[+fi.validation_error_message]]</div>
    `]]
</form>
при отправки формы с файлом превышающим 50мб поля становиться не активными и больше ни чего не происходит, сообщение об ошибке не выскакивает. Подскажите пожалуйста что я сделал не так)
Александр
20 мая 2019, 10:38
modx.pro
1 051
0

Прошу подсказать как правильно импортировать товары через встроенный скрипт minishop2

Я не часто пользуюсь CMS но недавно решил выбрать ModX в качестве платформы для интернет магазина. Сам магазин сверстал и html и прочее на ModX натянул. Сейчас у меня есть csv файл с несколькими тысячами строк данных о товарах: заголовок(title), цена(price), картинки(от 1 на товар до 6)(img) и описание(description). Я знаю что есть скрипт Василия Наумкина, знаю что им много кто пользуется, но я не понимаю как происходит процесс от начала до конца.
Можете пожалуйста сказать, как происходит весь процесс импорта.
P.S. Не кидайтесь тапками pls
Марк
19 мая 2019, 14:23
modx.pro
1
2 502
+1