Плагин подтверждения перехода по внешней ссылке для ModX Evolution

Плагин подтверждения перехода по внешней ссылке для ModX Evolution  - Liber.pro - личный сайт Алексея Либера Картинка  1

Наверняка вы часто видели на сайтах подтверждение перехода по внешней ссылке. Вот я и подумал, а почему бы не написать такой плагинчик и для ModX? Ведь каждая такая ссылка это будет новая страничка для вашего сайта! Что не может не сказываться на СЕО) Вот, кстати, ссылочка на Яндекс. =) От слов, к делу.

Создаем плагин, называем как хотим, вставляем в него нижеприведенный код и ставим галочку "OnParseDocument". В качестве единственного параметра идет id документа, на котором будет происходить редирект. И еще нюанс: плагин подразумевает что у вас на страницах подключен jQuery.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Plugin Redirect for external link 0.1
// author: Alexey Liber (http://liber.pro)
// Params - id document whitdh Redirect Snippet
// event - OnParseDocument
 
$idSnippet = 37; // Input your id
 
global $modx;
$e = & $modx->Event;
if (($e->name == "OnParseDocument") and ($modx->documentIdentifier!=$idSnippet))
{
	$url = $modx->makeUrl($idSnippet);
	$html = '<script>
		$(document).ready(function(){		
$("a").each(function(){
var src = $(this).attr("href");
if (src) { 
if( ~src.indexOf("http") ) {
var href="'.$url.'?link="+src;
$(this).attr({"href": href,"target":"_blank"});
}
}
});
});
 
	</script>';
$modx->regClientHTMLBlock($html);	
}

Далее создаем сниппет, тоже называем его как хотим, вставляем нижеприведенный код в него и вызов на странице которую мы указали выше:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
if (isset($_GET[link]))
{
$time = (!isset($time)) ? "10" : $time;
$nor = (!isset($nor)) ? "1" : "0";	
 
if ($nor) header('Refresh: '.$time.';'.$_GET[link]);
$img = 'http://mini.s-shot.ru/1024x768/400/jpeg/?'.$_GET[link];
 
	echo '<img src="'.$img.'" style="float:left;"><div class="redirect__message" style="float: right; width: 275px;">
            <div class="redirect__message_title">Переход по внешней ссылке</div>
            <p>И этим действием вы покидаете сайт. Нажмите ниже на линк, если хотите перейти. Администрация сайта ответственности за это не несет.</p>
 
            <div class="redirect__url">
                <!--noindex-->
                <a id="UR_URL" href="'.$_GET[link].'" title="Переход на внешнюю ссылку '.$_GET[link].'" rel="nofollow">'.$_GET[link].'</a>
                <!--/noindex-->
            </div>';
 
                    if ($nor) echo  '<p id="UR_TimeMsg">Вы будете автоматически перенаправлены на запрашиваемую вами страницу через <b>'.$time.'</b> секунд.</p>';
 
           echo '<p>
                <a href="/">А может вернемся?..</a>
            </p>
 
 
 
        </div>';
 
		if ($nor) echo "<script>
    $(document).ready(function ($) {
        var oUrlLink = $('#UR_URL');
        oUrlLink.attr('href', oUrlLink.attr('href') + window.location.hash);
        oUrlLink.html(oUrlLink.html() + window.location.hash);
        if ((UR_oCounter = $('#UR_TimeMsg b')).length == 1) {
            var UR_iTimeProc = setInterval(function () {
                ((iVal = parseInt(UR_oCounter.html())) > 0 ? UR_oCounter.html(--iVal) : clearInterval(UR_iTimeProc));
            }, 1000);
        }
    });
</script>
 
		";
}

Здесь используются две переменных: $nor - ставим единицу, если не хотим автоматического редиректа (по умолчанию редиректим), и $time - количество секунд с момента попадания на страницу, до редиректа (по умолчанию 10)

Вот собственно и все) Ну и если кому-то нужно, то можно еще и мои стили использовать (которые где-то сам стырил=))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.redirect__message {
	margin-left: 40px;
	padding-left: 40px;
	border-left: solid 3px #2ab0db;
	}
.redirect__message_title {
	margin-bottom: 10px;
	font-size: 21px;
	font-weight: bold;
	}
.redirect__message p {
	line-height: 24px;
	}
 
.redirect__url {
	margin-bottom: 10px;
	}

Уникальность данного текста проверена через TEXT.RU

Оставить комментарий