miniSWL – własny system wymiany linków
Jednym z głównych narzędzi przydatnym w pracy przy pozycjonowaniu stron jest aplikacja, która pomaga zarządzać wyświetlanymi linkami na stronach zaplecza (są to strony zbudowane w celu umieszczenia na nich odnośników do pozycjonowanych przez nas serwisów). W poniższym wpisie zaprezentuję najłatwiejsze rozwiązanie, jakie można zastosować, gdy ktoś potrzebuje właśnie takiego systemu (w żargonie SEO nazywamy go systemem wymiany linków). Sposób, który przedstawię jest bardzo prosty, jednak koncepcja tu zaprezentowana może zostać rozwinięta i zmodyfikowana w dowolny sposób (ja nad swoim SWL pracuję już kilka lat i nie ma on zbyt wiele wspólnego z tym zaprezentowanym poniżej – jest on zbyt prosty i zbyt ograniczony). Mam jednak nadzieję, że choć jednej osobie ta “prymitywna” wersja się przyda ![]()
Zanim przejdziemy do meritum, to pragnę jeszcze raz podkreślić, iż wersja zamieszczona poniżej, to jedynie prezentacja, jak projektowane są takie systemy i w jaki sposób mogę one działać. Proszę na podstawie jej nie wysuwać pochopnych wniosków, jeżeli chodzi o moją wiedzę programistyczną
Nasz miniSWL (tak będziemy go nazywać) będzie oparty o bazę danych MySQL. Będzie ona zawierać odnośniki, które chcemy wyświetlać na naszych serwisach zapleczowych. Na stronie zapleczowej będziemy umieszczać krótki skrypt, który będzie wyświetlał losowo kilka linków. Linki raz dziennie będą pobierane z naszej, wspomnianej już wcześniej bazy i zapisywane w pliku tekstowym.
Baza danych
Będą nam potrzebne przede wszystkim dwa pola, w których będziemy przechowywać:
- adres odnośnika
- tekst odnośnika
Możemy oczywiście użyć jeszcze kilku pól, jak priorytet, status, itp itd… Całość zależy od ostatecznej koncepcji, jak nasz SWL ma działać. Przykładowa tabela w bazie danych:
| id_key | key_anchor | key_www |
| 1 | SEO Blog | http://www.entuzjasta.com |
Wiemy zatem, jak powinna wyglądać nasza baza danych. Panel administracyjny do zarządzania takimi linkami oczywiście będzie przydatny, gdyż dodawanie ich przez PhpMyAdmin będzie zadaniem dość utrudnionym, jednak ten wątek pozostawiam już Wam. Moim zdaniem – nie miejsce ani czas na to tutaj
Pobieranie danych z bazy
Pobierane danych będzie podzielone na dwa etapy (oba wykonywane w tym samym czasie, oba zależne od siebie). Za pierwszy z nich będzie odpowiedzialna funkcja umieszczona na stronie zapleczowej, która będzie łączyć się za pomocą CURL’a z serwerem, gdzie jest nasza baza danych z linkami, będzie pobierała dane, by ostatecznie zapisać je do pliku.
<?php //pobranie daty z pliku (format daty: Ymd) preg_match('/<date>([0-9]{8})<\/date>/isU',file_get_contents('links.txt'),$date_in_file); if(isset($date_in_file[1])) $last_update_date=$date_in_file[1]; else $last_update_date='00000000'; //jeżeli data się różni od dzisiejszej, to pobierz nowe linki if(date("Ymd")!=$last_update_date) { $links=''; //za pomocą CURL łączymy się z serwerem, na którym jest nasza baza danych //skrypt get_links.php wyświetla nasze linki z bazy $curl=curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://nasz.serwer.pl/get_links.php'); curl_setopt($curl, CURLOPT_USERAGENT, "miniSWL/1.0"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_TIMEOUT, 20); $return_value=curl_exec($curl); if(!empty($return_value)) { $curl_info=curl_getinfo($curl); if(!empty($curl_info['http_code']) && $curl_info['http_code']=='200' && $return_value!=1) $links=$return_value; } curl_close($curl); //koniec połączenia CURL, linki powinny zostać przypisane do zmiennej $links //jeżeli zmienna ma długość większą niż 0 znaków zapisujemy linki do pliku, wraz z aktualną datą if(strlen($links)>0) { if($txt_file=fopen('links.txt','w+')) { fwrite($txt_file,'<date>'.date("Ymd").'</date>'."\n".$links); fclose($txt_file); } } } ?>
Za drugą fazę będzie odpowiadać funkcja znajdująca się po stronie serwera, gdzie umieszczona jest baza danych. Funkcja oczekuje na zgłoszenia i jeżeli takie mają miejsce, zwraca odpowiednie dane.
<?php //inicjujemy połączenie z bazą danych $db=mysql_connect('localhost','root',''); mysql_select_db('baza_miniswl'); $links=''; //pobieramy linki z bazy. wybieramy jedynie 100 linków, losowych $links_from_db=mysql_query('SELECT * FROM miniswl ORDER BY RAND() LIMIT 100'); if(mysql_num_rows($links_from_db)>0) { while($link=mysql_fetch_object($links_from_db)) { //tworzymy linki - przechowujemy je w odpowidni sposób, //aby późniejszy odczyt z pliku nie sprawiał trudności $links.='<link><link_anchor>'.$link->key_anchor.'</link_anchor><link_www>'.$link->key_www.'</link_www></link>'; } } //wyświetlamy linki echo $links; mysql_close($db); ?>
Wyświetlanie linków
Ostatni moduł ma za zadanie wyświetlić losowe linki na naszej stronie.
<?php //liczba losowych linków, które chcemy wyświetlić $links_count=5; //pobieramy plik z linkami $links_in_file=file_get_contents('links.txt'); //parsujemy pobrany plik preg_match_all('/<link>(.+)<\/link>/isU',$links_in_file,$links_parse,PREG_SET_ORDER); if(count($links_parse)>0) { //losuejmy tablicę z linkami shuffle($links_parse); foreach($links_parse as $link_key=>$link_value) { //sprawdzamy ile linków maksymalnie już wylosowaliśmy if($link_key==$links_count) break; //pobieramy wartości anchor i url preg_match('/<link_anchor>([^<]+)<\/link_anchor><link_www>([^<]+)<\/link_www>/isU',$link_value[1],$link_value_out); //wyświetlamy linki echo ' <a href="'.$link_value_out[2].'">'.$link_value_out[1].'</a> '; } } ?>
Oczywiście aby wszystko zadziałało, należy w odpowiedni sposób połączyć to ze stroną zaplecza (zaincludować odpowiednio pliki, podłączyć przedstawione powyżej funkcje), jednak to tak czy tak pozostawiam Wam. Myślę, że nawet z minimalną znajomością PHP z resztą już sobie poradzicie. Tak samo jeżeli chodzi o utworzenie bazy danych ![]()
Jeżeli są jakieś błędy, to dawajcie znać. Opisy, co wykonują poszczególne funkcje zamieściłem w “komentarzach PHP”. Jakby jednak było coś niejasnego, piszcie w komentarzach poniżej.










Niezłe
trzeba będzie spróbować za jakiś czas sklecić coś takiego