|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
Przesunięty przez: Matteo 09-11-2013, 09:30 |
Spider Friendly Optimized 1.0 |
Autor |
Wiadomość |
Centurion
Pomógł: 543 razy Posty: 1972
|
Wysłany: 05-03-2009, 02:02 Spider Friendly Optimized 1.0
|
|
|
Modyfikacja jest przeróbką moda Spider Friendly która jest finalnym rozwiązaniem problemu opisanego w temacie z tymczasową poprawką.
Dlaczego ta poprawka powstała i dla kogo jest przeznaczona?
Modyfikacja ta jest przeznaczona dla forów z dużą ilością tematów (zwłaszcza) i postów, które używają opcji z przepisywaniem adresów ze słowami kluczowymi lub wirtualnych tematów. W wersji oryginalnej informacje o wszystkich tematach, forach i postach w danym temacie (opcja przepisywania linków do postów na linki do tematów) są trzymane w cache i generowane w zależności od ustawień moda w PA i za każdym odświeżeniem strony pliki cache z tymi informacjami są wczytywane. Z czasem ich wielkość oczywiście rośnie i w pewnym momencie powoduje bardzo duże obciążenie serwera. Dlatego powstała moja modyfikacja, która nie korzysta z cache wogóle, a linki przepisuje w locie, ale tylko te które aktualnie wymagają przepisania. Przy tej samej funkcjonalności różnica w obciążeniu jest ogromna (tutaj kilka testów które zrobiłem na dedykowanych serwerach).
Co zawiera moja modyfikacja:
Kod: | - zachowanie wszystkich funkcjonalności SF bez potrzeby używania cache
- przepisywanie nazw kategorii, użytkowników i grup
- brakujące przekierowania 301 dla nieprzepisanych tematów/userów/grup/kategorii
- tytuł kategorii w pasku przeglądarki po wejściu w daną kategorię
- nazwa użytkownika w pasku przeglądarki po wejściu na profil użytkownika |
Uwaga
1. Instrukcja która została dołączona zawiera tylko wszystkie niezbedne przepisywania dla czystego forum 1.12.6p1 ze SF 1.3.12. Jeżeli macie inne mody które generują linki zawierające użytkowników, grupy, fora, kategorie, tematy i posty będziecie musieli dodać ręcznie kawałki kodu odpowiadające za przepisywanie. Bez tego linki wciąż będą działać poprawnie, jednak adresy będą inne niż na głównej części forum (możliwość pojawienia się duplicate content dla googla).
- Dla linków do tematów wymagane są nazwa tematu i id forum wg wzoru:
Kod: | $sfc['topics'][$row['topic_id']]['title'] = $sfc[$row['topic_title']];
$sfc['topics'][$row['topic_id']]['forum'] = $sfc[$row['forum_id']]; |
- Dla linków do postów wymagane są nazwa tematu, id forum, id tematu oraz kolejność posta (o tym ostatnim będzie poniżej) wg wzoru:
Kod: | $sfc['posts'][$row['post_id']]['title'] = $sfc[$row['topic_title']];
$sfc['posts'][$row['post_id']]['forum'] = $sfc[$row['forum_id']];
$sfc['posts'][$row['post_id']]['topic'] = $sfc[$row['topic_id']];
$sfc['posts'][$row['post_id']]['lp'] = $sfc[$row['post_lp']]; |
- Dla linków do forów wymagana jest nazwa forum:
Kod: | $sfc['forums'][$row['forum_id']] = $sfc[$row['forum_name']]; |
- Dla linków do kategorii wymagana jest nazwa kategorii:
Kod: | $sfc['cats'][$row[cat_id']] = $sfc[$row['cat_title']]; |
- Dla linków do profilów użytkowników wymagana jest nazwa użytkownika. Uwaga - jeżeli wasze linki przechodza przez funkcję color_username( to nie musicie tego wstawiać:
Kod: | $sfc['users'][$row['user_id']] = $sfc[$row['username']]; |
- Dla linków do grup wymagana jest nazwa grupy:
Kod: | $sfc['groups'][$row['group_id']] = $sfc[$row['group_name']]; |
Te dane są przykładowe i mogą się różnić w innych modyfikacjach.
Ważna informacja
Te wszystkie $sfc dla danego linku muszą być wstawiane przed wywołaniem append_sid(!
Wiem że dla laika wygląda to skomplikowanie, więc z czasem będziemy w postach w tym temacie podawać gotowe rozwiązania dla innych modyfikacji.
2. Aby wprowadzić przekierowania postów do tematów, na właściwą stronę tematu konieczne było wprowadzenie dodatkowej komórki w tabeli phpbb_posts o nazwie post_lp.
Jak nazwa wskazuje jest to kolejność postu w danym temacie, która aktualizuje się zależnie od potrzeb. Po zainstalowaniu tej modyfikacji nie istnieje żadna kolejność więc linki do postów będą zawsze kierować na pierwszą stronę tematu. Dopiero po wejściu na stronę tematu gdzie ten post faktycznie się znajduje wygeneruje się wspomniana kolejność i następnym razem link do postu będzie kierował już na poprawną stronę. Wiem że nie jest to zbyt przyjazne, ale było najprostszym i najoptymalniejszym sposobem jaki mi przyszedł do głowy.
Poniżej znajdują się pliki:
sf_optimized_update_from_sf_1_3_12.zip - standardowa instrukcja instalacji przy przejściu z SF 1.3.12 do mojej
sf_optimized_new_installation.zip - nowa instalacja którą się instaluje tak samo jak zwykłe SF, przeznaczona dla for które nie mają zainstalowanych jeszcze modów, a przynajmniej nie w tych plikach które zostały dołączone do paczki
sf_optimized_update_from_sf_1_3_12_patch.zip - plik .patch dla bardziej zaawansowanych (lub leniwych ) użytkowników z przejściem z wersji 1.3.12 na moją.
Trzeba pamiętać o wykonaniu zapytania:
Kod: | ALTER TABLE phpbb_posts ADD post_lp MEDIUMINT(5) NOT NULL DEFAULT 0; |
numposts.zip - służy do automatycznego nadania kolejności postom w tematach dla tych którzy chcą mieć poprawne linki do postów od razu, nie czekając aż to się wygeneruje po wejściu w temat. Instrukcja obługi: wgraj plik numposts.php w katalog z forum, wejdż na adres Kod: | http://www.adrestwojegoforum/numpost.php | zalogowany jako administrator i uruchom skrypt.
Modyfikacja została przetestowana na trzech forach i nie zauważyłem żadnych problemów z nią związanych. Jeśli jakieś znajdziecie (lub jakieś nieprzepisane linki) to piszcie w tym temacie. Zapraszam do testowania.
Dla tych co mają problem z dublowaniem ikonek.
|
_________________ Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql |
Ostatnio zmieniony przez Matteo 11-11-2010, 15:01, w całości zmieniany 8 razy |
|
|
|
|
Gadatliwa Kasia
|
|
|
|
Mateusz61
Pomógł: 33 razy Posty: 282
|
Wysłany: 05-03-2009, 09:41
|
|
|
Centurion tego nie ma w usercp_viewprofile.php
Kod: | #---[ FIND ]---
$viewcatkey = ($viewcat < 0) ? 'Root' : POST_CAT_URL . $viewcat;
#---[ AFTER ADD ]---
if($sfc['mod_rewrite_enabled'] == 1 && $viewcat > 0)
{
$sql = "SELECT cat_id, cat_title FROM " . CATEGORIES_TABLE . " WHERE cat_id = $viewcat";
if ( $result = $db->sql_query($sql) )
{
if($row = $db->sql_fetchrow($result))
{
$sfc['cats'][$row['cat_id']] = $row['cat_title'];
if (strpos($_SERVER['REQUEST_URI'], 'index.php?c') !== false && preg_match('#c=(\d+)#', $_SERVER['REQUEST_URI'], $cat_id))
{
redirect(append_sid("index.$phpEx?" . POST_CAT_URL . '=' . $cat_id[1], true), 301);
}
}
}
}
#---[ FIND AND REMOVE ]---
$page_title = $lang['Forum_index'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
#---[ FIND ]---
$template->assign_vars(array(
'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts) . ', ' . $lang['topics'] . ' <b>' . get_db_stat('topiccount') . '</b>',
'TOTAL_USERS' => sprintf($l_total_user_s, $total_users),
#---[ BEFORE ADD ]---
$sfc['users'][$newest_uid] = $newest_user;
#---[ FIND ]---
//
// Generate the page
//
#---[ AFTER ADD ]---
if($viewcat > 0)
{
$cat_title = get_object_lang($viewcatkey, 'name');
$page_title = $cat_title;
}
else
$page_title = $lang['Forum_index'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
|
jak opisałeś w instrukcji...
gdzie to znajdę
[ Dodano: 05-03-2009, 09:53 ]
tu chyba też jest błąd:
portal.php
Kod: | #---[ FIND ]---
$sql = "SELECT topic_id, topic_title
#---[ AFTER ADD ]---
$sql = "SELECT topic_id, topic_title, forum_id |
chyba powinno być zamień ale ja się nie znam pytam na wszelki wypadek...
[ Dodano: 05-03-2009, 10:00 ]
w tellafriend.php
nie mogę znaleźć tego
Kod: | #---[ FIND ]---
$template->assign_block_vars('spy_row', array(
#---[ BEFORE ADD ]---
$sfc['forums'][$row['forum_id']] = $row['forum_name'];
$sfc['topics'][$row['topic_id']]['title'] = $row['topic_title'];
$sfc['topics'][$row['topic_id']]['forum'] = $row['forum_id'];
$sfc['users'][$row['user_id']] = $row['username']; |
|
|
|
|
|
Centurion
Pomógł: 543 razy Posty: 1972
|
Wysłany: 05-03-2009, 10:15
|
|
|
Dzięki, pisałem to późno w nocy i byłem już bardzo zmęczony.
1. fragment powinno być przed tym
Kod: | #--- [ OPEN ] ---
index.php |
2. Powinno być [ REPLACE WITH ] zamiast [ AFTER ADD ]
3. Przed tym powinno być
Kod: | #--- [ OPEN ] ---
topic_spy.php |
Instrukcję zaraz podmnienię |
_________________ Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql |
|
|
|
|
Lukasamd [Usunięty]
|
Wysłany: 05-03-2009, 10:36
|
|
|
1. Gdy na głównej kliknę w temat:
NAZWA_FORUM Ostatni post: TEMAT
to przenosi do ostatniego postu, gdy kliknę na nazwę tematu w szukajce od nieprzeczytanych, przenosi mnie do pierwszego postu w temacie a nie do nieprzeczytanego.
2. Gdy wyłączam przepisywanie, przekierowanie się zapętla i nic nie można zrobić.
EDIT:
Zamieniłem w viewtopic.php:
Kod: | // Avoid double-linking of topics and redirect user
redirect(append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $forum_topic_data['topic_id'] . ($start > 0 ? "&start=$start" : ''), true) . '#' . $post_id, 301);
$start = floor(($forum_topic_data['prev_posts'] - 1) / $user_posts_per_page) * $user_posts_per_page; |
na:
Kod: | $start = floor(($forum_topic_data['prev_posts'] - 1) / $user_posts_per_page) * $user_posts_per_page; |
i teraz mam odwrotnie - przy szukajce działa, przy stronie głównej już nie |
|
|
|
|
Centurion
Pomógł: 543 razy Posty: 1972
|
Wysłany: 05-03-2009, 11:05
|
|
|
oj chyba nie doczytałeś tego co napisałem
Kod: | 2. Aby wprowadzić przekierowania postów do tematów, na właściwą stronę tematu konieczne było wprowadzenie dodatkowej komórki w tabeli phpbb_posts o nazwie post_lp.
Jak nazwa wskazuje jest to kolejność postu w danym temacie, która aktualizuje się zależnie od potrzeb. Po zainstalowaniu tej modyfikacji nie istnieje żadna kolejność więc linki do postów będą zawsze kierować na pierwszą stronę tematu. Dopiero po wejściu na stronę tematu gdzie ten post faktycznie się znajduje wygeneruje się wspomniana kolejność i następnym razem link do postu będzie kierował już na poprawną stronę. Wiem że nie jest to zbyt przyjazne, ale było najprostszym i najoptymalniejszym sposobem jaki mi przyszedł do głowy. |
co do viewtopic.php to chyba coś źle wstawiłeś
[ Dodano: 05-03-2009, 12:34 ]
Dodałem automatyczny synchronizer kolejności postów w tematach. Można go użyć żeby poprawić wszystkie linki do postów za jednym zamachem. |
_________________ Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql |
|
|
|
|
Lukasamd [Usunięty]
|
Wysłany: 05-03-2009, 12:43
|
|
|
Po wywaleniu tego co miałem w viewtopic (tak jak pisałem w poprzednim poście) i synchronizacji śmiga tak jak powinno
Czas generowania głównej spadł mi z 0,08s na 0,06s
Konto shared, serwer litespeed, php5-fastcgi + ecaalerator
EDIT:
Mam pomysł, a może by tak dać słowa kluczowe do linku "Wersja do druku"? Roboty chyba lubią takie strony indeksować. |
|
|
|
|
$kubi
Posty: 109
|
Wysłany: 05-03-2009, 14:37
|
|
|
Zainstalowałem do siebie - ktoś może wejść i zobaczyć czy działa to jak należy?
Czy widząc stronę główną i chcąc kliknąć na ostatni link w temacie też macie taki skrót: "/postlink/59619.htm#59619" - a dopiero jak się kliknie i otworzy to na górze jest juz pelna nazwa tematu? |
|
|
|
|
Centurion
Pomógł: 543 razy Posty: 1972
|
Wysłany: 05-03-2009, 14:39
|
|
|
$kubi, a masz ustawione w konfiguracji SF przepisywanie linków do postów na linki do tematów? |
_________________ Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql |
|
|
|
|
$kubi
Posty: 109
|
Wysłany: 05-03-2009, 14:43
|
|
|
Centurion, wydawało mi się, że miałem - ale faktycznie zmieniłem i już jest okej
W razie poprawek muszę teraz obserwować ten temat
Dobra robota! |
|
|
|
|
Centurion
Pomógł: 543 razy Posty: 1972
|
Wysłany: 05-03-2009, 14:47
|
|
|
Swoją drogą nadal Ci coś zacina, nie masz jakichś dziwnych modów, albo jakichś wielkich plików w cache (np widziałem kiedyś akcje że ktoś dodał wszystkich użytkowników na forum do grupy z 0 postami a miał ich ich kilkanaście tysięcy i zarżnał serwer kompletnie).
Tak samo jak ktoś narobi baaardzo dużo for i poprzydziela do nich moderatorów to też potarfi zaciąć serwer.
Skrajne przypadki ale trzeba uważać na to. |
_________________ Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql |
|
|
|
|
$kubi
Posty: 109
|
Wysłany: 05-03-2009, 14:52
|
|
|
Centurion, wiem, nadal coś tnie i nie wiem za co się złapać - ale mamy się przenieść na inny szybszy serwer - jak to nie pomoże to wtedy będę myślał co to może być...
Konto testowe: test ; test1 jakby ktoś chciał zerknąć...
Co do dużej ilości for i moderatorów - jak to inaczej rozwiązać u mnie?
Bo co do tych plików cache to nie mam ich jakiś mega wielkich chyba... folder cache cały zajmuje 720KB
EDIT:
Tak na prawdę pierwszym podejrzanym jest serwer...
EDIT2:
Wysłalem PW Centurion |
Ostatnio zmieniony przez $kubi 05-03-2009, 15:26, w całości zmieniany 1 raz |
|
|
|
|
Centurion
Pomógł: 543 razy Posty: 1972
|
Wysłany: 05-03-2009, 15:20
|
|
|
$kubi, dane do forum mi nic nie dadza, bardziej interesujący jest czas generowania forum i wielkość plików w cache, przynajmniej tych powyżej > 50 kb, które to są |
_________________ Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql |
|
|
|
|
MagicalFire
Pomógł: 980 razy Posty: 4353
|
Wysłany: 05-03-2009, 15:23
|
|
|
Centurion, mam włączone przypisywanie linków czy jak zastosuje tego moda zmienia mi się linki ? |
_________________ nie za takie Przemo walczyliśmy |
|
|
|
|
Centurion
Pomógł: 543 razy Posty: 1972
|
Wysłany: 05-03-2009, 15:25
|
|
|
Linki do for, tematów i postów zostają te same które możesz sobie ustawić normalnie w SF.
Przy przepisywaniu ze słowami kluczowymi zmienią się za to linki do kategorii (z nazwą kategorii), profilów użytkowników (z nazwą użytkownika) i do grup (z nazwą grupy). |
_________________ Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql |
|
|
|
|
Gadatliwa Kasia
|
|
|
|
szafa81
Pomógł: 1 raz Posty: 62
|
Wysłany: 05-03-2009, 16:26
|
|
|
Centurion, a co w przypadku kiedy wczesniej zainstalowalo sie:
-Nazwa użytkownika w tytule strony z jego profilem
-Nazwa kategorii w tytule strony
-Przepisywanie linków do kategorii z ich nazwami
nie chce narobic balaganu |
_________________ Pozdrawiam, szafa. |
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Nie możesz ściągać załączników na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!
Powered by phpBB modified by Przemo © 2003 phpBB
| Strona wygenerowana w 0,13 sekundy. Zapytań do SQL: 15 | |
|
|