marcus753
12.05.2014, 13:48:37
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
12.05.2014, 13:52:41
marcus753
12.05.2014, 14:04:51
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

chyba żeby zastosować jakiś mechanizm mieszany ?
memory
12.05.2014, 14:33:36
Tworzysz panel administracyjny i tam jest możliwość edycji treści ?
marcus753
12.05.2014, 14:38:26
"Tworzysz panel administracyjny i tam jest możliwość edycji treści ?"

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
12.05.2014, 14:51:16
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:
<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
12.05.2014, 14:53:48
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
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ń.
szajens
12.05.2014, 18:37:10
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
12.05.2014, 21:59:07
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.
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ę".
zegarek84
12.05.2014, 22:35:17
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ć

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
13.05.2014, 06:23:04
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
16.05.2014, 18:02:01
Cytat(Wazniak96 @ 12.05.2014, 22:59:07 )

Serio? A ja Ci udowodnię i napiszę tak szajsowaty, że zobaczymy.
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ę".

Zaoszczędzisz więcej czasu jeżeli napiszesz jeden dobry i będziesz wykorzystywał go później. Rozbudowanie

, żaden problem, tylko trzeba o tym pomyśleć od razu. Ja stawiam na budowę modułową.
Turson
16.05.2014, 18:21:02
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
19.05.2014, 17:17:28
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

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
Dejmien_85
19.05.2014, 19:56:52
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.