Drupal - Własne Content Type

0

Cześć,

Mam problem z własnym Content Type w Drupalu i nie wiem jak najwydajniej sobie z tym poradzić. O Drupalu cokolwiek zacząłem czytać wczoraj więc moja wiedza na ten temat jest minimalna a w necie gotowca nie widzę (trafiłem tylko wskazówki, że trzeba to napisać samemu).

Uproszczę całość na przykładzie szkoły:

Potrzebuje stworzyć Content Type nazwany powiedzmy NAUCZYCIEL (pola to: nazwisko, zdjęcie, opis).
Do tego potrzebuję stworzyć drugi Content Type o nazwie LEKCJA, gdzie jako jedno z pól powinno ciągnąć się z listy rozwijanej nazwisko NAUCZYCIELA spośród tych utworzonych wcześniej.

Następnie taką LEKCJE chce umieścić na grafiku tygodniowym wraz z informacją o wykładowcy i przedziale godzin trwania zajęć (jakieś moduły kalendarza widziałem, ale chyba ogarnę to zwykłą listą rozwijaną).

Z tego co widzę w czystym Drupalu nie można się chyba odwoływać do pól innych Content Typów stąd pytanie do Was czy znacie jakieś moduły, żeby rozwiązać mój problem, czy też szybciej napisze własnoręcznie moduł odpowiedzialny za coś takiego (z kwestią techniczną sobie chyba poradzę, jednak z tego co widzę prościej jest dodać nowy moduł komunikujący się z bazą za pomocą formularzy umieszczonych w bloku na zwykłej stronie niż dodać dodatkowe pole ciągnące wartości z bazy do Field Types podczas tworzenia pól nowego Content Type)

Wtedy jednak będę chyba też musiał część obsługi CMS przenieść do blocków na stronie gdzie dojdą zabawy z filtrowaniem i reszta pierdół z tym związana oraz strona podzieli się na część zarządzaną z paneli admina w Drupalu i część zarządzaną bezpośrednio na stronie co nie będzie zbyt satysfakcjonujące.

0

Rozumiem, że będzie ciężko o jakieś podpowiedzi więc może chociaż zamieszczę informację jak sobie poradziłem z tym problemem, a ktoś bardziej doświadczony oceni czy to dobry sposób na przyszłość (ale skoro działa to chyba dobry:P)

Napisałem moduły odpowiedzialne, za tworzenie odpowiednich tabel w bazie danych tworząc w ten sposób własne odpowiedniki Content Typów (nauczyciel, sala, przedmiot, uczniowie), dodałem formularze wrzucane do bloków na stronę odpowiedzialne za tworzenie/edycje/usuwanie tych CT, dodatkowy element odpowiedzialny za wyświetlanie i zapisywanie się na zajęcia z poziomu widoku "Planu Lekcji" oraz listę obecności, a całość ciągnie się na bieżąco z bazy danych.

Dodatkowo z tych CT buduje się dynamicznie część strony (np. w navbarze jest zakłądka NAUCZYCIELE, po kliknieciu pojawia się strona z listą nauczycieli (fotka, krotki opis) Po kliknięciu w, któregoś z nich przechodzimy na ich profil ze wszystkimi szczegółami... tak samo dla sal i przedmiotów) oraz kilka innych usprawnień i dupereli, o których chyba nie będę pisał bo nie do końca o tym temat.

Do poszczególnych elementów modułów napisałem możliwość dodawania uprawnien różnym poziomom użytkowników (Dyrektor - admin, nauczyciele, recepcja, uczniowie).

Całość zarządzania stroną odbywa się z poziomu formularzy i zakładek bez zagłębiania się w to wszystko z poziomu Drupala, który w tym wypadku służy mi jedynie jako silnk plus gotowe narzędzie do nadawania uprawnien, użytkowników, łatwej edycji templatów, oraz wymusza pewne wzorce (co uważam za plus jako, że wciąż jestem newbie w programowaniu :P).

Dopiero co dowiedziałem się o takim narzędziu i fajnie byłoby poznać sposoby jego wykorzystywania przez kogoś kto pracuje z czymś takim.

Następnym krokiem będzie napisanie nowego motywu na całą stronę i nie bardzo jeszcze wiem jak się za to zabrać jeżeli chodzi o urządzenia mobilne.
Chyba powinienem napisac osobne pliki CSS do modułów i osobno pod motyw całej strony skupiając się w modułach na wielkościach relatywnych nie?

0

a w siódemce nie ma już czasem Field UI gdzie możesz te pola dowolnie zmieniać? dodawać widgety, operacje itp.

dodatkowo tworzenie od postaw szablonów motywu jest trochę wymyślaniem koła od nowa wszak po to jest cms żeby nie trzeba się było z tym katować

0

Pisząc o Field UI masz na myśli edycje pól przy tworzeniu własnego Content Type? Jeżeli tak to jest tam kilka predefiniowanych opcji tworzących typy wartości dla tych pól w dość prostej formie (od zwykłych pól jako pojemniki na liczby/text do tworzonych ręcznie list wyboru klucz|wartość, plików i obrazków).
Niestety albo jestem za mało mądry albo nie widzę tam możliwości, aby stworzyć dynamiczne pola dla wartości listy rozwijanej z określonych pól innego CT bądź jakiegokolwiek sposobu na odwołanie się do innego pola czy bazy danych

Trochę to skomplikowanie brzmi więc jeszcze raz co chciałem osiągnąć:

  1. Stworzyć CT Nauczyciel z polem IMIE_I_NAZWISKO.
  2. Stworzyć CT Lekcja i podczas tworzenia takiego CT dodać pole, gdzie mógłbym wybierać z dynamicznie tworzonej listy rozwijanej jednego z Nauczycieli (Nauczyciel może np. dostać pole Aktywny z wartościami 1/0 i na podstawie jego wartości modyfikowała by się list rozwijana i to czy byłby tam widoczny do wyboru).

Oczywiście wszystkie pola, włącznie z dniem tygodnia i godziną mógłbym ogarnąć tworząc pola tych CT osobno, jednak potrzebuje do działania całej strony zgodnie z moim pomysłem dynamicznego generowania pól wyboru (np. Nauczyciel X jest zajęty dnia Y o godzinie Z więc nie mogę go wybrać na inną lekcje w tym terminie) tak, żeby nie sprawdzać tego ręcznie.

Co do modułów/templatów/widgetów to imo póki co są niezwykle łatwe i szybkie w pisaniu, a przynajmniej przy tak prostej funkcjonalności jaką obecnie potrzebuję (Może dlatego, że wcześniej w ramach ćwiczeń po poradnikach i chęci utrwalenia podstaw zrobiłem podobną aplikację z własnym CMS pisząc każdą linijkę kodu w czystym PHP/SQL/JS/ więc nie jedno koło wymyśliłem od nowa i to co teraz dla jednych jest katowaniem się, dla mnie jest przyjemnością pisać na skróty z API Drupala:P).

Dodatkowo i tak muszę chyba napisać obsługę tego wszystkiego tworząc od nowa pewnie moduły/widgety (nawet jeszcze poprawnie nie rozróżniam pojęć - na szczęście wiem co i do czego służy w kodzie póki co wiec nie jest źle :P ), żeby to działało tak jak ja chce (np. "plan lekcji" gdzie po kliknięciu na lekcje wyskoczy mi odpowiedni formularz do zapisania się/rejestracji jeżeli użytkownik nie jest zarejestrowany czy kolor takiej lekcji na planie uzależniony od jej statusu (brak miejsc, wolne miejsca, zajęcia zostaną uruchomione po zapisaniu się odpowiedniej ilości osób itp.).
Mam też myślę bardzo ciekawy i nieszablonowy a zarazem czytelny pomysł na wygląd strony stąd decyzja o napisaniu całego motywu ręcznie.

Projekt chciałbym skończyć w całości zgodnie z moimi pomysłami jako pierwszy element do portfolio, więc nie spieszy mi się z nim jakoś strasznie, a pisanie pewnych rzeczy samemu również nie jest złym wyborem bo zawsze to dodatkowe doświadczenie. .

1

bo drupal to jest właśnie taki dla pasjonatów, raczej na taki jednorazowy projekt, bo nie chciałbym się babrać w przejściach 6->7->8 sporo czasu to zajmuje, a nie każdy chce płacić

1 użytkowników online, w tym zalogowanych: 0, gości: 1