Сюда обычно чего-то пишут. Но меня ломает...

Управление ссылками на сателлитах

Если у вас есть собственная небольшая (это ключевое слово, потому что для больших есть специализорованные платные решения) сетка сателлитов, с помощью которой вы двигаете свои проекты или проекты заказчиков, то неизбежно встает вопрос об управлении ссылками на них. Этот небольшой скрипт поможет автоматизировать процесс:

<? function showl ($filename) {
if (file_exists($_SERVER['DOCUMENT_ROOT'] . ‘/linkz/’ . $filename)) {
$fp = file($_SERVER['DOCUMENT_ROOT'] . ‘/linkz/’ . $filename);
$sz=count ($fp);
for ($i=0; $i < $sz; $i++) {
$k = substr ($fp[$i], 0, strpos($fp[$i], “;”));
$l = “http://” . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if ($k == $l ) {
echo  substr ($fp[$i], strpos($fp[$i], “;”)+1, 800);

}
}
}
return;
}
?>

Скрипт кладется в папку linkz документ рута сайта.

Теперь в те места шаблона, где планируется вывод ссылок, вставляется какой-то такой код:

include_once (    $_SERVER['DOCUMENT_ROOT'] . “/linkz/index.php”); echo showl(”filename.txt”);

filename.txt задает имя файла, в котором хранятся ссылки для данного конкретного блока. то есть для футера можно использовать footer.txt , для сайдбара (в вордпрессе например) - bar.txt и далее в этом роде.

Далее в папке  linkz нужно создать соответствующие файлы ссылок - footer.txt, bar.txt и т.п.

Формат файлов - [урл, где показывается ссылка];[текст ссылки (html)]

Например:

http://www.yellowsticker.info/; Это <a href=”http://www.google.com”>полезная</a> ссылка

http://www.yellowsticker.info/about/; Это <a href=”http://www.ya.ru”>бесполезная</a> ссылка

В данном примере на странице http://www.yellowsticker.info/ будет выведено:

Это полезная ссылка

а на странице http://www.yellowsticker.info/about/:

Это бесполезная ссылка

Теперь вопрос - где взять список страниц сайта. Мне кажется наиболее оптимально спарсить с гугла простейшим парсером, например таким:

<?
function curl_connect($curlOptions,$ch)
{
sleep(rand()%3*2+2);
curl_setopt_array($ch, $curlOptions);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)”); // Прикинемся каким-нибудь популярным браузером.
ob_start();
curl_exec($ch);
$content = ob_get_contents();
curl_close($ch);
ob_end_clean();
return $content;
}

