Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tworzenie własnego systemu cms
Forum PHP.pl > Forum > PHP
marcus753
Witajcie, mam mały dylemat. Otóż coraz częściej dostaje zlecenia na stworzenie pojedyncza stronę scrolowanej w pionie z dużą ilością fajerwerków css3 (animacje,interaktywne elementy itp.) Z punktu widzenia struktury czy podstron których przecież nie ma, korzystanie z gotowych cmsów jest jak strzelanie z armaty do wróbla w związku z tym chciałbym napisać coś samemu. I tu pojawia się problem a właściwie pytanie otwarte. W jaki sposób dać możliwość użytkownikowi zmieniania treści na stronie ? albo tworzymy jeden edytor w którym elementy specjalne widnieją w kodzie np. jako <<moj element,parametry>> i potem php zamienia to na właściwy element. Albo użytkownik dostaje stronę z polami do edycji które może oddzielnie edytować. Macie jakiś pomysł jak można by się do tego zabrać ? i która ścieżka byłaby najlepsza ? może znacie jeszcze jakieś inne rozwiązania ?

Pozdrawiam
markuz
klik - może coś takiego?
marcus753
dzięki za odpowiedź, sam się zastanawiam bo ani jedno ani drugie rozwiązanie nie jest idealne...
ogólnie strony mają mało tekstu a dużo bajerów pisanych w js + animacji css3 i jeśli wszystkie zaznaczałbym w edytorze to boje się że osoba zmieniająca potem jakiś akapit natrafiła by na drugie tyle parametrów i jakiś "dziwnych znaczków"

Z kolei drugie rozwiązanie może jest lepsze ale wtedy podpis pod każdym zdjęciem musiałby być osobnym polem w cmsie i w efekcie otrzymali byśmy z 300 oddzielnych pól do edycji treści...

tak źle i tak niedobrze facepalmxd.gif chyba żeby zastosować jakiś mechanizm mieszany ?
memory
Tworzysz panel administracyjny i tam jest możliwość edycji treści ?
marcus753
"Tworzysz panel administracyjny i tam jest możliwość edycji treści ?"
Lkingsmiley.png właśnie to chcę zrobić, pytanie tylko jak zrobić tą możliwość edycji treści ?
-czy całą stronę traktować jako jeden plik tekstowy poprzecinany dziesiątkami znaczników specjalnych w które z automatu wstawię gotowe elementy (galeria,grafika,gra,itp) czy może zrobić cały szablon normalnie a tylko w wybranych miejscach na stronie pobierać dane z bazy tylko że wtedy w naszym panelu do zarządzania będziemy mieli kilkadziesiąt/kilkaset pól do wypełnienia zmienną treścią...
markuz
Zawsze możesz zrobić tylko 1 tabelę w bazie danych. O strukturze np.

element
- id
- name
- clean_name
- content

Dodajesz elementy np. (1,'Zawartość nagłówka', 'header_h1', 'Witamy!');
Tworzysz jakąś ładną klasę i w szablonie:

  1. <h1><?php echo $elements->find('header_h1'); ?></h1>


Możesz też utworzyć tą klasę w ten sposób, że jezeli nie będzie pola np. 'header_h1' w bazie danych to utworzy go automatycznie z domyślną treścią. Wtedy tworzysz sobie szablon, dodajesz zmienną treść a potem po stronie administratora zmieniasz tylko pełne nazwy (żeby klient wiedział ocb.) i przykładową treść.
memory
Ja mam zrobione to za pomocą "sekcji" czy tam "list". Każda sekcja (slider,kontakt,galeria) jest elementem listy. Jeżeli klient z jakiś powodów będzie chciał stronę z kontaktem na 3 miejscu to sobie posortuje. Każda taka lista ma do wyboru moduł ( galeria,price table, kontakt itd) ,ustawienia (np tło sekcji itd) czy szablon. Wszystko zależy od twoich potrzeb.

Cytat
czy całą stronę traktować jako jeden plik tekstowy poprzecinany dziesiątkami znaczników specjalnych w które z automatu wstawię gotowe elementy

Dobre na jednorazową stronke
em1X
Jak dla mnie strzelanie z armaty to marnotrawienie własnego czasu na pisanie własnego CMS, kiedy tyle na rynku darmowych i solidnych rozwiązań.
szajens
Cytat(em1X @ 12.05.2014, 17:22:32 ) *
Jak dla mnie strzelanie z armaty to marnotrawienie własnego czasu na pisanie własnego CMS, kiedy tyle na rynku darmowych i solidnych rozwiązań.

Nic darmowego,a nawet komercyjnego nie będzie tak funkcjonalne i szybkie jak własny cms.
Wazniak96
Cytat(szajens @ 12.05.2014, 19:37:10 ) *
Nic darmowego,a nawet komercyjnego nie będzie tak funkcjonalne i szybkie jak własny cms.


