Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Specyficzna (?) integracja WP z stroną osobistą
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy portalowe i CMS'y
Tonic
Na polskim forum Wordpress'a już o to się pytałem, ale wygląda na to, że mi tam nie pomogą. Cytat:

Cytat
Wiem, że jest dużo informacji na temat integracji, ale żadna nie pokazuje, jak zintegrować w taki sposób, jaki chcę. Schemat obrazuje, jak chciałbym to zintegrować:



Patrząc na to, można pomyśleć, że najprościej jest zbudować własny szablon, tyle, że kłopotliwym elementem jest sidebar. Ma on się pojawiać tylko i wyłącznie na includowanych podstronach z blogiem i komentarzami. Wszystkie znane mi metody mają to do siebie, że niezależnie od tego, jaka to podstrona (statyczna strona, galeria, etc.), sidebar jest widoczny (tak to rozumiałem), a ja tego nie chcę. No bo na co komu to podczas przeglądania, na przykład, prac rysunkowych? Funkcje bloga, jakie są mi potrzebne, to możliwość postowania (tongue.gif), komentowania, ich przeglądania i katalogowania postów. Ale tak, żeby wszystko były w miejscu diva z zmienną treśćią.

Dodatkowym utrudnieniem jest sposób, w jaki są ładowane strony. Utrudnieniem, bo jestem żółtodziobem w PHP. Div, który zawiera zmienną treść, ma kod:

Kod
<?php require_once './' . $pagesCat . '/' . $pages[$_GET['id']]['prefix'] . $_GET['id'] . '.html' . $_GET['post']; ?>


Na samym początku index.php mam kod, który zajmuje się ww. zmiennymi:

Kod
<?php
   $lang = array();
   $pagesCat = 'katalog/z_plikami_podstron_w_formacie_html';
  
   $pages = array(
   'strona1' =>    array('title' => 'strona1', 'prefix' => ''),
   'strona2' =>     array('title' => 'strona2', 'prefix' => ''),
   (i tak dalej)
  
   );
  
   if(!isset($_GET['id']) || !isset($pages[$_GET['id']]))
   {
       $_GET['id'] = 'strona1';
   }
   ?>


Dodatkowo używam mod_rewrite do skracania adresów. Zawartość pliku .htaccess

Kod
AddType application/x-httpd-php .html .htm .php
  
   RewriteEngine On
   Options +FollowSymlinks
  
   RewriteRule ^([0-9a-z-]+)$ index.php?id=$1


Podsumowując, nawigacja działa w ten sposób: http://adres/strona2 --(mod_rewrite)--> http://adres/index.php?id=strona2 --(GET['id']--> załaduj w divie z zmienną treścią plik strona2.html

Mam nadzieję, że napisałem w sposób zrozumiały
erix
Cytat
Ma on się pojawiać tylko i wyłącznie na includowanych podstronach z blogiem i komentarzami.

Nie mam teraz dostępu do źródeł Wordpressa, ale jeśli chodzi o Twój problem: http://codex.wordpress.org/Template_Hierarchy

Popatrz, wg jakiej zasady są ładowane szablony. Index jest zawsze ładowany, gdy nie ma template'a odpowiedzialnego za obsługę notki. Wykorzystaj to, bo w tych głównych szablonach jest metoda get_sidebar(), która jest odpowiedzialna za jego załączanie.

Jeśli chodzi o ładowanie stron takie, jak zrobiłeś, to jest IMHO zły pomysł; przy najbliższej aktualizacji Wordpressa index może zostać nadpisany uaktualnieniem i wtedy nieciekawie. Zaznaczam, że nie wiem, czy ostatnio wprowadzony moduł aktualizacyjny działa na zasadzie diffa, czy po prostu nadpisuje pliki.

Tak, czy siak - zostaw w spokoju źródła WP i napisz odpowiednią wtyczkę. Przynajmniej tak zrozumiałem z tego, co napisałeś. winksmiley.jpg
Tonic
Cytat(erix @ 12.12.2008, 13:58:35 ) *
Nie mam teraz dostępu do źródeł Wordpressa, ale jeśli chodzi o Twój problem: http://codex.wordpress.org/Template_Hierarchy

Popatrz, wg jakiej zasady są ładowane szablony. Index jest zawsze ładowany, gdy nie ma template'a odpowiedzialnego za obsługę notki. Wykorzystaj to, bo w tych głównych szablonach jest metoda get_sidebar(), która jest odpowiedzialna za jego załączanie.

