Skocz do zawartości

Polecane posty

W niniejszym artykule chciałbym kontynuować dalej opis tworzenia własnych hooków. Teraz zajmiemy się hookiem przeładowującym funkcjonalność skinów. Mówiąc prościej, dzięki takim hookom, możemy zmienić zupełnie wygląd np. postów dla wybranych grup. Artykuł ten będzie opisywać jak dodać własną wiadomość błędu pod każdym postem.

Proces tworzenia hooków jest taki sam jak w artykule Tworzenie własnego hooka dlatego pominę tutaj sam proces dodawania hooka w ACP.

[ghide]

Jedyną różnicą podczas dodawania hooka w ACP jest ostatnia zakładka Pliki hook’a. Z menu rozwijanego wybieramy przeładowanie skina a w inpucie, który się pojawi wpisujemy skin_topic.

skinOverview.jpg

Przejdźmy teraz stworzenia pliku. Tworzymy nowy plik wiadomoscWPoscie.php w katalogu hooks i wklejamy taką zawartość:

/**
* SolutionrDEVs Application
* wiadomoscWPoscie
*
* @author Dawid Baruch <dawid.baruch@solutiondevs.pl>
* @copyright (c) 2005 - 2012 SolutionDEVs
* @package SolutionDEVs Apps
* @subpackage PHP
* @link http://www.solutiondevs.pl
* @version 1.0.0
*
*/



class wiadomoscWPoscie extends skin_topic(~id~)
{
function __construct( ipsRegistry $registry )
{
parent::__construct( $registry );

IPSText::getTextClass( 'bbcode' )->parse_html = 0;
IPSText::getTextClass( 'bbcode' )->parse_bbcode = 1;
IPSText::getTextClass( 'bbcode' )->parse_smilies = 1;
IPSText::getTextClass( 'bbcode' )->parsing_section = 'sd32_post_message';

$this->settings[ 'sd32_post_message' ] = IPSText::getTextClass( 'bbcode' )->preDisplayParse( $this->settings[ 'sd32_post_message' ] );
}

function post($post, $displayData, $topic, $forum=array())
{

$post['post']['post'] .= "
<p class="\&quot;message" error="" rounded\"="">{$this->settings[ 'sd32_post_message' ]}</p>";

return parent::post( $post, $displayData, $topic, $forum );
}
}
[/CODE]

Zasada tworzenia jest dość prosta podajemy nazwę naszej klasy zgodnie z tym co podaliśmy w ACP i po słowie extends podajemy nazwę szablonu jaki chcemy przeładować czyli skin_topic a po nim dajemy magiczne (~id~) co poinformuje IP.Board, że dla każdego skina będzie następować przeładowanie.

Metoda __construct() nie jest niezbędna, ale ponieważ przeładowujemy metodę post(), która jest za każdym razem wywoływana w pętli to w celach optymalizacyjnych lepiej jest zrobić parsowanie BBCodów z naszej wiadomości na początku wywoływania skryptu a nie za każdym razem w pętli.

Metoda post() na początku dodaje na końcu każdego posta wiadomość typu error z naszą wiadomością. Następnie wywoływana jest właściwa metoda post(), która ubierze w całą htmlową okładkę dane. Jeśli nie wywołalibyśmy parent::post wtedy post wyglądałby tak, jak zaprojektowaliśmy to w naszej metodzie post().

[/ghide]

