Witam,
zabrałem się za tworzenie swojego pierwszego modułu. Używam najnowszej wersji contao czyli 3.1.3 i próbuje stworzyć moduł według tutorialu z CDCollection. Niestety juz na początkowym etapie widać, że trochę sie pozmieniało i definicję bazy danych nie umieszcza sie w pliku database.sql (mylę się?) tylko w pliku tl_cds.php (dla tego przykladu).
Ale pojawaja sie schody, po utworzeniu modułu nie tworzy się aytoamtycznie tabela tl_cds, a w menu panelu administratora nie widać nic poza jedną pozycją: cd_collection w menu Content.
Po ręcznym dodaniu tabeli dodatkowo pojawia się możliwość dodawania rekordów dla modułu ale nadal nie widać reszty menu, jest tylko Content->cd_colletion
1. Co zrobić aby tabele modułu automatycznie dodawały sie do bazy
2. Co może być przyczyna problemow z menu?
Witamy na polskim forum Contao
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!
Na co zwrócić uwagę przy tworzeniu modułu.
Rozpoczęty przez Muszyk, paź 17 2013 21:13
#2
Napisano 18 października 2013 - 06:53
Przenoszę temat do odpowiedniego działu. Niestety artykuł na Contao.pl jest nieaktualny. Jedyny aktualny tutorial jest po angielsku i znajduje się na moim blogu http://blog.qzminski...the-basics.html
Codefog - Contao web development
#3
Napisano 20 października 2013 - 00:43
Kamil, dziękuję ci bardzo, bardzo mi pomógł ten tutorial, teraz zrozumiałem jak się tworzy moduły.
Mam jednak problem, chciałbym stworzyć moduł, który będzie działał trochę tak jak custom menu. Na każdej podstronie chcę na dole umieszczać 2,3 boxy z obrazkem i krótką treścią, tytułem i być może z opisem prowadzące do ręcznie wybranych podstron serwisu. a każdej podstronie te boxy mogą być różne. Z custom menu nie byłoby problemu, utworzyłbym moduł custom menu dla każdej podstrony i ręcznie bym wybrał cel.
Zacząłem tworzyć własny moduł, opis, obrazek to nie problem, utknąłem na etapie wyboru podstrony. W custom menu jest przycisk Change selection, gdzie za pomocą chceckboxów mozna wybrać podstrony, w moim przypadku lepsze by było wybieranie za pomocą radio jak przy Quick navigation.
Przejrzałem manual w części dotyczący DCA ale nie udało mi się znaleźć żadnej wskazówki jak utworzyć taki przycisk z wyborem podstron serwisu. Może masz jakąś sugestie jak się do tego zabrać?
Mam jednak problem, chciałbym stworzyć moduł, który będzie działał trochę tak jak custom menu. Na każdej podstronie chcę na dole umieszczać 2,3 boxy z obrazkem i krótką treścią, tytułem i być może z opisem prowadzące do ręcznie wybranych podstron serwisu. a każdej podstronie te boxy mogą być różne. Z custom menu nie byłoby problemu, utworzyłbym moduł custom menu dla każdej podstrony i ręcznie bym wybrał cel.
Zacząłem tworzyć własny moduł, opis, obrazek to nie problem, utknąłem na etapie wyboru podstrony. W custom menu jest przycisk Change selection, gdzie za pomocą chceckboxów mozna wybrać podstrony, w moim przypadku lepsze by było wybieranie za pomocą radio jak przy Quick navigation.
Przejrzałem manual w części dotyczący DCA ale nie udało mi się znaleźć żadnej wskazówki jak utworzyć taki przycisk z wyborem podstron serwisu. Może masz jakąś sugestie jak się do tego zabrać?
#4
Napisano 21 października 2013 - 07:15
Spróbuj tak:
$GLOBALS['TL_DCA']['tl_module']['fields']['moje_strony'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_module']['moje_strony'], 'exclude' => true, 'inputType' => 'fileTree', 'eval' => array('fieldType'=>'radio', tl_class'=>'clr'), 'sql' => "int(10) unsigned NOT NULL default '0'" );
Codefog - Contao web development
#5
Napisano 21 października 2013 - 23:16
Dzięki, zadziałało.
Coraz lepiej się czuję w tym Contao ale nie jest łatwo
Do pełni szczęścia pozostało mi jeszcze jedno. W tym momencie utworzyłem moduł podobny do cd_collection. Aby wstawić linki na stronę muszę utworzyć moduł w Themes i następnie dodać go do strony, co jest 1) niewygodne 2) wyświetlają mi się wszystkie utworzone wpisy.
Ideałem byłoby uzyskać efekt podobny do dodawania formularza czyli w module tworzę nową pozycję i w artykule mogę konkretna pozycję dodać tak aby tylko ona jedna się pojawiała.
To drugie pewnie jest do rozwiązania w moim odpowiedniku ModuleCdList.php, kwestia tylko uzyskania id artykułu.
Pewnie problem nie jest prosty ale może jakaś podpowiedź, w którym iść kierunku.
Coraz lepiej się czuję w tym Contao ale nie jest łatwo
Do pełni szczęścia pozostało mi jeszcze jedno. W tym momencie utworzyłem moduł podobny do cd_collection. Aby wstawić linki na stronę muszę utworzyć moduł w Themes i następnie dodać go do strony, co jest 1) niewygodne 2) wyświetlają mi się wszystkie utworzone wpisy.
Ideałem byłoby uzyskać efekt podobny do dodawania formularza czyli w module tworzę nową pozycję i w artykule mogę konkretna pozycję dodać tak aby tylko ona jedna się pojawiała.
To drugie pewnie jest do rozwiązania w moim odpowiedniku ModuleCdList.php, kwestia tylko uzyskania id artykułu.
Pewnie problem nie jest prosty ale może jakaś podpowiedź, w którym iść kierunku.
#6
Napisano 22 października 2013 - 06:55
Z tego co rozumiem to potrzebujesz nowego elementu treści (content element). Krótka instrukcja jak taki utworzyć:
1. Utworzyć nowy plik /elements/ContentWlasny.php na bazie /system/modules/core/elements/ContentHtml.php (+ ewentualnie plik szablonu).
2. Zarejestrować go w config.php (zmienna $GLOBALS['TL_CTE']) i autoload.php.
3. Dodać nowe pole (do wyboru konkretnej pozycji) i paletę (tego elementu) do tl_content.
4. W pliku ContentWlasny.php pobrać wybraną pozycję z bazy, przetworzyć i przypisać do templatki.
Jeżeli czegoś nie będziesz wiedział to patrz w kod źródłowy, bo to najlepsze źródło nauki A jak to nie pomoże to pytaj tutaj śmiało!
1. Utworzyć nowy plik /elements/ContentWlasny.php na bazie /system/modules/core/elements/ContentHtml.php (+ ewentualnie plik szablonu).
2. Zarejestrować go w config.php (zmienna $GLOBALS['TL_CTE']) i autoload.php.
3. Dodać nowe pole (do wyboru konkretnej pozycji) i paletę (tego elementu) do tl_content.
4. W pliku ContentWlasny.php pobrać wybraną pozycję z bazy, przetworzyć i przypisać do templatki.
Jeżeli czegoś nie będziesz wiedział to patrz w kod źródłowy, bo to najlepsze źródło nauki A jak to nie pomoże to pytaj tutaj śmiało!
Codefog - Contao web development
#11
Napisano 02 listopada 2013 - 19:05
Tak właśnie się stało
Udało mi się oczywiście stworzyć nowy element treści. Udało mi się tez znaleźć opcję Użyj istniejącego elementu treści aby wstawiać go na inne podstrony bez potrzeby ponownego definiowania.
Ale do pełni szczęścia potrzebuję aby zdefiniować go w inny sposób, o którym pisałem wcześniej, coś jak formularz.
Opisując to na przykładzie modułu z twojego bloga. Tworzysz tam kolejne albumy, ale wstawiając moduł na stronę otrzymujesz listę wszystkich albumów. Jak zrobić aby w momencie dodawania ich do strony była możliwość wybrania jednego konkretnego spośród nich?
Udało mi się oczywiście stworzyć nowy element treści. Udało mi się tez znaleźć opcję Użyj istniejącego elementu treści aby wstawiać go na inne podstrony bez potrzeby ponownego definiowania.
Ale do pełni szczęścia potrzebuję aby zdefiniować go w inny sposób, o którym pisałem wcześniej, coś jak formularz.
Opisując to na przykładzie modułu z twojego bloga. Tworzysz tam kolejne albumy, ale wstawiając moduł na stronę otrzymujesz listę wszystkich albumów. Jak zrobić aby w momencie dodawania ich do strony była możliwość wybrania jednego konkretnego spośród nich?
#12
Napisano 02 listopada 2013 - 22:49
Musisz dodać nowe pole do tl_content, w którym będziesz wybierać wybrany rekord.
A potem w elemencie pobierasz wybrany rekord $this->moje_pole.
$GLOBALS['TL_DCA']['tl_content']['palettes']['moj_element'] = '{type_legend},type,headline;{protected_legend:hide},protected;{text_legend},moje_pole;{expert_legend:hide},guests,cssID,space;{invisible_legend:hide},invisible,start,stop'; $GLOBALS['TL_DCA']['tl_content']['fields']['moje_pole'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_content']['moje_pole'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => 'tl_tabela.tytul', 'eval' => array('chosen'=>true, 'tl_class'=>'w50'), 'sql' => "int(10) unsigned NOT NULL default '0'" );
A potem w elemencie pobierasz wybrany rekord $this->moje_pole.
Codefog - Contao web development
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych użytkowników