FuNi – zmyślny CMS na plikach tekstowych

Opublikowany dnia Luty, 27 o godzinie 13:09

FuNi jest darmowym CMSem opartym na plikach tekstowych. Inspiracją do napisania tego prostego systemu zarządzania treścią był PikoCMS mendaxa. Od razu przyznam się, że nigdy nie używałem tego produktu. Po prostu szukałem narzędzia, które pomogłoby mi w prosty sposób zarządzać artykułami na stronach bez konieczności żmudnej konfiguracji bazy danych.

PikoCMS wyglądał ok, ale zupełnie nie pasował do mojej koncepcji, nie generował dodatkowych podstron dla tagów, a zarządzanie nim wydawało się nieczytelne ze względu na „wypluwanie” i edycję wszystkich danych na raz. Był prosty, chciałem czegoś bardziej zmyślnego. Przeglądałem tematy na PiO dotyczące prostych CMSów. Większość z nich wcale nie była prosta, a prawie każdy korzystał z bazy danych. Oczywiście trudno się nie zgodzić z tym, że MySQL daje o niebo większe możliwości, ale ja potrzebowałem czegoś względnie małego i prostego z możliwością szybkiej instalacji.

Największy nacisk w skrypcie został położony na sposób przechowywania danych, tak by mógł być jak najbardziej wydajny, przy zachowaniu nieduplikowania tych samych danych w kilku plikach. Wybrane rozwiązanie przypomina nieco sposób przechowywania informacji w bazach danych.

Szybki dostęp:

  1. Wstęp
  2. Demo
  3. Download
  4. Instalacja
  5. Obsługa
  6. Szablony
  7. FAQ

Co charakteryzuje FuNi:

  • wydajność; mimo, że korzysta wyłącznie z plików tekstowych, to wybrane rozwiązanie sposobu przechowywania danych jest przemyślane
  • instalacja ogranicza się do wgrania plików na serwer
  • proste, 5-minutowe dostosowywanie szablonów; całość zamyka się do edycji 1 pliku
  • wbudowany, intuicyjny edytor HTML; możliwość kopiowania artykułów bezpośrednio z Worda
  • wgrywanie zdjęć do galerii; nie musimy używać połączenia FTP, możemy to zrobić przez panel
  • obsługa tagów, generujących dodatkowe podstrony
  • zarządzanie artykułami; intuicyjne, proste i szybkie
  • import artykułów z plików tekstowych; wystarczy przygotować pliki o odpowiednim formacie i wgrać
  • pingowanie; przy dodawaniu lub imporcie arykułów skrypt wysyła pingi
  • mapa strony; linki do wszystkich artykułów
  • opcje ustawień

W skrypcie nie mogło zabraknąć oczywiście implementacji przyjaznych adresów URL:)

Warunkiem użytkowania FuNi jest pozostawienie linka prowadzącego do strony autora. Opcją dla osób, które nie chcą „ujawniać” swoich stron jest wykupienie możliwości jego niewyświetlania. W przypadku uiszczenia kwoty 59zł netto (71,98zł brutto) możemy usunąć informację o skrypcie na każdej stronie, na której zostało zainstalowane oprogramowanie i której właścicielem jest ten sam Licencjonobiorca. Tym samym możliwość taka dotyczy wszystkich domen właściciela licencji.

Pieniążki w kwocie 71,98zł należy wpłacać na konto:

KEO
ul. Bursztynowa 41/32
20-576 Lublin
NIP: 7123104545
MultiBank: 49 1140 2017 0000 4502 0755 3011

Tytułem: Oprogramowanie FuNi – usunięcie linka ze stopki

Po dokonaniu wpłaty proszę koniecznie wysłać maila na adres ps{osiołek}iqq.pl. W treści proszę zawrzeć:

  • dane do faktury (dane firmy lub osoby prywatnej, w tym nr NIP)
  • dane osoby lub firmy, której przyznana zostanie możliwość usunięcia linka ze stopki

Demo:

Wygląd zewnętrzny:
http://funi.ghosti.pl

Panel administracyjny:
http://funi.ghosti.pl/ext/
login: deMo
hasło: deMo1

Zrzuty ekranu:

Wygląd zewnętrzny

Panel administracyjny

Download

