Drupal - Własne Content Type

Drupal - Własne Content Type
DO
  • Rejestracja:około 9 lat
  • Ostatnio:około 6 lat
  • Lokalizacja:Warszawa
  • Postów:213
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.

DO
  • Rejestracja:około 9 lat
  • Ostatnio:około 6 lat
  • Lokalizacja:Warszawa
  • Postów:213
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?

edytowany 3x, ostatnio: Doggye
czysteskarpety
czysteskarpety
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Piwnica
  • Postów:7697
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ć


DO
  • Rejestracja:około 9 lat
  • Ostatnio:około 6 lat
  • Lokalizacja:Warszawa
  • Postów:213
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. .

czysteskarpety
czysteskarpety
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Piwnica
  • Postów:7697
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ć


DO
Ok, dzięki za info. Póki co dobrze mi się w tym pracuje, a na celu mam przede wszystkim zbudowanie jakiegoś portfolio więć kilka bajerów napisanych samemu plus ciekawy motyw na całą stronę mam nadzieje, że nie będzie złym pomysłem na start ;P
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)