-
Postów
9 938 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
22
Typ zawartości
Profile
Forum
Pliki
Galeria
Blogi
Sklep
Wydarzenia
Treść opublikowana przez Macsch15
-
Teoretycznie korzystanie z surowego PHP w szablonach nie jest trudne, ale jest parę elementów o których trzeba pamiętać. Składnia jest bardzo prosta i intuicyjna: <php> Kod PHP </php> Pomiędzy tagami <php> może być każdy kod z wyjątkiem funkcji bezpośrednio wyświetlających dane (takich jak echo, print, var_dump (bez warunku zwracania poprzez return) itp). Zasada jest prosta: zamiast używać przykładowo echo do wyświetlenia zawartości jakiejś zmiennej, wklejamy ją bezpośrednio do szablonu (już nie pomiędzy tagami <php>) otaczając ją nawiasami klamrowymi ({$zmienna}). Przykład zły: <php> $fruit = array('lemon', 'apple', 'orange'); print_r($fruit); </php> Wygeneruje błąd. Przykład dobry: <php> $fruit = array('lemon', 'apple', 'orange'); $result = print_r($fruit, true); </php> {$result} Wyświetli Array ( [0] => lemon [1] => apple [2] => orange ) Drugi argument w funkcji print_r to alternatywny return, czyli funkcja nie wyświetla od razu danych, tylko je zwraca. Kolejny przykład zły: <php> $variable = 'Hello ize!'; echo $variable; </php> BŁĄD! Poprawnie: <php> $variable = 'Hello ize!'; </php> {$variable} Ważne! Jeżli będziemy chcieli wyświetlić jakiś element tablicy w zmiennej NIE używamy do tego podwójnego cudzysłowa. Tylko pojedynczy. Przykład zły: <php> $array = array( 'ize1' => 'val1', 'ize2' => 'val2', 'ize3' => 'val3' ); </php> {$array["ize1"]} Przykład dobry: <php> $array = array( 'ize1' => 'val1', 'ize2' => 'val2', 'ize3' => 'val3' ); </php> {$array['ize1']} Nie dotyczy elementów pomiędzy tagami <php>. Jak wyświetlić dane z funkcji czy obiektu? Przykładowo mamy stworzony plik testowy.php* w głównym katalogu forum. Zawartość w nim to: <?php function invisionize() { echo 'Hello ize!'; } *Pamiętaj! Pliki wczytywane do szablonu muszą być z kodowaniem UTF-8 bez BOM Próbując wyświetlić "Hello ize!" na forum, dodając do szablonu taki kod: <php> require_once DOC_IPS_ROOT_PATH . 'testowy.php'; invisionize(); </php> Pojawi się błąd. Aby poprawnie wyświetlić jej zawartość trzeba w pliku testowy.php i funkcji invisionize() zamienić echo na return: <?php function invisionize() { return 'Hello ize!'; } Następnie w szablonach: <php> require_once DOC_IPS_ROOT_PATH . 'testowy.php'; $ize = invisionize(); </php> {$ize} Taki kod poprawnie wyświetli "Hello ize!". Jak wygląda sprawa z OOP? Podobnie. Plik ten sam co wcześniej, testowy.php, tym razem zawartość jego: <?php class ize { public function test(){ echo 'Hello ize!'; } } Ten sam problem co wcześniej, echo... BŁĄD! Zamieniamy echo na return: <?php class ize { public function test(){ return 'Hello ize!'; } } I w szablonach: <php> require_once DOC_IPS_ROOT_PATH . 'testowy.php'; $f = new ize; </php> {$f->test()} Lub, gdy zawartość do wyświetlenia jest w konstruktorze: <?php class ize { public function __construct(){ return 'Hello ize!'; } } Szablony: <php> require_once DOC_IPS_ROOT_PATH . 'testowy.php'; $f = new ize; </php> {$f} Powita nas "Hello ize!" Czy pomiędzy tagami działają elementy IPB? Nie sprawdzałem tego dogłębnie, ale raczej TAK. Przykładowo definicja z pliku initdata.php <php> $df = CP_DIRECTORY; </php> {$df} Poprawnie wyświetli nazwę naszego folderu admina.
-
Wyłączanie dymka po najechaniu na nazwę użytkownika
Macsch15 opublikował(a) temat w Tutoriale i porady
Aby wyłączyć dymki: które pojawiają się po najechaniu myszką na login użytkownika przechodzimy kolejno do: ACP Look & Feel W�asny styl Global Templates userHoverCard Zamieniamy całą zawartość: <if test="canSeeProfiles:|:$member['member_id'] && ( $this->memberData['g_is_supmod'] || ($this->memberData['g_mem_info'] && ! IPSMember::isInactive($member) ) )"> <a hovercard-ref="member" hovercard-id="{$member['member_id']}" class="_hovertrigger url fn name <if test="hasClassName:|:isset($member['_hoverClass'])"> {$member['_hoverClass']}</if>" href='{parse url="showuser={$member['member_id']}" template="showuser" seotitle="{$member['members_seo_name']}" base="public"}' title='<if test="hasTitle:|:!empty($member['_hoverTitle'])">{$member['_hoverTitle']}<else />{$this->lang->words['view_profile']}</if>'><span itemprop="name">{$member['members_display_name']}</span></a> <else /> {$member['members_display_name']} </if> Na: <if test="canSeeProfiles:|:$member['member_id'] && ( $this->memberData['g_is_supmod'] || ($this->memberData['g_mem_info'] && ! IPSMember::isInactive($member) ) )"> <a href='{parse url="showuser={$member['member_id']}" template="showuser" seotitle="{$member['members_seo_name']}" base="public"}' title='{$this->lang->words['view_profile']}'><span itemprop="name">{$member['members_display_name']}</span></a> <else /> {$member['members_display_name']} </if> Zapisujemy. Gotowe. -
Poradnik dla wersji 3.3.4 (Poradnik dla wersji 3.2.x: http://forum.invisio...dla-wszystkich/) Jeżeli chcesz aby ostrzeżenia były widoczne dla wszystkich użytkowników przejdź kolejno do: ACP Look & Feel W�asny styl Global Templates userInfoPane Wyszukaj: <if test="authorwarn:|:$author['show_warn']"> <li> <if test="hasWarningId:|:$options['wl_id']"> <img src='{$this->settings['img_url']}/warn.png' class='clickable' onclick='warningPopup( this, {$options['wl_id']} )' title='{$this->lang->words['warnings_issued']}' /> </if> <a class='desc lighter blend_links' href='{parse url="app=members&module=profile§ion=warnings&member={$author['member_id']}&from_app={$this->request['app']}&from_id1={$contentid}&from_id2={$options['id2']}" base="public"}' id='warn_link_{$contentid}_{$author['member_id']}' title='{$this->lang->words['warn_view_history']}'>{parse expression="sprintf( $this->lang->words['warn_status'], $author['warn_level'] )"}</a> </li> </if> Zamień na: <if test="$this->memberData['member_id']"> <li> <if test="hasWarningId:|:$options['wl_id']"> <img src='{$this->settings['img_url']}/warn.png' class='clickable' onclick='warningPopup( this, {$options['wl_id']} )' title='{$this->lang->words['warnings_issued']}' /> </if> <a class='desc lighter blend_links' href='{parse url="app=members&module=profile§ion=warnings&member={$author['member_id']}&from_app={$this->request['app']}&from_id1={$contentid}&from_id2={$options['id2']}" base="public"}' id='warn_link_{$contentid}_{$author['member_id']}' title='{$this->lang->words['warn_view_history']}'>{parse expression="sprintf( $this->lang->words['warn_status'], $author['warn_level'] )"}</a> </li> </if> Informacja: Jeżli chcesz aby użytkownicy widzieli tylko punkty ostrzeżeń (bez powodów) zignoruj dalszą część poradnika. Teraz otwórz plik: admin applications members modules_public profile warnings.php Odszukaj: $pass = FALSE; $this->canWarn = FALSE; $modType = NULL; if( $this->memberData['member_id'] ) { Dodaj poniżej: if($this->memberData['member_id']){ $pass = true; } Wynik (zalogowany jak "test"):
-
Uruchamianie konwertera na hostingu z zablokowaną funkcją glob()
Macsch15 opublikował(a) temat w Tutoriale i porady
Mimo że glob() powinien być włączony na większości hostingach to niektóre "ze względów bezpieczeństwa" zakazują jego użycia. Rodzi się z tym problem bo konwerter IPS wczytuje nie wszystkie pliki forów dostępnych do przeniesienia. Wyświetla nam się wówczas błąd: Warning: glob() has been disabled for security reasons... Aby temu zapobiec otwieramy plik admin\applications_addon\ips\convert\modules_admin\setup\setup.php Znajdujemy: foreach (glob(IPS_ROOT_PATH.'applications_addon/ips/convert/modules_admin/'.$this->request['sw'].'/*.php') as $file) { require_once $file; $options[] = $this->html->convertAddOption($info); } I zamieniamy go na: foreach(new DirectoryIterator(IPS_ROOT_PATH . 'applications_addon/ips/convert/modules_admin/' . $this->request['sw']) as $files){ if($files -> isFile() && strpos($files -> getFilename(), '.php', true)){ require_once IPS_ROOT_PATH . 'applications_addon/ips/convert/modules_admin/' . $this->request['sw'] . '/' . $files -> getFilename(); $options[] = $this->html->convertAddOption($info); } } Zapisujemy i wysyłamy plik -
phpBB 3 hash'uje każdy bbcode aby ten był wydajny. Konwenter IPS usuwa te losowe znaki, jednak nie wszystkie. Zostają te w listach ([ list ]), wygląda to tak po konwersji: Aby temu zaradzić musimy dopisać nowe wyrażenie regularne w plikach konwentera phpBB. Przechodzimy kolejno do: admin\applications_addon\ips\convert\modules_admin\board\phpbb.php Wyszukujemy: $text = preg_replace( "#\[/([^\]:]*) [^\]]*)\]#" , "[/$1]", $text ); Dodajemy POD nim: $text = preg_replace('/\[(\*):\w+\]/', '[$1]', $text); Zapisujemy plik i wysyłamy. Po tej operacji aby zmiany były widoczne musimy ponownie przeprowadzić konwersję postów i tematów. Efekt:
-
Zmiana wyświetlanych danych w początkowym wykresie rejestracji
Macsch15 opublikował(a) temat w Tutoriale i porady
Domyślnie wykres w panelu administratora pokazuje ilość rejestracji z ostatnich 7 dni. Ale co jeżeli chcemy żeby tam widniały inne dane (statystyki) z ostatnich dni? przykładowo tematy albo posty? Jest to prosta sprawa, wystarczy zmodyfikować zapytanie w pliku: admin\applications\core\modules_admin\system\charts.php Jeżeli chcemy aby wykres pokazywał ilość tematów w ciągu ostatnich 7 dni: Wyszukujemy: $this->DB->build( array( 'select' => 'member_id, joined', 'from' => 'members', 'where' => 'joined > ' . $cutoff ) );Zamieniamy na: $this->DB->build( array( 'select' => 'start_date', 'from' => 'topics', 'where' => 'start_date > ' . $cutoff ) );Wyszukujemy: $_key = strftime( '%Y-%m-%d', $r['joined'] + $_tzOffset );Zamieniamy na: $_key = strftime( '%Y-%m-%d', $r['start_date'] + $_tzOffset );Jeżeli chcemy aby wykres pokazywać ilość postów w ciągu ostatnich 7 dni: Wyszukujemy: $this->DB->build( array( 'select' => 'member_id, joined', 'from' => 'members', 'where' => 'joined > ' . $cutoff ) );Zamieniamy na: $this->DB->build( array( 'select' => 'post_date', 'from' => 'posts', 'where' => 'post_date > ' . $cutoff ) );Wyszukujemy: $_key = strftime( '%Y-%m-%d', $r['joined'] + $_tzOffset );Zamieniamy na: $_key = strftime( '%Y-%m-%d', $r['post_date'] + $_tzOffset );Teraz pozostaje zmienić frazy tłumaczenia (jeżeli chcemy). Look & Feel Manage Languages Twój język Modyfikujemy frazę klucza reg_chart_stats i no_reg_x_days. Przykładowy wynik modyfikacji:-
- 1
-
-
Konwersja z Mybb do IPB - jak?
Macsch15 odpowiedział(a) na {S}zyme{k} temat w Programowanie / tworzenie styli
https://www.invisionpower.com/services/migrate -
http://forum.invisionize.pl/topic/46637-fora-w-zak%C5%82adce-strony/
-
usunięcie index.php?/ z adresu strony
Macsch15 odpowiedział(a) na Krasnalweb temat w Ogólny support IPS4
Wpisz w wyszukiwarkę ACP mod_rewrite a następnie włącz Włączyć przepisywanie adresów URL? -
Upgrade do wersji 4.1 - ipb_ccs_databases' doesn't exist
Macsch15 odpowiedział(a) na i386x temat w Ogólny support IPS4
Miałeś IP.Content na wersji poprzedniej? -
Upgrade IP.Board do IPS Community Suite
Macsch15 odpowiedział(a) na i386x temat w Ogólny support IPS4
Jeżeli masz apache, dodaj do .htaccess: <FilesMatch "\.(ttf|otf|eot|svg|woff)$"> <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule> </FilesMatch> Jeżeli nginx: location ~* \.(eot|ttf|woff)$ { add_header Access-Control-Allow-Origin *; } -
IPB 4.1.1: Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: nginx/1.8.0 Server Hostname: php.dev Server Port: 80 Document Path: /ipb41/ Document Length: 192 bytes Concurrency Level: 1000 Time taken for tests: 1.270 seconds Complete requests: 10000 Failed requests: 9052 (Connect: 0, Receive: 0, Length: 9052, Exceptions: 0) Non-2xx responses: 9766 Total transferred: 11140262 bytes HTML transferred: 9555262 bytes Requests per second: 7873.17 [#/sec] (mean) Time per request: 127.014 [ms] (mean) Time per request: 0.127 [ms] (mean, across all concurrent requests) Transfer rate: 8565.35 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 4 11.5 0 76 Processing: 1 19 86.7 3 871 Waiting: 0 18 86.7 3 871 Total: 2 23 88.7 4 878 Percentage of the requests served within a certain time (ms) 50% 4 66% 5 75% 7 80% 8 90% 48 95% 61 98% 434 99% 540 100% 878 (longest request) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: nginx/1.8.0 Server Hostname: php.dev Server Port: 80 Document Path: /ipb41/ Document Length: 192 bytes Concurrency Level: 1000 Time taken for tests: 1.452 seconds Complete requests: 10000 Failed requests: 9463 (Connect: 0, Receive: 0, Length: 9463, Exceptions: 0) Non-2xx responses: 9704 Total transferred: 13216278 bytes HTML transferred: 11618028 bytes Requests per second: 6886.36 [#/sec] (mean) Time per request: 145.215 [ms] (mean) Time per request: 0.145 [ms] (mean, across all concurrent requests) Transfer rate: 8887.89 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 5 11.9 1 74 Processing: 2 30 91.7 12 847 Waiting: 1 29 91.5 10 841 Total: 5 35 94.8 14 876 Percentage of the requests served within a certain time (ms) 50% 14 66% 17 75% 19 80% 21 90% 70 95% 80 98% 492 99% 583 100% 876 (longest request)
-
Kilka użytkowników na jednym adresie IP
Macsch15 odpowiedział(a) na Pakoss temat w Ogólny support IPB
Muszą być dwie osobne sesje, możesz korzystać z dwóch kont na np. dwóch różnych przeglądarkach WWW. -
Też uważam że pomysł trafiony.
-
Metody przechowywania danych na serwerze
Macsch15 odpowiedział(a) na glaedrem temat w Ogólny support IPS4
Jak duże forum? Jaka specyfikacja serwera? -
Spolszczenie modyfikacji (DP30) Birthday in Register Form
Macsch15 odpowiedział(a) na Szelc temat w Modyfikacje - pomoc
Każdy plik w naszej bazie posiada swój własny temat z supportem. Proszę pisać w nim, by nie utrudniać niepotrzebnie życia innym użytkownikom i by gromadzić w jednym miejscu sprawy związane z daną modyfikacją. Popularne modyfikacje/aplikacje: Forum Icons - http://forum.invisionize.pl/topic/28030-dp32-forum-icons/ Mass PM - http://forum.invisionize.pl/topic/4143-dp32-mass-pm/ Top Reputation - http://forum.invisionize.pl/topic/26224-dp32-top-reputation/ Pages - http://forum.invisionize.pl/topic/37532-dp34-pages/ Localize Board - http://forum.invisionize.pl/topic/9740-dp34-localize-board/ iHost - http://forum.invisionize.pl/topic/37054-dp34-ihost/ Jeżeli w powyższych linkach nie ma modyfikacji związanej z tym tematem, a autor nie może odnaleźć prawidłowego w wyszukiwarce - można skontaktować się poprzez prywatną wiadomość na forum z osobą zamykającą temat. Dziękujemy! -
Wyślij poprzez zgłoszenie poprawną nazwę tematu. Do tego czasu zostaje zamknięty.
-
Masz jakiś błąd w konfiguracji serwera.
-
Spolszczenie - jak ustawić polski jako domyślny?
Macsch15 odpowiedział(a) na Szelc temat w Ogólny support IPB
Przy edycji języka masz możliwość ustawienia jego jako domyślnego: -
Automatyczna wiadomość Temat przeniesiony z forum Invision Power Board → Spolszczenia → Błędy spolszczeń do Invision Power Board → Invision Power Board 4 → Ogólny support IPB
-
Powinno działać już bez zmian.
-
Edytuj język i "Lokalizacja" ustaw na "- Mojej lokalizacji nie ma na liście -" a potem w pole wpisz pl_PL.UTF-8.
-
Wszystko gra. Pamiętaj aby używać wersji UTF-8, w momencie kiedy przełączyłem się na ISO-8859-2 też są krzaki:
-
Nie moge się zalogować do panelu admina
Macsch15 odpowiedział(a) na fiftak10 temat w Ogólny support IPB
Nie mam pojęcia o czym Ty piszesz? jakie ID? To nie jest błąd IPB, pisałeś do hostingu? -
spolszczenie IPB Shoutbox v1.4.1
Macsch15 odpowiedział(a) na Qmis temat w Aplikacje pakietu IPS Community
http://forum.invisionize.pl/files/file/152-if-ipb-shoutbox-141/
