Jump to content
Sign in to follow this  

Jak odnaleźć interesującą klasę do rozszerzenia? - Czyli jak zacząć tworzyć hooki

Spanner

111 views

Coraz więcej osób próbuje swoich sił w tworzeniu dodatków do Invision Community. Cieszy mnie to, tym bardziej że sporo tych osób szuka pomocy na tym forum, dzięki czemu cały czas nasza społeczność się rozwija. Jednym z częściej pojawiających się problemów jest odnalezienie się w całym dobrodziejstwie przestrzeni nazw IPS.

W tym krótkim wpisie pokażę Ci jak znaleźć odpowiednią klasę, którą możemy rozszerzyć. Najlepszą metodą nauki, którą stosuję w moim kursie programowania w Invision Community, jest praktyka 🙂 

Dlatego przejdę od razu rzeczy. Załóżmy, że mamy taki link: https://www.ipsbeyond.pl/store/product/59-payment-gateways/ i chcemy dodać nową pozycję w formularzu zakupu.

W pierwszej kolejności musimy znaleźć kontroler dla tej treści. Najprostszą metodą, aby go znaleźć jest rozszyfrowanie linku. W związku z tym otwieramy plik furl.json, który pokaże nam ścieżkę do pliku kontrolera. Ponieważ wiemy, że jest to sklep pliku furl.json szukamy w katalogu: /applications/nexus/data/furl.json i tam szukamy takiego fragmentu:

furl.json.jpg

W związku z tym widzimy, że kontrolerem dla widoku produktu jest applications/nexus/modules/front/store/product.php. Domyślną metodą, która jest zawsze wywoływana w pierwszej kolejności jest

protected function manage()

Teraz szukamy w tej metodzie, czegoś, co jest związane z formularzem... Znajdujemy tam taki kod:

 $this->_getForm( $package, $inCart

Dzięki temu wiemy teraz, że żeby coś dodać do formularza musimy użyć tej metody.

Teraz idźmy dalej. Jak zamienić ten plik applications/nexus/modules/front/store/product.php na klasę, którą będziemy rozszerzać w hooku. Zasada jest taka:

\IPS\folder_aplikacji\reszta

Zacznę tłumaczenie od końca. Aby wiedzieć, jaka ma być reszta, musimy odpowiedzieć na pytanie, jaki plik wykorzystujemy.

Jeśli używamy plików z katalogu sources resztą, będzie po prostu nazwa katalogu np. Package i w zależności od tego, czy używamy z tego katalogu pliku Package.php, czy innego to reszta może być rozbudowana lub nie. Jeśli bierzemy plik Package.php to używamy nazwy klasy:

\IPS\nexus\Package

Jeśli weźmiemy np. plik Item.php to klasa będzie:

\IPS\nexus\Package\Item

W przypadku kontrolerów treści sprawa jest bardziej rozbudowana.

Wracając do naszego pliku: applications/nexus/modules/front/store/product.php

klasa dla tego pliku będzie:

\IPS\nexus\modules\front\store\product

 

Mam nadzieję, że teraz wybór odpowiedniej klasy będzie dla Was prostszy. Jeśli macie jakieś pytania związane z tym tematem to zapraszam do komentowania

  • Like 1


0 Comments


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Dołącz do pierwszego newslettera Invision Community

×
×
  • Create New...

Important Information

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.