[b][color=red]Zakaz rozpowszechniania bez zgody i wiedzy autora[/color][/b]

  • Like 2

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość
Temat jest zablokowany i nie można w nim pisać.

  • Podobna zawartość

    • Przez Spanner
      Niniejszy artykuł będzie poświęcony pisaniu własnych hooków. Jeśli szukasz zaawansowanych porad dotyczących tworzenia hooków to niestety się rozczarujesz. Przedstawię tutaj podstawowe informacje na temat tworzenia hooków tak aby początkujący użytkownicy znaleźli proste how to pisania własnych dodatków.

      Nie pozostaje mi nic innego jak zaprosić Cię do dalszej lektury.

      [ghide]
      Na samym początku przechodzi my w tryb developerski w tym celu należy edytować plik conf_global.php i zmienić linię:

      define('IN_DEV', 0); na define('IN_DEV', 1); Następnie wchodzimy do panelu administratora do zakładki zarządzanie hookami. Klikamy przycisk Utwórz nowy hook i wypełniamy pola: Zakładka Informacje o Hook'u Tytuł Hook'a: Nazwa hooka widoczna w ACP Opis Hook'a: Opis hooka widoczny w ACP Klucz Hook'a: Klucz po jakim hook będzie rozpoznawany w systemie Wersja Hook'a (czytelna dla człowieka): Wersja hooka w postaci np. 1.0.0 Wersja Hook'a (long-version): Wersja hooka w postaci np. 1000 Autor Hook'a: chyba jasne Adres e-mail autora: tutaj też jasne Strona WWW: tutaj także jasne Następnie przechodzimy do zakładki Pliki hook’a i klikamy na przycisk dodaj kolejny plik. Ponieważ nasz hook będzie wyświetlany tylko na stronie głównej w sdebarze to wypełniamy pola w następujący sposób: Nazwa pliku w katalogu hook'a: mojPierwszyHook.php Nazwa klasy pliku: mojPierwszyHook Typ pliku hook'a: Hook szablonu Grupa skinu dla hook'u: skin_boards Funkcja skina dla hook'a: boardIndexTemplate Rodzaj szablonu hook'a: pętla foreach 'ID' hooka: side_blocks Lokalizacja Hook'a: (na zewnątrz.pre) Przed rozpoczęciem pętli foreach Zapisujemy hook. Teraz przechodzimy do ustawień systemowych i klikamy dodaj nową grupę ustawień i wypełniamy formularz: Tytuł grupy ustawień?: Tutaj wpisujemy nazwę grupy ustawień dla naszego hooka Zakładka grupy ustawień: W jakiej zakładce ma się wyświetlać grupa ustawień Opis grupy ustawień?: Opis grupy ustawień Słowa kluczowe grupy ustawień: Tutaj podajemy klucz po jakim będą pobierane ustawienia Zapisujemy ustawienia. Następnie przechodzimy do szczegółów nowo dodanej grupy. Zobaczymy coś takiego. Klikamy na dodaj nowe ustawienia i wypełniamy formularz: Tytuł ustawienia?: Tytuł pod jakim będą widoczne nasze ustawienia Opis ustawienia?: Opis ustawienia Typ ustawienia?: tutaj możemy wybrać jakiego typu ma być dane ustawienie. W naszym przypadku damy Pełny edytor Klucz ustawienia?: Tutaj podajemy pod jakim kluczem będzie dostępne nasze ustawienie w $this->settings Zapisujemy ustawienia. Teraz możemy uzupełnić nasz edytor o pożądaną treść. Teraz przechodzimy do zakładki Skiny & Języki -> Look & feel -> Zarządzanie skinami -> dany skin -> klikamy na Dodaj nowy bit Nazwa bitu szablonu: Pod tą nazwą będzie widoczny szablon Dodaj do grupy: Tutaj wybieramy w jakiej grupie szablon ma się znajdować. W naszym przypadku wybierzemy skin_boards Zmienne: To pole służy do definiowania zmiennych, jakie będą przekazywane do szablonu. Wpisujemy tutaj $title i zapisujemy formularz Ponieważ pokażę na 2 sposoby jak wyświetlić treść, którą podaliśmy w edytorze w ustawieniach to wklejamy poniższy kod: <div class='ipsSideBlock clearfix'>
      <h3>{$this->lang->words['db32_my_first_hook_title']}</h3>
      <div class='_sbcollapsable'>
      {$this->settings[ 'db32_my_first_hook_editor' ]}
      <br />
      Ze zmiennej: {$title}
      </div>
      </div>[/code] Zapisujemy zmiany. Teraz udajemy się do zarządzania językami -> wybieramy dany język i klikamy w dodaj zasób językowy [b]Nazwa paczki:[/b] Tutaj podajemy w jakiej paczce mają się znajdować zasoby, w naszym przypadku public_boards [b]Klucz:[/b] Tutaj podajemy nazwę zasobu, którą użyliśmy w szablonie db32_my_first_hook_title [b]Domyślny tekst:[/b] Tutaj umieszczamy tekst, na który zostanie zamieniony zasób Teraz przechodzimy do zasadniczej części, czyli napiszemy kod odpowiedzialny za wyświetlenie naszego hooka. W katalogu /hooks tworzymy nowy plik: mojPierwszyHook.php a w nim tworzymy klasę mojPierwszyHook oraz metody tej klasy getOutput() oraz __construct(). Poniżej zamieszczony jest kod pliku: [code]<?php
      /**
      * SolutionDEVs Application
      * (DB32) Mój pierwszy Hook
      *
      * @author Spanner
      * @copyright (c) 2005 - 2012 SolutionDEVs
      * @package SolutionDEVs Apps
      * @subpackage PHP
      * @link http://www.solutiondevs.pl
      * @link http://www.ipsbeyond.pl
      * @version 1.0.0
      *
      */

      class mojPierwszyHook
      {
      private $registry;
      private $DB;
      private $memberData;
      private $settings;

      public function __construct()
      {
      $this->registry = ipsRegistry::instance();
      $this->DB = $this->registry->DB();
      $this->memberData =& $this->registry->member()->fetchMemberData();
      $this->settings =& $this->registry->fetchSettings();
      }

      public function getOutput()
      {
      /**
      * Ładujemy zasoby językowe
      */
      $this->registry->class_localization->loadLanguageFile( array( 'public_boards' ), 'core' );

      /**
      * Zamieniamy BBCody na kod HTML
      */
      IPSText::getTextClass( 'bbcode' )->parse_html = 0;
      IPSText::getTextClass( 'bbcode' )->parse_bbcode = 1;
      IPSText::getTextClass( 'bbcode' )->parse_smilies = 1;
      IPSText::getTextClass( 'bbcode' )->parsing_section = 'db32_my_first_hook_editor';

      $this->settings[ 'db32_my_first_hook_editor' ] = IPSText::getTextClass( 'bbcode' )->preDisplayParse( $this->settings[ 'db32_my_first_hook_editor' ] );

      /**
      * Wyświetlamy zawartość hooka
      */
      return $this->registry->getClass( 'output' )->getTemplate( 'boards' )->mojPierwszyHook( $this->settings[ 'db32_my_first_hook_editor' ] );
      }
      }
      ?> Ogólnie nie ma tutaj nic skomplikowanego na początku ładujemy plik z zasobami językowymi, następnie zamieniamy tekst z edytora zawierający BBCody na tagi HTML a następnie przekazujemy tą zmienną do szablonu oraz zwracamy sam szablon. Zapisujemy plik. Teraz wyłączamy tryb developerski. W pliku conf_global.php define('IN_DEV', 1); na define('IN_DEV', 0);

      Jeśli pojawił się tekst jak na screenie.



      To teraz pokażę jak wyeksportować taki hook. Włączamy tryb developerski. Logujemy się do ACP i przechodzimy do zarządzania hookami. Z menu rozwijanego wybieramy eksportuj hooka.




      Pojawi nam się strona w której musimy pozaznaczać parę opcji. W sekcji
      Eksportuj ustawienia, dodajemy nową pozycję a w niej odnajdujemy nasze ustawienia i je dodajemy.
      W sekcji eksportuj język postępujemy podobnie. Wybieramy z menu rozwijanego core_public_boards i w drugim oknie odnajdujemy i dodajemy dodany zasób.

      W sekcji eksportuj skiny postępujemy podobnie wybieramy z listy rozwijanej skin_boards a w drugim oknie odnajdujemy nasz bit szablonu, który dodawaliśmy.



      Klikamy na Eksportuj i zapisujemy plik na dysku. I tak oto stworzyliśmy nasz pierwszy hook.
      Plik z hookiem, który utworzyliśmy w tym artykule dołączony jest do tego tematu i możecie go pobrać oraz zmodyfikować według własnych potrzeb i uznania.[/ghide]

      Zakaz rozpowszechniania bez zgody i wiedzy autora
      (DB32) Mój pierwszy Hook.zip
  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies.