Владимир Бабусенко

Владимир Бабусенко

С нами с 11 ноября 2014; Место в рейтинге пользователей: #204
Владимир Бабусенко
26 июля 2018, 22:23
0
в таблице modx_context добавь поле «name» varchar 255
Владимир Бабусенко
23 июля 2018, 15:55
0
Сергей, но ведь данное решение не спасет от взлома через галерею?
Владимир Бабусенко
15 июня 2018, 14:14
0
Вроде оказалось достаточным поменять в файле build.config.php константы с путями и url… на нужные.
Владимир Бабусенко
07 июня 2018, 16:41
0
Проверил при создании ресурса события не вызываются. Т.е. если следовать вашей логике при выполнении
$item = $modx->newObject('modResource',array(
    'parent' => 0,
    'pagetitle' => 'Название ресурса',
));
$item->save();
сработает событие OnDocFormSave? Не срабатывает, как и всегда.
Владимир Бабусенко
07 июня 2018, 16:13
0
Ну так я создаю через newObject, всегда говорилось, в том числе и здесь, что данный метод не вызывает системные события modx, в принципе всегда именно так и было. При создании ресурсов точно никакие события не вызывались. Хочется что бы вызывались, нужно использовать процессоры, либо вызывать события самому через invokeEvent. А тут, при создании пользователя, я сам не вызываю…
Владимир Бабусенко
03 мая 2018, 11:27
0
в скайп пиши...., посмотрим… или вконтакте
Владимир Бабусенко
03 мая 2018, 11:13
0
Нужная категория должна быть в переменной $code.
Владимир Бабусенко
03 мая 2018, 10:30
0
И.....?
$output = $modx->runSnippet('msProducts',array(
	'parent' => $code,
	'limit' => 0,
	....
	'tpl' => '@INLINE	<h2>"[[+pagetitle]]</h2>
					<p>[[+introtext]]</p>
					..........................'
));
echo $output;
Владимир Бабусенко
03 мая 2018, 10:13
0
А чем не устраивает msProducts?
Владимир Бабусенко
27 апреля 2018, 12:14
+1
В смысле? а что тут побеждать?
$action = (isset($_POST['submit']))? $_POST['submit'] : '';
switch($action) {
	case "createOrder":
		//создаем заказ
		break;
}

if(!empty($_GET['msorder'])){
	//Заказ сформирован, делаем что надо	
	$order = $modx->getObject('msOrder',array(
		'id' => $_GET['msorder'],
	));
}
Владимир Бабусенко
17 апреля 2018, 23:27
0
Можно еще масштаб в браузере изменить cntr "-" и не лезть в инспектор..))
Владимир Бабусенко
03 апреля 2018, 12:46
0
В форме регистрации

enctype="multipart/form-data" добавить

<div class="form-group">
            <label>Логотип</label>
            <div>
                <div id="image_preview"></div>
                <div id="selectImage">
                    <input type="file" name="photo" id="file" accept="image/jpeg,image/jpg,image/png"/>
                </div>
            </div>
        </div>
В сниппет регистрации добавляем
[[!Register?
    ......
    
    &preHooks = `photo.preHook`
    &postHooks = `photo.postHook`
    
]]
photo.preHook (только папки создай)
<?php
$output = true;
$fields = $hook->getValues();
/* User's photo */
if (!empty($fields['photo'])) {
    // valid extensions
    $extArray = array('jpg', 'jpeg', 'gif', 'png');
    // create temporary path for this form submission
    $uploadPath = 'assets/uploads/temp/';
    $targetPath = $hook->modx->config['base_path'] . $uploadPath;
    // get uploaded file names:
    $submittedFiles = array_keys($_FILES);
    // loop through files
    foreach ($submittedFiles as $sf) {
        // Get Filename and make sure its good.
        $filename = basename($_FILES[$sf]['name']);
        // Get file's extension
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        
        // case insensitive
        $ext = mb_strtolower($ext);
        
        // is the file name empty (no file uploaded)
        if ($filename != '') {
            // is this the right type of file?
            if (in_array($ext, $extArray)) {
                //create file called the user name
                $filename = mb_strtolower($filename);
                // full path to new file
                $uploadFilePath = $targetPath . $filename;
                // create directory to move file into if it doesn't exist
                @mkdir($targetPath, 0755, true);
                if (file_exists($uploadFilePath)) {
                    // Change the file permissions if allowed
                    chmod($uploadFilePath, 0755);
                    // remove the file
                    unlink($uploadFilePath);
                }
                // is the file moved to the proper folder successfully?
                if (move_uploaded_file($_FILES[$sf]['tmp_name'], $uploadFilePath)) {
                    $hook->setValue($sf, $uploadPath . $filename);
                    if (!chmod($uploadFilePath, 0644)) {
                        /* some debug function */
                    }
                } else {
                    
                    // File not uploaded
                    $errorMsg = 'There was a problem uploading the file.';
                    $hook->addError($sf, $errorMsg);
                    
                    // generate submission error
                    $output = false; 
                }
            } else {
                
                // File type not allowed
                $errorMsg = 'Type of file not allowed.';
                $hook->addError($sf, $errorMsg);
                
                // generate submission error
                $output = false;
            }
        } else {
            
            // if no file, don't give error, but just return blank
            $hook->setValue($sf, '');
        }
    }
}
return $output;