Pobierając skrypt lub wykorzystując go w jakikolwiek sposób jednocześnie oświadczasz, że zapoznałeś/aś się z warunkami licencji, akceptujesz je i zgadzasz się na warunki rekompensaty w przypadku naruszenia warunków użytkowania skryptu FuNi.

Pobierz FuNi CMS
315 Pobrań
Pobierz Funi Szablony1
206 Pobrań
FuNi v.1.0 Beta2 Szablony 1

Instalacja

  1. Edycja pliku conf.php, w tym miejscu ustawiamy login i hasło do panelu administratora oraz nazwy odpowiednich katalogów.
  2. Wgranie wszystkich plików na serwer.
  3. Ustawienie chmodów wg poniższego schematu

Dla plików:

_heart.txt 666
_settings.txt 666
_tags.txt 666

Zależnie od ustawień serwera zaleca się ustawienie niższych chmodów, tj. dla plików 644 lub 664. Do testowania poprawności działania skryptu z wybranymi chmodami najlepiej używać zakładki ustawienia. Po kliknięciu przycisku Zmień nowe dane zostaną zapisane lub wystąpi błąd (zależnie od ustawień chmodów dla pliku _settings.txt).

Dla katalogów:

katalog_galerii 777
katalog_artykułów 777

Domyślnymi katalogami są: dla artykułów – katalog funi, dla galerii katalog – zdjecia. Zależnie od ustawień serwera zaleca się ustawienie niższych chmodów, tj. dla katalogów 755 lub 775. Do testowania ich poprawności najlepiej skorzystać z opcji wgrywania zdjęć na serwer.

Obsługa

Dostęp do panelu administracyjnego uzyskujemy dopisując do adresu ext/. Jest to domyślny adres zarządzania skryptem.

Zakładka dodaj

  • dodawanie i publikowanie nowych artykułów
  • wgrywanie zdjęć do galerii (aby wgrać klikamy na „Wgraj do galerii” – prawy górny róg, wybieramy plik i wgrywamy go, w rezultacie dostajemy adres przesłanego zdjęcia, teraz pozostaje skorzystać z edytora HTML, klikamy Obraz i wklepujemy do pola URL adres zdjęcia)

Zakładka edytuj

  • edycja i usuwanie artykułów

Zakładka import

  • import artykułów z plików tekstowych

Warunkiem są odpowiednio przygotowane pliki tekstowe.

Pierwsza jego linijka to tytuł nowego artykułu (jako adres URL może być brany tutuł artykułu lub nazwa importowanego pliku, zależnie od ustawień -> patrz zakładka ustawienia).

Druga linijka to oddzielone przecinkiem tagi przypisane do artykułu.

Kolejne dotyczą już samej treści artykułu. Stosowanie tagów HTML jest dozwolone.

W pierwszym etapie wgrywamy pliki na serwer, dopiero potem możemy wybierać, które pliki chcemy zaimportować.

Zakładka ustawienia

  • edycja ustawień skryptu, w tym m.in. włączanie/wyłączanie pingowania, ustawienia dla importu, ustawienia dla tagów, meta-tagi strony, struktury adresów URL, panel boczny.

Dostosowywanie szablonów

Dostosowanie szablonu polega na stworzeniu pliku template.php z wykorzystaniem funkcji udostępnianych przez skrypt. Do wersji, którą pobierasz dołączony jest tak przygotowany plik.

Dostępne funkcje:

generateLegal()

bezwzględnie wymagana funkcja, drukuje informacje o skrypcie; jej umieszczenie jest warunkiem licencji użytkowania bezpłatnego

generateMenu($begin,$end,$show_map,$limit,$chars,$random,$trim)

funkcja wyświetla linki do artykułów, 7-parametrowa, kolejno
$begin – kod wyświetlany przed każdym artykułem, np. ‘<li>’, domyślnie ”
$end – kod wyświetlany po każdym artykule, np. ‘</li>’, domyślnie ”
$show_map – czy pokazywać link do mapy, np. false (true – tak, false – nie), domyślnie false
$limit – ograniczenie wyświetlania ilości linków (0 oznacza wyświetl wszystkie), domyślnie 0
$chars – ograniczenie ilości znaków dla tytułów artykułów (0 oznacza wyświetl cały tytuł), domyślnie 0
$random – czy mają być losowe (true – tak, false – nie), domyślnie false
$trim – czy obciąć końcowy znak $end (true – tak, false – nie), domyślnie false