function getit($key_word)
{
global $from_str,$max_str,$filename,$linki;
srand(time());
$cur_str=$from_str;
$found=false;
$keyword_enc = urlencode($key_word);
$cookie=”";
$total=1;
$counter=0;
$fp = fopen($filename, “a+”);

while(($cur_str<=$max_str) && ($total>0))
{
$content=”";
$kkk=($cur_str-1)*100;
$linki=”http://www.google.com/search?q=$keyword_enc&sa=N&num=100&start=$kkk”;
$ch = curl_init($linki);

$curlOptions = array(CURLOPT_HEADER => 0,
CURLOPT_NOBODY => 0,
CURLOPT_VERBOSE => 1,
CURLOPT_RETURNTRANSFER => 0,
CURLOPT_FOLLOWLOCATION => 0,
CURLOPT_POST => 0,
CURLOPT_COOKIE => $cookie);

$content = curl_connect($curlOptions,$ch);
//echo $content;
if ($content!=”")
{
$cutfrom=’<h3 class=r><a href=”‘;
$cutto=’”‘;
$offset=0;
$substrr=1;
$cur_match=0;

while (true):
$ifrom=strpos($content, $cutfrom, $offset)+strlen($cutfrom);
if ($ifrom<$offset) break;
$ilen=strpos($content, $cutto, $ifrom)-$ifrom;
$offset=$ifrom+$ilen+10;
$substrr=substr($content, $ifrom, $ilen) ;
fwrite($fp, $substrr.”;n”);
$cur_match++;
$counter++;
$total++;
endwhile;
}
$cur_str++;
}
$from_str=$cur_str;
$max_str=$cur_str+4;
return $counter;
}
//———————
global $from_str,$max_str, $filename, $linki;
$from_str=$_POST['from'];
$max_str=$_POST['to'];
$filename=$_POST['file'];
$req=$_POST['keyword'];

if ($_POST['from']<>”"){
$nums=getit($req);
echo “Спарсено $nums значений <a href=’$linki’>пруфлинк</a>), поехали дальше:”;
}
else
{
if ($max_str==”") {$max_str=”1″;}
if ($from_str==”") {$from_str=”1″;}
if ($_POST['file']==”") {$_POST['file']=”google.htm”;}
echo “Введите необходимые данные:”;
}

?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”ru” lang=”ru”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1251″ />
<title>Парсер выдачи Google</title>
</head>
<body>
<?php print $str; ?>
<form action=”g.php” method=”post”>
<p>
<strong>Запрос:</strong>
<input name=”keyword” type=”text” value=’<?php print $req; ?>’ />
<strong>От:</strong>
<input name=”from” type=”text” value=”<?php print $from_str; ?>” />
<strong>До:</strong>
<input name=”to” type=”text” value=”<?php print $max_str; ?>” />
<strong>Файл:</strong>
<input name=”file” type=”text” value=”<?php print $_POST['file']; ?>” />
<input type=”submit” />
</p>
</form>
</body>
</html>

Кто совсем не в теме, парсер надо залить на сервер и назвать g.php. При обращении указказывать запрос вида site:www.mysite.com. Результаты забрать в google.htm (если вы не определили иного при запросе) и вставить в соответствующий текстовой файл. После ; надо повставлять текст ссылков. Эксел во многих случаях поможет автоматизировать процесс. Впрочем, можно и ручками.

При использовании конструкции с вордпрессом или другими цмс, работающими в UTF-8 вы можете столкнуться с проблемами того, что текст русских ссылок надо писать в UTF-8,  а это совсем неудобно делать. Тогда можно воспользоваться немного модифицированным скриптом, конвертящим ваши ссылки из  вин-1251:

<? function showl ($filename) {
if (file_exists($_SERVER['DOCUMENT_ROOT'] . ‘/linkz/’ . $filename)) {
$fp = file($_SERVER['DOCUMENT_ROOT'] . ‘/linkz/’ . $filename);
$sz=count ($fp);
for ($i=0; $i < $sz; $i++) {
$k = substr ($fp[$i], 0, strpos($fp[$i], “;”));
$l = “http://” . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if ($k == $l ) {
echo  unicon (substr ($fp[$i], strpos($fp[$i], “;”)+1, 800));

}
}
}
return;
}

function unicon($str, $to_uni = true) {
$cp = Array (
“А” => “&#x410;”, “а” => “&#x430;”,
“Б” => “&#x411;”, “б” => “&#x431;”,
“В” => “&#x412;”, “в” => “&#x432;”,
“Г” => “&#x413;”, “г” => “&#x433;”,
“Д” => “&#x414;”, “д” => “&#x434;”,
“Е” => “&#x415;”, “е” => “&#x435;”,
“Ё” => “&#x401;”, “ё” => “&#x451;”,
“Ж” => “&#x416;”, “ж” => “&#x436;”,
“З” => “&#x417;”, “з” => “&#x437;”,
“И” => “&#x418;”, “и” => “&#x438;”,
“Й” => “&#x419;”, “й” => “&#x439;”,
“К” => “&#x41A;”, “к” => “&#x43A;”,
“Л” => “&#x41B;”, “л” => “&#x43B;”,
“М” => “&#x41C;”, “м” => “&#x43C;”,
“Н” => “&#x41D;”, “н” => “&#x43D;”,
“О” => “&#x41E;”, “о” => “&#x43E;”,
“П” => “&#x41F;”, “п” => “&#x43F;”,
“Р” => “&#x420;”, “р” => “&#x440;”,
“С” => “&#x421;”, “с” => “&#x441;”,
“Т” => “&#x422;”, “т” => “&#x442;”,
“У” => “&#x423;”, “у” => “&#x443;”,
“Ф” => “&#x424;”, “ф” => “&#x444;”,
“Х” => “&#x425;”, “х” => “&#x445;”,
“Ц” => “&#x426;”, “ц” => “&#x446;”,
“Ч” => “&#x427;”, “ч” => “&#x447;”,
“Ш” => “&#x428;”, “ш” => “&#x448;”,
“Щ” => “&#x429;”, “щ” => “&#x449;”,
“Ъ” => “&#x42A;”, “ъ” => “&#x44A;”,
“Ы” => “&#x42B;”, “ы” => “&#x44B;”,
“Ь” => “&#x42C;”, “ь” => “&#x44C;”,
“Э” => “&#x42D;”, “э” => “&#x44D;”,
“Ю” => “&#x42E;”, “ю” => “&#x44E;”,
“Я” => “&#x42F;”, “я” => “&#x44F;”
);

if ($to_uni) {
$str = strtr($str, $cp);
} else {
foreach ($cp as $c) {
$cpp[$c] = array_search($c, $cp);
}
$str = strtr($str, $cpp);
}

return $str;
}
?>

Вот как то так…

Материалы по теме

Нет каментов к статье “Управление ссылками на сателлитах”. Оставьте камент »

Каментов нема.

RSS поток бредоспама. Трэкбэк адрес

Оставьте камент




Политика комментирования:

Как вы можете заметить, тут нет поля "сайт", бесполезно оставлять бессмысленные каменты ради ссылок.
Однако ссылки в теле комментариев, как, например вот эта, приветствуются и открыты для индексации.
Поэтому комментарии проходят ручную модерацию. Адекватные комментарии обычно апрувятся.