Марат Марабар

Марат Марабар

С нами с 07 февраля 2014; Место в рейтинге пользователей: #35
Отправить деньги
Fi1osof
14 января 2017, 04:04
5
+4
Здесь важно учесть следующий момент: проиндексирован http-сайт уже или нет. Если нет, то можно смело сразу зарубать на https с настройкой редиректа. А если да, то такая процедура запросто может выбить сайт из индекса на месяц-два, а то и больше (что вряд ли кому-то понравится). Дело в том, что http — Это 80-ый порт, а https — 443. Для поисковиков это разные сайты (технически ведь на разных портах могут быть разные сайты и может быть разный контент). И получается, что новый сайт еще не проиндексирован, а новый (https) еще не индексированный. По этой причине надо делать сайт доступным и по http и по https. Но тут возникает еще один момент: Страницы в MODX кешируются и могут возникать случаи, когда на http-страницах все ссылки на https и наоборот. Если с https-ссылками http- страницах еще не особо страшно, то на https-страницах это может приводить к тому, что часть контента просто не будет подгружаться (браузер заблокирует соединения на http с https-страниц). Я в таких случаях на сайте прописываю такой плагин:
if($modx->context->key == 'mgr'){
    return;
}
 
switch($modx->event->name){
    
    case 'OnMODXInit':
    // case 'OnHandleRequest':
        
        if(!empty($_SERVER['SERVER_PORT']) AND $_SERVER['SERVER_PORT'] == '443'){
            
            $modx->setOption('server_protocol', 'https');
            
            $modx->setOption('site_url', 'https://' . $modx->getOption('http_host', null) . $modx->getOption('base_url', null));
            
            $cache_prefix = $modx->getOption('cache_prefix', null, '/') . '443/';
            $modx->setOption('cache_prefix', $cache_prefix);
        }
        
        break;
}
Суть его в том, чтобы кеш-префикс поменять для https-запросов.
Важно: на разных хостингах вместо $_SERVER['SERVER_PORT'] может быть другой параметр, надо смотреть индивидуально

Тогда сайт не будет потерян поисковиком и не вызовет выпода из индекса.
В robots.txt еще надо прописать жестко Host: site_domain.
После этого месяца через три (когда поисковики полностью перестроят индексы), можно уже будет настроить и редирект.
Володя
05 августа 2016, 22:35
21
+5
можно добавить так
создать плагин на pdoToolsOnFenomInit, в нем добавить модификатор detector
<?php
switch ($modx->event->name) {
    case 'pdoToolsOnFenomInit':
    if (!$fenom = $modx->getOption('fenom', $scriptProperties)) {
        return;
    }
    if (!$MobileDetect = $modx->getService('mobiledetect', 'MobileDetect', MODX_CORE_PATH . 'components/mobiledetect/')) {
	    return;
    }
    
    $key = $MobileDetect->config['force_browser_variable'];
    $device = !empty($_GET) && array_key_exists($key, $_GET)
		? $modx->stripTags($_GET[$key])
		: '';
	if (empty($device)) {
	    $device = $MobileDetect->getSettings();
    }
    if (empty($device)) {
        $detector = $MobileDetect->getDetector();
        $device = ($detector->isMobile() ? ($detector->isTablet() ? 'tablet' : 'mobile') : 'standard');
        $MobileDetect->saveSettings($device);
    }

    $fenom->addModifier("detector", function ($value) use ($device) {
        return $value == $device;
    });

    break;
}

и теперь в любом месте можно делать так
{if 'mobile'|detector}
mobile
{/if}

{if 'tablet'|detector}
tablet
{/if}

{if 'standard'|detector}
standard
{/if}
Максим Кузнецов
21 мая 2016, 00:14
3
+4
Можно решить стандартным jevix'ом примерно так:

<?php
	if ($modx->event->name == 'OnDocFormSave') {
		$template = $resource->get('template');
		
		if ($template != 0) {
			$id = $resource->get('id');

			//В наборе параметров отключены неугодные теги аля script, iframe и прочие
			$jevixParams = $modx->getObject('modPropertySet',array('name'=>'Ticket'));
			$jevixOptions = $jevixParams->getProperties();

			//content
			if (strlen($content = $resource->getContent()) > 0) {
				$jevixOptions['input'] = $content;
				$content = $modx->runSnippet('jevix', $jevixOptions);
				$resource->setContent($content);
				
			}
			
			switch ($template) {
				//Шаблон с доп. тв, которое нужно обработать
				case 7:
					if (strlen($custom_tv = $resource->getTVValue('custom_tv')) > 0) {
						$jevixOptions['input'] = $custom_tv;
						$custom_tv = $modx->runSnippet('jevix', $jevixOptions);
						
						$resource->setTVValue('custom_tv', $custom_tv);
					}
					
				break;
				
			}
		}
	
		
		$resource->save();
	}