Ответы пользователя по тегу MODX
  • Как разграничить два сайта на MODX?

    codegolic
    @codegolic
    Если есть поиск по содержимому файлов, попробуйте пискать старые пути, например с адресом того сайта. Ну и подключение к БД смотрите.
    Ответ написан
    Комментировать
  • Как получить адрес страницы товара в сниппете shopkeeper?

    codegolic
    @codegolic Автор вопроса
    Сделал так, ссылка заработала
    Правкой хука shk_fihook
    spoiler
    <?php
    /**
     * FormIt hook for Shopkeeper 3.x
     */
    
    //ini_set('display_errors',1);
    //error_reporting(E_ALL);
    
    $output = false;
    
    if(!defined('SHOPKEEPER_PATH')){
        define('SHOPKEEPER_PATH', MODX_CORE_PATH."components/shopkeeper3/");
    }
    
    //Определяем параметры сниппета Shopkeeper
    $sys_property_sets = $modx->getOption( 'shk3.property_sets', $modx->config, 'default' );
    $sys_property_sets = explode( ',', $sys_property_sets );
    $propertySetName = trim( current( $sys_property_sets ) );
    
    $snippet = $modx->getObject('modSnippet',array('name'=>'Shopkeeper3'));
    $properties = $snippet->getProperties();
    if( $propertySetName != 'default' && $modx->getCount( 'modPropertySet', array( 'name' => $propertySetName ) ) > 0 ){
        $propSet = $modx->getObject( 'modPropertySet', array( 'name' => $propertySetName ) );
        $propSetProperties = $propSet->getProperties();
        if(is_array($propSetProperties)) $properties = array_merge($properties,$propSetProperties);
    }
    
    $lang = $modx->getOption( 'lang', $properties, 'ru' );
    $modx->getService( 'lexicon', 'modLexicon' );
    $modx->lexicon->load( $lang . ':shopkeeper3:default' );
    
    if( !empty( $_SESSION['shk_order'] ) ){
        
        require_once SHOPKEEPER_PATH . "model/shopkeeper.class.php";
        $shopCart = new Shopkeeper( $modx, $properties );
        
        $modx->addPackage( 'shopkeeper3', SHOPKEEPER_PATH . 'model/' );
        
        //shopkeeper settings
        $contacts_fields = array();
        $response = $modx->runProcessor('getsettings',
            array( 'settings' => array('contacts_fields') ),
            array( 'processors_path' => $modx->getOption( 'core_path' ) . 'components/shopkeeper3/processors/mgr/' )
        );
        if ($response->isError()) {
            echo $response->getMessage();
        }
        if($result = $response->getResponse()){
            
            $temp_arr = !empty( $result['object']['contacts_fields'] ) ? $result['object']['contacts_fields'] : array();
            if( !empty( $temp_arr ) ){
                
                foreach( $temp_arr as $opt ){
                    
                    $contacts_fields[$opt['name']] = $opt;
                    
                }
                
            }
            
        }
        
        $userId = $modx->getLoginUserID( $modx->context->key );
        if( !$userId ) $userId = 0;
        
        //Контактные данные
        $contacts = array();
        $allFormFields = $hook->getValues();
        foreach( $allFormFields as $key => $val ){
            
            if( in_array( $key, array_keys( $contacts_fields ) ) ){
                
                $temp_arr = array(
                    'name' => $contacts_fields[$key]['name'],
                    'value' => $val,
                    'label' => $contacts_fields[$key]['label']
                );
                
                array_push( $contacts, $temp_arr );
                
            }
            
        }
        
        $contacts = json_encode( $contacts );
        
        $emailField = $modx->getOption( 'fiarToField', $hook->config, 'email' );
        $phoneField = $modx->getOption( 'phoneField', $hook->config, 'phone' );
        $deliveryField = $modx->getOption( 'deliveryField', $hook->config, 'shk_delivery' );
        $paymentField = $modx->getOption( 'paymentField', $hook->config, 'payment' );
        
        //Доставка
        $delivery_price = !empty( $shopCart->delivery['price'] ) ? $shopCart->delivery['price'] : 0;
        $delivery_name = !empty( $shopCart->delivery['label'] ) ? $shopCart->delivery['label'] : '';
        if( !$delivery_name ){
    	$delivery_name = !empty( $allFormFields[$deliveryField] ) ? $allFormFields[$deliveryField] : '';
        }
        
        //Сохраняем данные заказа
        $order = $modx->newObject('shk_order');
        $insert_data = array(
            'contacts' => $contacts,
            'options' => '',
            'price' => Shopkeeper::$price_total,
            'currency' => $shopCart->config['currency'],
            'date' => strftime('%Y-%m-%d %H:%M:%S'),
            'sentdate' => strftime('%Y-%m-%d %H:%M:%S'),
            'note' => '',
            'email' => isset( $allFormFields[$emailField] ) ? $allFormFields[$emailField] : '',
            'delivery' => $delivery_name,
            'delivery_price' => $delivery_price,
            'payment' => isset( $allFormFields[$paymentField] ) ? $allFormFields[$paymentField] : '',
            'tracking_num' => '',
            'phone' => isset( $allFormFields[$phoneField] ) ? $allFormFields[$phoneField] : '',
            'status' => $modx->getOption( 'shk3.first_status', null, '1' )
        );
        if( $userId ){
            $insert_data['userid'] = $userId;
        }
        $order->fromArray($insert_data);
        $saved = $order->save();
        
        //Сохраняем товары заказа
        if( $saved ){
    
            $purchasesData = $shopCart->getProductsData( true );
    
            foreach( $shopCart->data as $key => $p_data ){
    
                $options = !empty( $p_data['options'] ) ? json_encode( $p_data['options'] ) : '';
                $fields_data = !empty( $purchasesData[ $key ] ) ? $purchasesData[ $key ] : array();
                $fields_data['url'] = !empty( $p_data['url'] ) ? $p_data['url'] : '';
                unset( $fields_data['id'] );
                $fields_data_str = json_encode( $fields_data );
    
                $insert_data = array(
                    'p_id' => $p_data['id'],
                    'order_id' => $order->id,
                    'name' => $p_data['name'],
                    'price' => $p_data['price'],
                    'count' => $p_data['count'],
                    'class_name' => $p_data['className'],
                    'package_name' => $p_data['packageName'],
                    'data' => $fields_data_str,
                    'options' => $options
                );
    
                $purchase = $modx->newObject('shk_purchases');
                $purchase->fromArray( $insert_data );
                $purchase->save();
    
            }
    
            $shopCart->setOrderDataSession( $order->toArray() );
    
        }
        
        $modx->invokeEvent( 'OnSHKChangeStatus', array( 'order_ids' => array( $order->id ), 'status' => $order->status ) );
        
        $orderOutputData = $shopCart->getOrderData( $order->id );
        
        
        
        
        
        
        //vk
    
    $token='йййййййййййййййй';
    $user_id='ййййййййййййй';
    $peer_id='йййййййййййййй';
    $text=("Заказ из интернет магазина" . "\n " .
    
    "ФИО: " . $_POST['fullname'] . "\n " .
    "Телефон: " . $_POST['phone'] . "\n " .
    "Адрес: " . $_POST['address'] . "\n " .
    "Email: " . $_POST['email'] . "\n " .
    
    "Цена: " . $insert_data['price'] . "\n " .
    "Общая цена: " . $insert_data['count'] * $insert_data['price'] . "\n " .
    
    
    
    
    "Наименование: " . $insert_data['name'] . "\n " .
    "Количество: " . $insert_data['count'] . "\n " .
    
    "Доставка: " . $delivery_name . "\n " .
    "Ссылка на товар: " . $p_data['url'] . "\n " .
    
    $message
    
    ) ; 
    
    $title="Запрос звонка со страницы " . $_SERVER['HTTP_REFERER'];
    
    
    define('CALLBACK_API_CONFIRMATION_TOKEN', 'df45c14a'); // Строка, которую должен вернуть сервер 
    define('VK_API_ACCESS_TOKEN', 'йййййййййййййййййй'); // Ключ доступа сообщества 
    
    define('CALLBACK_API_EVENT_CONFIRMATION', 'confirmation'); // Тип события о подтверждении сервера 
    define('CALLBACK_API_EVENT_MESSAGE_NEW', 'message_new'); // Тип события о новом сообщении 
    define('VK_API_ENDPOINT', 'https://api.vk.com/method/'); // Адрес обращения к API 
    define('VK_API_VERSION', '5.89'); // Используемая версия API 
    
    //Функция для вызова произвольного метода API 
    function _vkApi_call($method, $params = array()) { 
      $params['access_token'] = VK_API_ACCESS_TOKEN; 
      $params['v'] = VK_API_VERSION; 
      $url = VK_API_ENDPOINT.$method.'?'.http_build_query($params); 
      $curl = curl_init($url); 
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
      $json = curl_exec($curl); 
      curl_close($curl); 
      $responses = json_decode($json, true); 
      return $responses['response']; 
      curl_close( $curl );
    } 
    
    //Функция для вызова messages.send 
    function vkApi_messagesSend($peer_id, $message, $attachments = array()) { 
      return _vkApi_call('messages.send', array( 
        'peer_id' => $peer_id, 
        'message' => $message, 
        'attachment' => implode(',', $attachments) 
      )); 
    } 
    
    vkApi_messagesSend(2000000001, $text);
    //
        
        
        
        
        
        //OnSHKsaveOrder
        $evtOut = $modx->invokeEvent('OnSHKsaveOrder',array('order_id' => $order->get('id')));
        if(is_array($evtOut)) $orderOutputData .= implode('',$evtOut);
        
        $hook->setValues(array(
            'orderID' => $order->get('id'),
            'orderDate' => $order->get('date'),
            'orderPrice' => $order->get('price'),
            'orderCurrency' => $shopCart->config['currency'],
            'orderOutputData' => $orderOutputData
        ));
        
        $shopCart->request_empty( false );
        
        $output = true;
        
    }else{
        
        $hook->addError( 'error_message', $modx->lexicon('shk.order_empty') );
        $output = false;
        
    }
    Ответ написан
    Комментировать
  • Как в modx revo убрать параметр index.php?q при редиректе с http на https?

    codegolic
    @codegolic
    Переносил сам на https

    Вот это у меня в htaccess
    RewriteEngine On 
    RewriteBase / 
     
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www\.
    RewriteRule (.*) https://сайт/$1 [L,R=301]
     
     
    # The Friendly URLs part 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
     
    php_flag register_globals Off 
    php_flag magic_quotes_gpc Off 
    php_value magic_quotes_gpc Off 
     
     
    <IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine on 
    RewriteCond %{HTTP_HOST} ^(www\.)?сайт\.ru$ [NC] 
    RewriteCond %{HTTP:X-Forwarded-Proto} !=https 
    RewriteRule ^(.*)$ https://сайт.ru/$1 [R=301,L] 
    </IfModule> 
     
    RewriteEngine on 
    RewriteCond %{HTTP_REFERER} !^$ 
    RewriteCond %{HTTP_REFERER} !^https://(www\.)?сайт\.ru/.*$ [NC] 
    RewriteRule .+\.(gif|jpg|png)$ - [F]


    В системных настройках: Тип сервера: https
    В дружественных урл включить friendly_urls и другие параметры если нужно
    В типах содержимого (если не надо .html на конце) убрать расширение у html
    После всего этого желательно сбросить кэш сайта
    Ответ написан
    Комментировать