Jak pogodzić kod ProLinka z blogami działającymi w sieci WordPress?

Przez wiele lat prowadziłem swoje blogi na niezależnych instalacjach WordPressa i dopiero w zeszłym tygodniu zebrałem się na to, żeby je wszystkie połączyć w sieć. Cała operacja przebiegłaby gładko i bezproblemowo, gdyby nie ProLink  i jego niezbyt szczęśliwie przemyślany system „instalowania” kodu w WordPressach.

W czym tkwił problem? Otóż ProLink, po dodaniu bloga do systemu, daje nam trzy pliki, które trzeba umieścić w głównym katalogu WordPressa. Przy pojedynczych blogach problemu nie ma, ale w sieci główny katalog mamy tylko jeden – wspólny dla wszystkich blogów. Zgłosiłem problem do supportu ProLinka, ale niestety od tygodnia nie doczekałem się żadnej pomocy, dlatego na własną zrobiłem małą modyfikację jednego z plików ProLinka, która umożliwia bezproblemowe korzystanie w sieci blogów WP. ProLink jest zbyt cennym źródłem dodatkowego dochodu, żeby tak sobie czekać w nieskończoność na oficjalne rozwiązanie ;)

Dla każdego bloga dodanego w ProLinku otrzymujemy trzy pliki:

  • prolink.php
  • prolink_0186118al9s6a5ekcnd3bda5109d90p4.txt
  • prolink_config.php

Pierwszy z plików jest identyczny dla wszystkich blogów, więc wystarczy wrzucić go tylko raz do głównego katalogu naszej sieci. Drugi plik także możemy śmiało wrzucać do głównego katalogu, ponieważ ma on inną (unikatową) nazwę dla każdego z blogów. Natomiast jeżeli chodzi o trzeci plik, to trzeba go nieco zmodyfikować, ponieważ nazwę ma on wspólną dla wszystkich blogów, ale zawartość już się różni.

Standardowa zawartość pliku prolink_config.php wygląda następująco:

<?php
/**
 * Każdy użytkownik systemu posiada własną konfigurację, które jest
 * generowana do tego pliku konfiguracyjnego.
 */

/**
 * C_ID jednoznacznie identyfikuje użytkownika systemu.
 */
define('C_ID','0186118al9s6a5ekcnd3bda5109d90p4');

/**
 * Wersja systemu klienta zainstalowana u użytkownika.
 */
define('S_VERSION','1.0');

/**
 *
 */
error_reporting(0);
@ini_set('display_errors', '0');

Cały myk polega na tym, żeby zastąpić tą linię:

define('C_ID','0186118al9s6a5ekcnd3bda5109d90p4');

Takim kawałkiem kodu (dla przykładu dodałem od razu dwa kolejne blogi):

switch($_SERVER['HTTP_HOST']) {
case 'mydiy.pl':   define('C_ID','0186118al9s6a5ekcnd3bda5109d90p4'); break;
case 'więcek.pl':  define('C_ID','e58fac4a7c1d032b49bcc3024da5109d'); break;
case 'wiecek.biz': define('C_ID','8a7c1032b49bdfac9363bda5109d93ba'); break;
}

Oczywiście adresy blogów, oraz odpowiadające im identyfikatory musicie uzupełnić swoimi danymi :)

Tak zmodyfikowany plik także wrzucamy do głównego katalogu naszej sieci. Przy dodawaniu kolejnych blogów wystarczy dorzucić drugi z podesłanych przez ProLinka plików, oraz zmodyfikować już istniejący trzeci plik dodając do niego kolejną pozycję z adresem bloga i jego identyfikatorem.

Żeby wszystko grało i buczało, musicie pamiętać o jeszcze jednym – wstawiając kod ProLinka w szablonach blogów, zawsze podawajcie ścieżkę do pliku prolink.php znajdującego się w głównym katalogu sieci.

I to by było na tyle. Po takim zabiegu system ProLinka prawidłowo wykryje pliki instalacyjne, a linki bez żadnych problemów będą się wyświetlać na każdym z blogów w sieci. Mam nadzieję, że komuś się ta mała modyfikacja przyda :)


Opublikowano

w

przez

Komentarze

8 odpowiedzi na „Jak pogodzić kod ProLinka z blogami działającymi w sieci WordPress?”

  1. Awatar Konrad Karpieszuk

    tym oto wpisem witamy Łukasza jako kolejnego współredaktora na dev.WPzlecenia! :) Mam nadzieję, że na jednym wpisie się nie skończy ;)

    1. Awatar Łukasz Więcek

      Waszego tempa na pewno nie utrzymam, ale z pewnością od czasu do czasu będę opisywał jakieś drobne modyfikacje WP i różnych wtyczek (i pewnie tylko na tym się skupię:)

      1. Awatar Jakub Milczarek

        Witamy, witamy!
        Nie wiem jak Konrada, ale mnie raczej szybko dogonisz, bo jak widzę lubisz pisać i masz na to czas :)
        Tak zaczynam sobie myśleć, czy nie zrobią się nam jakieś specjalizacje autorsko-tematyczne za jakiś czas?

        Co do wpisu, to sam przymierzam się do sieci od jakiegoś czasu, więc mam kolejny impuls do tego!

  2. Awatar bimbol
    bimbol

    Ciekawy wpisy. Moglbys napisac czy „wszystkie połączyć w sieć” oznacza wordpress mu czy cos innego?

    1. Awatar Łukasz Więcek

      Kiedyś to było MU, teraz jest Sieć (Network) wbudowana bezpośrednio w WP (wystarczy ją tylko włączyć): http://codex.wordpress.org/Create_A_Network :)

      1. Awatar Jakub Milczarek

        Popieram – taki tutorial o tworzeniu sieci (po polsku) na pewno wiele osób chętnie by poczytało!

        1. Awatar Łukasz Więcek

          Pomyślimy, pomyślimy ;)

  3. Awatar Vokiel

    Ja ze swojej strony mogę zaproponować dwa podobne rozwiązania.

    Pierwsze to modyfikacja sposobu Łukasza: zamiast case i edycji pliku przy każdej nowej stronie proponuję include/require i wrzucanie nowego pliku dla każdej domeny. Różnica co prawda niewielka, ale może komuś będzie wygodniej w ten sposób.

    Drugie oparłbym na .htaccess, przepisując link do prolink_config.php w zależności od domeny. Ten przykład też wymaga dodania nowego pliku i/lub katalogu dla nowej domeny.

    Ilu ludzi, tyle rozwiązań, zwiększam tym wybór metody. Niektórzy wolą edytować jeden plik, inni wolą wrzucać/usuwać plik przy dodawaniu/usuwaniu domeny.