Przykładowe wywołania w szablonie:

<?php generateMenu(‘<li>’,'</li>’,true) ?>
Jako wynik otrzymamy linki do wszystkich artykułów w kolejności od najstarszego i na końcu także link do mapy strony, wszystkie ozdobione znacznikami li.

<?php generateMenu(‘<li>’,'</li>’,false,3,15) ?>
Spowoduje to wyświetlenie 3 linków prowadzących do najstarszych artykułów, każdy tytuł zostanie ograniczony do 15 znaków.

<?php generateMenu(‘<li>’,'</li>’,true,0,0,true) ?>
W efekcie zostaną wyświetlone linki do wszystkich artykułów, jednak w losowej kolejności, każdy tytuł zostanie pokazany w całości. Dodatkowo wyświetlony zostanie także link do mapy.

<?php generateMenu(”,’ | ‘,true,1,25,false,true) ?>
Linki zostaną wyświetlone w ilości 1, będzie to link do najstarszego artykułu, jeśli jego anchor będzie dłuższy niż 25 znaków, to zostanie obecięty do tyluż znaków. Linki będą oddzielone od siebie wyrażeniem ” | „. Dodatkowo wyświetlony zostanie także link do mapy. Po ostatnim linku wyrażenie ” | ” nie wystąpi.

generateTags($begin,$end,$before,$after,$random,$limit,$trim)

funkcja wyświetla linki do tagów, 7-parametrowa, kolejno
$begin – kod wyświetlany przed całym blokiem tagów np. ‘<h4>Tagi</h4><ul>’, domyślnie ”
$end – kod wyświetlany po całym bloku z tagami, np. ‘</ul>’, domyślnie ”
$before – kod wyświetlany przed każdym tagiem, np. ‘<li>’, domyślnie ”
$after – kod wyświetlany po każdym tagu, np. ‘</li>’, domyślnie ”
$random – czy mają być losowe (true – tak, false – nie), domyślnie false; false oznacza wyświetl te przypisane do artykułu
$limit – ograniczenie wyświetlania ilości tagów (0 oznacza wyświetl wszystkie), domyślnie 0
$trim – czy obciąć końcowy znak $after, domyślnie false

Przykładowe wywołania w szablonie:

<?php generateTags(”,”,”,’ ‘,true,6) ?>
Spowoduje to wyświetlenie 6 losowych tagów.

<?php generateTags(‘<h4>Tagi</h4><ul>’,'</ul>’,'<li>’,'</li>’) ?>
W efekcie wyświetlony zostanie blok tagów powiązanych z artykułem.

<?php generateTags(”,”,”,’, ‘,true,20,true) ?>
Jako wynik zobaczymy linki do 20 losowo wybranych tagów, oddzielonych przecinkiem. Po ostatnim tagu przecinek nie zostanie wyświetlony, o czym decyduje ostatni parametr funkcji.

generateMeta($css)

wyświetla meta-tagi strony, w tym tytuł strony
$css – nazwa pliku lub ścieżka do arkusza stylów CSS, np. ‘default.css’, domyślnie ”; wartość pusta oznacza, że link do arkusza stylów w ogóle nie będzie wyświetlany

generateTopic()

wyświetla temat strony, konfigurowany w zakładce ustawienia

generateTitle()

wyświetla tytuł strony; jest to temat artykułu, dla tagu inny

generateAbout()

wyświetla informacje o stronie (zakładka ustawienia); jeśli wartość pusta to wyświetlany jest adres strony

generateAddress()

wyświetla adres strony

generateContent()

wyświetla treść artykułu

generateSidebar()

wyświetla kod panelu bocznego, konfigurowanego w zakładce ustawienia

FAQ

1. Dlaczego zamiast strony głównej dostaję komunikat:

„404 Nie znaleziono
Strona nie istnieje. Przyczyna moze byc brak artykulu z nazwa pliku _.”?

Aby poprawnie wyświetlana była strona główna wymagane jest, by jeden z artykułów miał jako nazwę pliku podany znak _. Skorzystaj z zakładki edycja i zmień nazwę jednego z artykułów na _ lub dodaj nowy artykuł wpisując jako nazwę pliku znak _.

2. Dlaczego strona główna nie jest pierwsza w menu generowanym funkcją generateMenu()?

Na kolelność wyświetlania pozycji menu wpływ ma data stworzenia artykułu. Aby tak było należy utworzyć artykuł z nazwą pliku _ jako pierwszy, można to zrobić dodając nowy artykuł lub importując go.

3. Co zrobić, aby w adresach tagów podobnie jak dla artykułów widniał na końcu znak /?

Za wyświetlanie bloku tagów odpowiada funkcja generateTags() , której implementacja zawarta jest w pliku router.php. Dla osiągnięcia zamierzonego celu od wersji 1.0 Beta2 wzwyż wystarczy dokonać odpowiednich zmian w panelu admina w zakładce ustawienia.

4. Jak uzyskać własny adres do podstrony tagu?

Dla uproszczenia załóżmy, że chcemy uzyskać adres o strukturze /tag/nazwa-tagu/.

Ważne! Od wersji 1.0 Beta2 możemy dowolnie definiować strukturę adresów URL dla artykułów, tagów oraz mapy strony. Jeśli chcemy wykonać takie zmiany to wystarczy przejść do zakładki ustawienia w panelu administracyjnym, nie ma potrzeby jakichkolwiek zmian w plikach. W miejsce nazwy tagu należy wpisać {TNAME}, a w miejsce nazwy artykuły {ANAME}.

Dla uzyskania zamierzonego efektu w polu Struktura URL dla tagów należy wpisać wartość /tag/{TNAME}/.

5.Dlaczego nie działa import w funi? Tak jakby nie widział plików. Czy wgram na serwer normalnie, czy za pośrednictwem panelu, caly czas wyświetla „brak plików do importu”.

Po pierwsze pliki do importu muszą mieć rozszerzenie .txt, po drugie ich nazwy mogą się składać tylko z liter (bez typowo polskich), cyfr i znaków przecinka, myślnika lub znaku podkreślenia. Dodatkowo nie mogą składać się z samych cyfr, np. 12.txt. Taka formę przyjmują po imporcie, wtedy nie będą wyświetlone tylko uznane za już importowane.

6.Po zalogowaniu do panelu admina nie widzę absolutnie nic poza całą pustą stroną koloru tła panelu, co mogę zrobić w tej sytuacji?

Zapewne w pliku conf.php zdefiniowałeś nieprawidłowy login lub hasło. Typowym problemem jest wybranie zbyt krótkiego hasła. Względy bezpieczeństwa nie pozwalają na wybranie hasła poniżej 5 znaków. Po więcej szczegółów zajrzyj do pliku conf.php. Przy każdej ze zmiennych jest tam wypisany zestaw dopuszczalnych znaków i liczby tychże znaków.

Kategoria Narzędzia SEO | 24 Komentarzy »

Gmail we własnej domenie

Opublikowany dnia Luty, 23 o godzinie 0:22

Osobiście bardzo lubię odbierać pocztę korzystając z przeglądarki internetowej i mimo tego, że przez ostatni czas korzystałem z kilku programów pocztowych, to jednak nie przekonały mnie one bym zmienił swoje przyzwyczajenia. Nie miałem większych zastrzeżeń do nich, bo zarówno Sylpheed, Mail (dołączany do standardowego oprogramowania Maca) i Koma-Mail spisywały się bez zarzutu i wszystkie były darmowe. W Sylpheedzie drażnił mnie nieco widok, w którym wiadomości od tego samego odbiorcy zbierane są w grupę. Mail – absolutnie bez zastrzeżeń, dla tego programiku warto mieć maca;)

Ale często korzystam z różnych komputerów i bardzo cenię sobie mobilność, której żaden z tych programów mi nie zagwarantuje. W konsekwencji czytam te same maile po kilka razy.

Szukając skrzynki, na której mógłbym polegać wybierałem spośród dwóch – AOLa i Gmaila. Pierwszy z nich nie jest poprawnie obsługiwany przez Operę, w drugim nie mogę przywyknąć do grupowania wiadomości od tego samego odbiorcy (bardzo nieintuicyjna rzecz), do tego login, który chciałem był już zajęty. Szukając dalej natknąłem się na skrzynkę obsługiwaną przez Gmaila, ale z inną końcówką. Pomyślałem, a gdyby tak..ee..nie, pewnie płatna! A kilka miesięcy potem już taką miałem.

Pozwolisz, że będę okrutny i na razie nie odpowiem.

Zacznijmy typowo, czyli „Po co mam się w to bawić skoro mogę mieć Gmaila?”. Na razie udało mi się uzbierać całe 3 powody:

  1. K*czę, zajeli mi login. Niestety nie mamy się co łudzić, żadnej perełki tutaj nie uchwycimy. Nawet profesjonalnie wyglądające imię.nazwisko w większości są już rozdane.
  2. Obsługa standardowych programów pocztowych dołączonych do cPanela lub DirectAdmina (Webmail, Roundecoube czy też fikuśne brzmiący UebiMiau) pozostawia wiele do życzenia (np. biorąc pod uwagę aspekt kodowania polskich znaków).
  3. Dla lansu..oczywiście.

Zgłoszenie

Zgłoszenie możemy przesłać przechodząc na stronę http://www.google.com/apps/intl/pl/group/index.html. Niezbędna będzie wykupiona domena oraz dostęp do zarządzania DNSami (wystarczy odpowiednie konto hostingowe – myślę, że na życzenie administrator może dodać ręcznie odpowiednie wpisy; w az.pl po wpisaniu odpowiednich dnsów również mamy możliwość dokonywania modyfikacji rekordów A, MX oraz Cname). W wersji bezpłatnej będziemy mogli utworzyć 50 kont, każde po 7,5GB ze wszystkimi opcjami dostępnymi w usłudze Gmail. W kolejnych krokach podajemy nazwę domeny, swoje dane osobowe i dane do konta administratora.

Teraz czas na charakterystyczne dla usług Google’a „zweryfikuj posiadanie domeny”. Po zalogowaniu na konto administratora klikamy więc na napis, o takiej nazwie. Otrzymamy propozycje sposobów weryfikacji własności domeny: przesłanie pliku na serwer lub dodanie rekordu CNAME. Polecam sposób nr 1. Po wykonaniu tej czynności dostaniemy informację o 48-godzinnym procesie oczekiwania na ową „wyimaginowaną” weryfikację. Mimo, że w praktyce trwa to znacznie krócej, to nie powinniśmy oczekiwać, że odbędzie się to za godzinę.

Zakładam, że weryfikacja przebiegła pomyślnie. Świetnie! Teraz kolej na modyfikację wpisów DNS. Nie jest to trudne. Na początek usuwamy wszystkie wpisy MX związane z tą domeną i definiujemy nowe.

Ma być tak:

ALT1.ASPMX.L.GOOGLE.COM. MX 20
ALT2.ASPMX.L.GOOGLE.COM. MX 20
ASPMX.L.GOOGLE.COM. MX 10
ASPMX2.GOOGLEMAIL.COM. MX 30
ASPMX3.GOOGLEMAIL.COM. MX 30
ASPMX4.GOOGLEMAIL.COM. MX 30
ASPMX5.GOOGLEMAIL.COM. MX 30

A tutaj wersja rozszerzona wzbogacona o opis. Nie lubię się powtarzać, a całkiem dobrze jest to opisane tutaj.

Skoro jesteśmy już przy edycji DNSów to w tym miejscu należy wykonać jeszcze 2 rzeczy:

1. Konfiguracja własnych adresów URL. Te standardowe oferowane przez Google są nie do zapamiętania. I polecam zrobić to od razu.

https://www.google.com/a/cpanel/twoja-domena.pl/CustomUrl

Po modyfikacji dodajemy 4 wpisy CNAME, mogą one wyglądać np. tak:

dokumenty CNAME ghs.google.com.
kalendarz CNAME ghs.google.com.
poczta CNAME ghs.google.com.
witryny CNAME ghs.google.com.

2. Najważniejsze! Edycja rekrodu SPF. Usuwamy stary i na to miejsce wprowadzamy:

twoja-domena.pl. TXT „v=spf1 include:aspmx.googlemail.com ~all”

W przeciwnym razie będziemy otrzymywali zwroty od Wirtualnej Polski, Interii, itp., które będą odczytywały nasze maile jako SPAM.

Więcej informacji tutaj.

W panelu administratora mamy też kilka interesujących opcji. Powiem o dwóch, a z resztą, no cóż, miłej zabawy;) Możliwość dodania własnego loga i określenia podstawowej kolorystyki dla osób logujących się. Na koniec, polecam załączyć Ustawienia domeny -> Ogólne -> „Nowe usługi i funkcje przedpremierowe”. Zahaczamy „Automatycznie dodawaj nowe usługi, gdy staną się dostępne” i „Włącz funkcje przedpremierowe”. Bez tych opcji użytkownicy nie będą mogli chociażby definiować własnej kolorystyki skrzynki. A to świetna rzecz.

Podsumowując na pewno warto wypróbować. Dobre połączenie estetycznego, ładnie wyglądającego adresu i funkcjonalności Gmaila. Barierą z pewnością pozostanie podstawowa znajomość infomatyczna, obsługi domeny, konfiguracji adresów DNS. Ale niech Was zachęci to, że usługa wciąż pozostaje nieznana i jest przeznaczona raczej dla wybrańców. Mogę się pochwalić, że sam zaproponowałem taką możliwość studentom i studentkom z mojego roku. Na razie wykorzystanie wygląda tak sobie, krótko mówiąc w ogóle nie wygląda:)

Kategoria Google | 4 Komentarzy »

Jak instalowałem księgarnie KlubZixo.pl

Opublikowany dnia Czerwiec, 11 o godzinie 23:32

Nie dalej jak kilka dni temu wystartowała, kolejna już, edycja konkursu „Wygraj laptopa” pod patronatem Tomasza Wieliczko (e-Weblink). Tym razem wśród nagród jest nie laptop a dwa, widać kryzys nam niestraszny. Tym niemniej są to tak jakby dwa inne konkursy, w jednym wygrywa właściciel strony z najwyższym wskaźnikiem „site”, w drugim osoba, która zdobędzie największą ilość punktów. Owe punkty ustalane będą dzięki pozycjom stron dla wybranych słów kluczowych.

Czytaj cały »

Kategoria Pozycjonowanie | 1 Komentarz »

GoogleDay 2008

Opublikowany dnia Grudzień, 19 o godzinie 15:03

29 września przyszedł czas na wyczekiwaną jednodniową wyprawę do warszawskiego grodu. Powód? GoogleDay 2008, miejsce – Centrum EXPO XXI. Zaczyna się dość niewinnie – pobudka rano, szybkie śniadanko i opuszczamy Lublin.

Na miejscu z racji korków w samej stolicy jesteśmy troszkę po czasie, chwila zawachania, uff gadżety wciąż są. Podchodzimy, witają nas przesympatyczne dziewczyny (w koszulkach Google wyglądały uroczo), dostajemy gadżety w woreczkach (niby jak na buty, ale zawsze to z napisikiem Google), chwila rozmowy wybieramy rozmiary koszulek i tak właściwie zostały już jedynie L-ki, kolejka za nami sie nieco niecierpliwi więc uciekamy zapoznać się z reszta atrakcji.

Czytaj cały »

Kategoria Google | 0 Komentarzy »

Konkurs seo – to już jest koniec

Opublikowany dnia Wrzesień, 4 o godzinie 13:11

Z końcem sierpnia dobiegł kresu konkurs o tyle dzwięcznej co i tajemniczej nazwie „Mistrzostwa w pozycjonowaniu stron 2008„, w którym i ja, powiem skromnie, udział brałem. Poznaliśmy laureatów, był płacz, żal i rozczarowanie, do rękoczynów jeszcze nie doszło, lecz zawiedzionym mogę powiedzieć, że pozostał jeszcze jeden, ostatni etap tj. wręczenie nagród, a to już 13 września w Łodzi. Co ciekawsze, w trakcie trwania zawodów doszło też do sensacyjnego wyrzucenia jednego z organizatorów, Mariusz „szook” Janczuk pisuje od tej pory głównie na grupach dyskusyjnych google’a.

Czytaj cały »

Kategoria Pozycjonowanie | 1 Komentarz »

Systemy wymiany linków

Opublikowany dnia Sierpień, 12 o godzinie 2:02

Warto zacząć od krótkiego wstępu na temat systemów wymiany linków, przede wszystkim: czym są i jaki jest ich cel? Nie jest tajemnicą, że google wartościuje strony głównie w oparciu o linki prowadzące do nich. Oczywiście znaczenie ma nie tylko ich ilość, ale także ich jakość, tematyczność witryn, z których linki prowadzą do naszej strony oraz ich przyrost.

Czytaj cały »

Kategoria Narzędzia SEO, Pozycjonowanie | 1 Komentarz »