photo.postHook
<?php
/** @var modUser $user */
$user = & $fields['register.user'];
$userId = $user->get('id');
/** @var modUserProfile $profile  */
$profile = & $fields['register.profile'];
if (!empty($fields['photo'])) {
    $photo = array();
    $photo['temp'] = $fields['photo'];
    $photo['basename'] = basename($photo['temp']);
    /***********************************************************************
     * XXX: IMPORTANT XXX
     *
     * Create unique path here for this profile updating.
     * You can change this as you wish.
     * The $userId variable comes from above initiation.
     *
     ***********************************************************************/
    $photo['newdir'] = 'assets/uploads/profiles/' . $userId . '/';
    $photo['newfilepath'] = $photo['newdir'] . $photo['basename'];
    $photo['target'] = $hook->modx->config['base_path'] . $photo['temp'];
    $photo['moved'] = $hook->modx->config['base_path'] . $photo['newfilepath'];
    // make the user's private directory
    mkdir($photo['newdir'], 0755, true);
    $photoUpdated = false;
    // move the photo from the temporary path to the new one
    if (!rename($photo['target'], $photo['moved'])) {
        // if "rename" function fails, try "copy" instead.
        if (!copy($photo['target'], $photo['moved'])) {
            // just dump the log report to the MODX's error log,
            // because both "rename" and "copy" functions fail
            $hook->modx->log(modX::LOG_LEVEL_ERROR, __FILE__ . ' ');
            $hook->modx->log(modX::LOG_LEVEL_ERROR, __LINE__ . ': $userId ' . $userId);
            $hook->modx->log(modX::LOG_LEVEL_ERROR, __LINE__ . ': $photo ' . print_r($photo, 1));
        } else {
            // if copy succeeded, delete the old temporary picture
            unlink($photo['target']);
            $photoUpdated = true;
        }
    } else {
        $photoUpdated = true;
    }
    if ($photoUpdated) {
        /**
        * Теперь мы обновляем профиля
         * Переменная $ профиль приходит сверху посвящения.
         */
        $profile->set('photo', $photo['newfilepath']);
        $profile->save();
        /**
         * Yeah! xPDO rocks! Simply like that!
         */
    }
}
return TRUE;
js
//Превью изображения
    $(document).on('change', '#file', function(evt){

        $('#image_preview').empty();

        var files = evt.target.files;

        for (var i = 0, f; f = files[i]; i++) {
            // Only process image files.
            if (!f.type.match('image.*')) {
                continue;
            }
            var reader = new FileReader();

            reader.onload = (function (theFile) {
                return function (e) {
                    $('#image_preview').append('<img class="previewing img-thumbnail" src="'+e.target.result+'"  style="width:250px;"/>');
                };
            })(f);

            reader.readAsDataURL(f);
        }
    });
Владимир Бабусенко
21 февраля 2018, 12:34
0
К чему тут компонент. Заведи для шаблона карточки товара (Для категории, плохая идея) доп поле со списком единиц измерений (/м2||/шт.||/п.м. и т.д.). В товаре выставляется единица измерения. В чанке товара [[!+price]] [[%ms2_frontend_currency]][[*tv поле ед.измерения]]. Либо (правда не уверен что так можно, может знающие поправят), в словаре для параметра ms2_frontend_currency в значение дописать руб.[[*tv поле ед.измерения]].

ЗЫ: Для категории можно тоже, но я бы не стал так делать, т.к. нет уверенности что в одной категории не могут быть разные товары с разными единицами измерения. Сегодня заказчик может сказать одно, завтра другое. Поэтому все таки это характеристика непосредственно товара, а не категории, и назначать надо на товар.
Владимир Бабусенко
02 февраля 2018, 12:35
+3
<?php
$array1 = explode(",", $array1);
$array2 = explode(",", $array2);
$result = array_intersect($array1, $array2);

$modx->toPlaceholder('result',implode(",", $result));
Владимир Бабусенко
19 января 2018, 11:05
0
Пройдись по выбранным услугам и сгенерируй форму.
Владимир Бабусенко
19 января 2018, 11:00
0
да незачто)
Владимир Бабусенко
19 января 2018, 10:58
0
Все верно, это и есть твой ресурс фантом, можешь его удалить теперь через админку......)