Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Macsch15

Moderator
  • Postów

    9 938
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    22

Treść opublikowana przez Macsch15

  1. Automatyczna wiadomość Temat przeniesiony z forum Invision Power Board → Invision Power Board 4 → Modyfikacje - pomoc do Invision Power Board → Invision Power Board 4 → Ogólny support IPB
  2. Automatyczna wiadomość Temat przeniesiony z forum Invision Power Board → Invision Power Board 4 → Modyfikacje - pomoc do Invision Power Board → Invision Power Board 4 → Ogólny support IPB
  3. Automatyczna wiadomość Temat przeniesiony z forum Invision Power Board → Invision Power Board 4 → Modyfikacje - pomoc do Invision Power Board → Invision Power Board 4 → Ogólny support IPB
  4. https://www.invisionpower.com/demo
  5. <if test="!$this->request['module']"> ... </if>
  6. Automatyczna wiadomość Temat przeniesiony z forum Invision Power Board → Invision Power Board 4 → Ogólny support IPB do Invision Power Board → Invision Power Board 4 → Modyfikacje - pomoc
  7. Aktywuj opcję Enable X_FORWARDED_FOR IP matching w ACP.
  8. Warto wspomnieć o tym że niektóre hostingi nie dają możliwości zmiany parametrów php.ini.
  9. {{if !isset(\IPS\Request::i()->url()->data['query'])}} ... {{endif}} Aktualizacja: http://forum.invisionize.pl/topic/49763-wyświetlanie-diva-tylko-na-stronie-głównej/#comment-292336
  10. Aby mieć na forum m.in polskie formaty daty, musimy mieć na serwerze zainstalowane locale pl_PL, instalacja w przypadku Debiana/Ubuntu jest bezproblemowa i prosta. W konsoli uruchamiany polecenie: $ dpkg-reconfigure localesZ listy szukamy locale:en_US UTF-8 pl_PL ISO-8859-2 pl_PL UTF-8 UTF-8 Zaznaczamy je spacją a następnie Tab'em przenosimy kursor na <Ok> i zatwierdzamy enterem. Przy następnym ekranie możemy wybrać domyślne locale systemu, polecam zostawić en_US. Ponownie przenosimy kursor Tab'em na <Ok> i zatwierdzamy enterem.
  11. Poradnik napisany dla osób które mają problem z "białą stroną". Biała strona prawie zawsze skrywa pod sobą błędy które są wyciszane. Aby włączyć raportowanie tak, aby zamiast białej strony ukazał się błąd otwieramy plik initdata.php (który jest na najwyższym poziomie forum w systemie plików, tam gdzie index.php). Wyszukaj: /** * Exception error handler */ function IPS_exception_error( $error ) { @header( "Content-type: text/plain" ); print $error; exit(); } ?> Zamień na: /** * Exception error handler */ function IPS_exception_error( $error ) { @header( "Content-type: text/plain" ); print $error; exit(); } error_reporting(E_ALL & ~E_NOTICE); ini_set('display_errors', 'on'); ?> Zapisz plik i wyślij. Po odświeżeniu strony powinny ukazać się błędy.
  12. Jest to aktualizacja tego poradnika: http://forum.invisionize.pl/tutorials/article/44-usuwanie-znakow-diakrytycznych-z-linkow-wersji-34x/ Znajdź: /* Convert it */ if ( self::isUTF8( $text ) ) { if ( function_exists('mb_strtolower') ) { $text = mb_strtolower($text, 'UTF-8'); } $text = self::utf8Encode( $text, 250 ); } Zamień na: /* Convert it */ if ( self::isUTF8( $text ) ) { if ( function_exists('mb_strtolower') ) { $text = mb_strtolower($text, 'UTF-8'); } $text = self::convertAccents($text); $text = self::utf8Encode( $text, 250 ); }
  13. Polecenie "systeminfo" jest windows'ową alternatywą dla "top" w linuxach. Właściwie to... nie jest. Jego wczytanie zajmuje kilka/naście sekund podczas gdy odpowiednik na linuxa - natychmiastowo. To właśnie przez to polecenie, zakładka w panelu administratora "Zaawansowane" wczytuje się długo. Problem ten występuje zazwyczaj na localhost'ach. Aby zakładka wczytywała się normalnie, otwieramy plik: admin\applications\core\modules_admin\diagnostics\diagnostics.php Znajdujemy: $_shellExecAvail = in_array( 'shell_exec', $_disabled ) ? false : true; Następnie wklejamy POD nią: if(substr(strtolower(PHP_OS), 0, 3) == 'win') { $_shellExecAvail = false; } Zapisujemy i wysyłamy.
  14. 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:
  15. 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:
  16. Domyślnie IPB ukrywa adresy IP dla wszystkich z grupy "Administrator" (z dostępem do ACP), gdy jednak chcemy to zmienić aby tylko główny administrator (lub jakiś określony) miał ukryte IP a cała reszta nie - przechodzimy kolejno: Wygląd {Aktualny styl} Widok tematu post Look & Feel {Aktualny styl} Topic View post Znajdź: <if test="postAdmin:|:$post['author']['g_access_cp']"> <em>{$this->lang->words['ip_private']}</em> <else /> Zamień na: <if test="postAdmin:|:$post['author']['member_id'] == 1"> <em>{$this->lang->words['ip_private']}</em> <else /> Gdzie ['member_id'] == 1 tam identyfikator Twojego konta. Efekt:
  17. Odszukujemy plik: admin/sources/base/core.php Następnie funkcję: static public function makeSeoTitle( $text ) { Zmieniamy w niej: //$text = self::convertAccents($text); Na: $text = self::convertAccents($text); Zapisujemy plik i wysyłamy na serwer. Aby usunąć znaki z już istniejących tematów, wystarczy przebudować tematy: Tools & Settings Recount & Rebuild Resynchronize Topics Linki przed zmianą: index.php?/topic/2-c
  18. 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
  19. 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&section=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&section=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"):
  20. 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.
  21. 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.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.