Управление ссылками на сателлитах
Если у вас есть собственная небольшая (это ключевое слово, потому что для больших есть специализорованные платные решения) сетка сателлитов, с помощью которой вы двигаете свои проекты или проекты заказчиков, то неизбежно встает вопрос об управлении ссылками на них. Этот небольшой скрипт поможет автоматизировать процесс:
<? 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 (
“А” => “А”, “а” => “а”,
“Б” => “Б”, “б” => “б”,
“В” => “В”, “в” => “в”,
“Г” => “Г”, “г” => “г”,
“Д” => “Д”, “д” => “д”,
“Е” => “Е”, “е” => “е”,
“Ё” => “Ё”, “ё” => “ё”,
“Ж” => “Ж”, “ж” => “ж”,
“З” => “З”, “з” => “з”,
“И” => “И”, “и” => “и”,
“Й” => “Й”, “й” => “й”,
“К” => “К”, “к” => “к”,
“Л” => “Л”, “л” => “л”,
“М” => “М”, “м” => “м”,
“Н” => “Н”, “н” => “н”,
“О” => “О”, “о” => “о”,
“П” => “П”, “п” => “п”,
“Р” => “Р”, “р” => “р”,
“С” => “С”, “с” => “с”,
“Т” => “Т”, “т” => “т”,
“У” => “У”, “у” => “у”,
“Ф” => “Ф”, “ф” => “ф”,
“Х” => “Х”, “х” => “х”,
“Ц” => “Ц”, “ц” => “ц”,
“Ч” => “Ч”, “ч” => “ч”,
“Ш” => “Ш”, “ш” => “ш”,
“Щ” => “Щ”, “щ” => “щ”,
“Ъ” => “Ъ”, “ъ” => “ъ”,
“Ы” => “Ы”, “ы” => “ы”,
“Ь” => “Ь”, “ь” => “ь”,
“Э” => “Э”, “э” => “э”,
“Ю” => “Ю”, “ю” => “ю”,
“Я” => “Я”, “я” => “я”
);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 поток бредоспама. Трэкбэк адрес
Оставьте камент