
Наверняка вы часто видели на сайтах подтверждение перехода по внешней ссылке. Вот я и подумал, а почему бы не написать такой плагинчик и для 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