Jeśli chodzi o ładowanie stron takie, jak zrobiłeś, to jest IMHO zły pomysł; przy najbliższej aktualizacji Wordpressa index może zostać nadpisany uaktualnieniem i wtedy nieciekawie. Zaznaczam, że nie wiem, czy ostatnio wprowadzony moduł aktualizacyjny działa na zasadzie diffa, czy po prostu nadpisuje pliki.

Tak, czy siak - zostaw w spokoju źródła WP i napisz odpowiednią wtyczkę. Przynajmniej tak zrozumiałem z tego, co napisałeś. winksmiley.jpg


Nie sądzę, żebym aktualizował. Przynajmniej nie tak często, bo chcę używać bloga do najbardziej podstawowych rzeczy - postowania, komentowania i segregowania komentarzy. Pisanie wtyczki to za wiele dla mnie, nie znam się na PHP smile.gif

Spróbowałem po prostu przerobić szablon graficzny i chyba jestem blisko. Wgrałem pliki bloga do katalogu /wordpress, po czym w ustawieniach wskazałem katalog root (o jeden wstecz, bo nie chciałem mieć tam bałaganu z plikami i folderami), a następnie skopiowałem index.php i poprawiłem w nim ścieżkę, żeby blog się nie pogubił. Teraz mam inny problem, którego nie mogę zrozumieć. Mogę załadować podstrony (np. z galerią) za pomocą /index.php?id=nazwapodstrony lub /?id=nazwapodstrony. W katalogu root mam .htaccess z taką zawartością

Kod
AddType application/x-httpd-php .html .htm .php

RewriteEngine On
Options +FollowSymlinks

RewriteRule ^([a-z]+)$ index.php?id=$1


Jeśli wpiszę http://localhost/strona/galeria, to regułka tłumaczy na http:/localhost/strona/index.php?id=galeria, ale serwer twierdzi, że nie ma takiej strony (błąd 404). Natomiast jeśli wpiszę ręcznie adres z index.php, to już działa poprawnie. O co tu chodzi? W jaki sposób mogę zdiagnozować problem? Czy jest to możliwe, żeby Wordpress negował działanie mod_rewrite?
erix
Cytat
Nie sądzę, żebym aktualizował. Przynajmniej nie tak często, bo chcę używać bloga do najbardziej podstawowych rzeczy - postowania, komentowania i segregowania komentarzy.

Huh, wędrówka po cienkiej linii...

Cytat
Czy jest to możliwe, żeby Wordpress negował działanie mod_rewrite?

Nie pisz żadnych regułek ręcznie, Wordpress ma odpowiednią opcję w panelu administracyjnym, zacznij najpierw od tego.
Tonic
Cytat(erix @ 13.12.2008, 11:12:44 ) *
Nie pisz żadnych regułek ręcznie, Wordpress ma odpowiednią opcję w panelu administracyjnym, zacznij najpierw od tego.


Permalinki? Jeśli tak, to ja nie mam pojęcia, w jako sposób to może pomóc, bo dotyczą one stron Wordpress'a, a nie spoza, takich jak te, które ja stworzyłem. W każdym razie, dalej pokombinowałem z ręcznymi wpisami i coś ruszyło dalej, choć nie osiągnąłem celu. W tej chwili regułka ma taką postać:

Kod
RewriteRule ^([a-z]+)/?$ index.php?id=$1 [L]


I to przekierowuje, tylko przeglądarka (albo serwer, nie wiem) myśli, że wartość $1 to katalog, a nie podstrona. Na przykład, mam plik CSS w głównym katalogu. Po przekierowaniu przeglądarka sądzi, że taki plik ma ścieżkę http://adres_strony/wartość_$1/plik_CSS (a nie http://adres_strony/plik_CSS, jak powinno być). Efektem w tym przykładzie jest brak stylów dla danej podstrony.

EDIT:

Jakimś cudem udało mi się rozwiązać problem smile.gif Wystarczyło dodać do sekcji head linijkę:

Kod
<base href="http://adres_strony.com/">


W pełni tego nie rozumiem, ale chodzi o relatywne linki - takowe mam i odnosiły się do aktualnego adresu w pasku adresu przeglądarki, a nie głównego katalogu, co powodowało, że się gubiły. Jakoś tak smile.gif
erix
Cytat
Permalinki? Jeśli tak, to ja nie mam pojęcia, w jako sposób to może pomóc, bo dotyczą one stron Wordpress'a, a nie spoza, takich jak te, które ja stworzyłem.

Tak, o to mi chodziło. Ale - nota bene - jaki masz problem wcisnąć swoje strony w szablon Wordpressa? Możesz przecież coś takiego zrobić, robisz tylko nowy <TEMPLATE> w katalogu szablonu (przy pisaniu strony/newsa dostajesz dodatkowe pole z wyborem szablonu).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.