Андрей

Андрей

С нами с 28 февраля 2013; Место в рейтинге пользователей: #139
UDAV
18 апреля 2019, 11:22
3
+6
Обычный translit тоже так может!
Настройка friendly_alias_restrict_chars делаем alphanumeric и получаем тоже самое, без лишнего мусора.
akkmeno
31 июля 2017, 04:55
1
0
Возникла такая же проблема при переносе на хостинг timeweb. Докопался до того, что неправильно формируются переменные сессии при логине. Задал их вручную в файле manager/index.php
Нижнюю часть, начиная с $modx->initialize('mgr') заменил на:
if (isset($_POST['username']) && isset($_POST['password']) && $_POST['username']=='логин_админа' && $_POST['password']=='здесь_пароль'){
    $modx->initialize('mgr');
    $_SESSION['modx.user.0.resourceGroups']['mgr'][0]=1;
    $_SESSION['modx.user.0.attributes']['mgr']['modAccessContext']['web'][0]['principal']=0;
    $_SESSION['modx.user.0.attributes']['mgr']['modAccessContext']['web'][0]['authority']=0;
    $_SESSION['modx.user.0.attributes']['mgr']['modAccessContext']['web'][0]['policy']['load']=1;
    $_SESSION['modx.user.0.attributes']['mgr']['modAccessResourceGroup'][1][0]['principal']=0;
    $_SESSION['modx.user.0.attributes']['mgr']['modAccessResourceGroup'][1][0]['authority']=0;
    $_SESSION['modx.user.0.attributes']['mgr']['modAccessResourceGroup'][1][0]['policy']['list']=1;
    $_SESSION['modx.user.0.attributes']['mgr']['modAccessResourceGroup'][1][0]['policy']['load']=1;
    $_SESSION['modx.user.0.attributes']['mgr']['modAccessResourceGroup'][1][0]['policy']['remove']=1;
    $_SESSION['modx.user.0.attributes']['mgr']['modAccessResourceGroup'][1][0]['policy']['save']=1;
    $_SESSION['modx.user.0.attributes']['mgr']['modAccessResourceGroup'][1][0]['policy']['view']=1;
    $_SESSION['modx.user.contextTokens']['mgr']=1;
    $_SESSION['modx.user.contextTokens']['web']=1;
    $_SESSION['modx.mgr.user.token']= $modx->getObject('modUser',$id_admin)->generateToken('mgr');
    $_SESSION['modx.web.user.token']= $modx->getObject('modUser',$id_admin)->generateToken('web');
    $_SESSION['modx.web.user.config']=$_SESSION['modx.mgr.user.config'];
    $_SESSION['modx.mgr.session.cookie.lifetime']=0;
    unset($_SESSION['modx.{mgr}.user.config']);
    unset($_SESSION['modx.user.config']);
    unset($_POST);
    echo "<body onload='window.location.href=`адрес_сайта`'>";    
    @session_write_close();
    exit();
}
else {
    $modx->initialize('mgr');
    
    $modx->getRequest();
    $modx->getParser();
    if (!MODX_API_MODE) {
        $modx->request->handleRequest();
    }
    @session_write_close();
    exit();
}
Для сравнения какими должны быть переменные сессии использовал тот же сайт на другом хостинге где все работало. Обнаружил, что на timeweb создается переменная $_SESSION['modx.{mgr}.user.config'] вместо $_SESSION['modx.mgr.user.config'], а также $_SESSION['modx.user.config'], которой на нормально работающем сайте вообще нет.
Переменные $_SESSION['modx.user.contextTokens'] и $_SESSION['modx.web.user.token'] вообще не создаются.
Дальше копать не стал почему они не создаются, так как надо, чтобы админка работала в понедельник.
Однако проблему желательно решить нормальным способом, а не таким педальным как я выше привел))
Виктор
28 марта 2016, 12:13
2
0
Вот так заработало:

$address = $msOrder->getOne('Address');
$address->set('comment', 'новый текст комментария');
Всем спасибо за помощь!

P.S. Немного подправил название тикета.
Abu
Abu
23 декабря 2015, 19:57
4
+1
Плагин ищет фотки в подключенных соцсетях первую что найдет записывает в профиль.

<?php
$eventName = $modx->event->name;

switch($eventName) {
    
    case 'OnHandleRequest':
        
	if ($modx->user->isAuthenticated($modx->context->key)) {
        $user = $modx->getUser();
        $profile = $user->getOne('Profile');
        
            if ($profile->get('photo') == '') {
                
                $gravemail = md5( strtolower( trim( $profile->get('email') ) ) );
                $gravsrc = "http://www.gravatar.com/avatar/".$gravemail;
                $gravcheck = "http://www.gravatar.com/avatar/".$gravemail."?d=404";
                $response = get_headers($gravcheck);
                
                $services = $user->getMany('Services');
            
            	if ($services && $response[0] == "HTTP/1.0 404 Not Found") {
            	    foreach ($services as $service) {
            	            if ($service->get('photourl')) {
            	                $profile->set('photo', $service->get('photourl'));
                	            $profile->save();
                	            break 1;
            	            }
                	}
            	}
                
            }

	}

        break;
}

return;
Максим Кузнецов
02 августа 2015, 18:42
7
+7
Необходимо создать кастомный класс доставки:

1) Идем в core/components/minishop2/custom/delivery/ и создаем здесь свой пхп файл (допустим, mscustomdeliveryhandler.class.php) со следующим содержимым:

<?php

//Важно: при изменении названия файла, вот в этом месте также нужно изменить класс
class mscustomdeliveryhandler extends msDeliveryHandler{

	public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {
        $cart = $this->ms2->cart->status();
        
	//условие начисление доставки
        if ($cart['total_cost'] < 5000) {
            $add_price = $delivery->get('price');
            if (preg_match('/%$/', $add_price)) {
                $add_price = str_replace('%', '', $add_price);
                $add_price = $cost / 100 * $add_price;
            }
            $cost += $add_price;
        }
        
        return $cost;
    }

}

2) Идем в настройки магазина -> Варианты доставки.
Создаем новый вариант «Доставка» (или редактируем исходный), после чего заполняем в «дополнительную стоимость» требуемое значение (300 рублей), в Класс-обработчик пишем название созданного файла — mscustomdeliveryhandler, заполняем доступные способы оплаты и ставим галочку напротив «включен».
Evgeny Epifanov
23 сентября 2014, 22:05
8
+1
Чанк tpl.msEmail.new.manager
[[+address.receiver]] — Покупатель
[[+address.phone]] — Телефон
[[+user.email]] — Почта
[[+address.index]] — Индекс
[[+address.region]] — Область
[[+address.city]] — Город
[[+address.street]] — Улица
[[+address.building]] — Дом
[[+address.room]] — Квартира
[[+delivery.name]] — Способ доставки
[[+payment.name]] — Тип оплаты
[[+address.comment]] — Комментрарий

Это то, что я знаю. А вообще где-то это уже обсуждалось.