Serio? A ja Ci udowodnię i napiszę tak szajsowaty, że zobaczymy. baaasmiley.gif
Koledze em1X nie chodziło o szybkość wykonywania się lecz o stracony czas na jego pisania. W końcu czas to pieniądz. A co jeśli klient sobie zażyczy w przyszłości rozbudowania strony? Kolejne marnowanie cennego czasu na rozbudowanie CMS lub przekładanie danych na "armatę". smile.gif
zegarek84
Cytat(marcus753 @ 12.05.2014, 15:38:26 ) *
-czy całą stronę traktować jako jeden plik tekstowy poprzecinany dziesiątkami znaczników specjalnych w które z automatu wstawię gotowe elementy (galeria,grafika,gra,itp) czy może zrobić cały szablon normalnie a tylko w wybranych miejscach na stronie pobierać dane z bazy tylko że wtedy w naszym panelu do zarządzania będziemy mieli kilkadziesiąt/kilkaset pól do wypełnienia zmienną treścią...

druga część akapitu to myślałem, że właśnie to chcesz uzyskaćquestionmark.gif a jeśli chodzi o wiele dodatkowych znaczników to chyba nie masz kodu js dodawanego w źródle strony?? a nawet jeśli to nie problem to przenieść do zewnętrznych wydzielonych plików i oprogramować stronę - rozwiązania miałbyś elastyczniejsze... a dane elementy szukać po przez znaczniki id bądź po klasach czy inne unikalne zagniezdrzenia/początki atrybutów w dobie nowych selektorów...
szczemp
Ja bym to zrobił tak:
Podzielić panel niejako na dwie części. W jednej będziesz dodawał i redagował poszczególne elementy (galerie, animacje, slajdery, filmy). Dla każdego takiego elementu przypiszesz jakiś unikatowy kod / nazwę / znacznik. Druga część będzie prostym edytorem typu wysywig, w którym te wszystkie elementy będziesz komponował w całość. Tu trzeba zastosować mechanizm podobny do bbcode. Np w pierwszej części utworzysz galerię o znaczniku galeriaMoja, slajder o znaczniku slajderMoj i inne bajery jakie będziesz chciał. Potem w drugiej będziesz te znaczniki dodawał w takiej kolejności i układzie jaki będziesz chciał. Skrypt przed zapisem do bazy, albo i przed odczytem będzie te znaczniki zamieniał na odpowiednie elementy,
szajens
Cytat(Wazniak96 @ 12.05.2014, 22:59:07 ) *
Serio? A ja Ci udowodnię i napiszę tak szajsowaty, że zobaczymy. baaasmiley.gif
Koledze em1X nie chodziło o szybkość wykonywania się lecz o stracony czas na jego pisania. W końcu czas to pieniądz. A co jeśli klient sobie zażyczy w przyszłości rozbudowania strony? Kolejne marnowanie cennego czasu na rozbudowanie CMS lub przekładanie danych na "armatę". smile.gif

Zaoszczędzisz więcej czasu jeżeli napiszesz jeden dobry i będziesz wykorzystywał go później. Rozbudowanie baaasmiley.gif , żaden problem, tylko trzeba o tym pomyśleć od razu. Ja stawiam na budowę modułową.
Turson
Uważanie pisania własnego CMS za stracę czasu jest głupotą. Nic, co rozwija nasze umiejętności, nie można uznać za marnotrawienie czasu
skleps
Cytat(em1X @ 12.05.2014, 16:22:32 ) *
Jak dla mnie strzelanie z armaty to marnotrawienie własnego czasu na pisanie własnego CMS, kiedy tyle na rynku darmowych i solidnych rozwiązań.


Ale niekonieczne zoptymalizowane pod konkretne potrzeby.
Znane rozwiązania mają też jedną wadę - znane dziury, czyli jak ujawnia się jakas dziura to nic trudniejszego jak jakiś haker zapuści skrypt i na ślepo można być trafionym smile.gif
Oczywiście własne rozwiązanie nie gwarantuje bezpieczeństwa, ale nie da się zrobić aktaku szablonowo i ew włamywacz musi chwilę pokombinować indywidualnie...
Czyli ew włam nie będzie przypadkowy a celowy smile.gif
Dejmien_85
Hmm, ja bym "widok" podzielił na dwie części.

1. Templatkę pojedynczej strony (a dokładnie części strony).
2. Treść strony (która zawiera ID templatki)

Templatka tak naprawdę byłaby szablonem, tj. divy, klasy, id-ki, ogółem HTML5. Następnie w templatce umieściłbym znaczek w stylu {content}, który byłby jak się domyślasz zmienną. Templatka oczywiście byłaby parsowana i {content} zostałby zastąpiony treścią strony.

Przy wczytywaniu front-page łączysz się z bazą danych, pobierasz strony, zasysasz dane stron (tj. treść + templatka) i wypluwasz je foreachem, parsując templatki.

W panelu administartora tworzenie strony składałoby się z dwóch etapów:
1. Stworzenie templatki
2. Stworzenie strony i wybranie do niej templatki.

PS W swojej karierze wykonałem kilka "Łan-Pejdżów" i z tego co zauważyłem warto podzielić "strony" na treść i templatki. Każda część strony może wyglądać inaczej, także konieczne jest ustalanie różnych templatek, a nie można wymagać od klienta tego, aby znał HTML - a klient musi w prosty sposób edytować stronę. Także z tego powodu musi być podział na "treść" i "templatkę".

Oczywiście jako "templatkę" mam na myśli tylko jedną część łan-pejdża.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.