Django GIT CMS

2011 liepos 28 d. Asmeniniai projektai

Tai - tikrai neeilinė turinio valdymo sistema. Tuoj suprasite kodėl.

Pirmiausiai Django GIT CMS neturi jokios administracijos. Visas turinio valdymas šioje TVS 1 atliekamas per failus. Taip, perskaitėte teisingai.

Atrodo gana neprofesionaliai? Klystate. Tokia šios sistemos idėja - būti paprastai, lanksčiai ir valdomai ne naršyklės pagalba.

Su Python parašyta sistema, kuri veikia tik ant Django framework (veikia puikiai tiek su 1.1, tiek su 1.3 versijomis).

Taip, ji skirta manyčiau IT žmonėms, bet… Viskam yra išimtys. Kodo paryškinimams tekste naudoja populiariausią Pygments biblioteką (Python kalbai).

 GIT logotipas (šios TVS turinio versijavimo sistema)

Jums nereikės instaliuoti įskiepių (plugins) nes… Jų čia paprasčiausiai nėra! Todėl jeigu užsimanysite kontaktų formos - teks pasitelkti į pagalbą Django aplikacijos, kurių yra tūkstančiai (o gal ir net daugiau).

Kaip vyksta turinio administravimas?

Šios sistemos valdymas vyksta viename kataloge - content. Katalogų struktūra tokia:

Perspėjimas: čia išvardinti ne visi katalogai, kuriuose galima valdyti tam tikrą turinį. Daugiau informacijos rasite pačios sistemos kode. Nuoroda žemiau.

Kiekviename kataloge galima valdyti tam tikrą svetainės turinį:

blog - tinklaraščio straipsnių (tokių kaip šis) valdymas.

files - katalogas failams laikyti (bet kokio tipo failai).

simplecms - įvairūs (ne straipsnių) puslapiai, pavyzdžiui: apie mane, autorinės teisės ar pan.

simplemenus - meniu, kuris vėliau gali būti atvaizduojamas kaip tik pageidaujama.

simpletagging - žymų medis.

Meniu ir žymų valdymą atliksite sukūrę YAML tipo failą. Taip maždaug atrodo meniu failo pavyzdys:

O straipsnių ir puslapių valdymas restruktūrizuoto teksto pagalba (restructured text):

Taigi, prikūrę tokių failų paleidžiame python manage.py gitcmsload ir visi duomenys iš failų bus sudėti į duomenų bazę.

Taip, būtent į duomenų bazę. Django GIT CMS nėra statinio turinio generatorius (kaip pvz.: hyde, pelican), veikiau dinaminio.

Django GIT CMS istorija

Šią sistemą sukūrė Luis Pedro Coelho. Jo tinklaraštį, taip pat padarytą su šia sistema galite pamatyti čia.

Paskutinis šio žmogaus įnašas į šią sistemą buvo 2011 metų sausio 24 dieną. Bent jau tokia data buvo, kai rašiau šį straipsnį. O pats pirmas commit’as buvo 2009 metų Rugsėjo pabaigoje. Tad sistema tikrai nėra nauja.

Sistema su Affero 3 (GPL - interneto svetainėms) licenzija yra pasiekiama jo asmeninėje GitHub paskyroje.

 Django framework logotipas

Bonus

Ne paslaptis, kad šią sistemą panaudojau savo tinklaraštyje. Ir naudoju daugiau nei kelis mėnesius. Per tą laiką, pastebėjau kelis trukdančius naudotis šia sistema, dalykus. Todėl teko patobulinti šią sistemą.

Visus pakeitimus rasite mano GitHub repozitorijoje

Atsirado informacija kaip įdiegti šią sistemą, kokių ir kodėl reikia paketų. Tai palengvins sistemos įdiegimą, nes anksčiau reikėdavo gerokai įsigilinti į klaidų pranešimus kol buvo galima paleisti šią CMS.

Parašyti Unit testai. Jų dėka pastebėtos labai senos klaidos buvo lengvai pataisytos. Taigi, nauji pakeitimai greičiausiai „neatkirs“ visos sistemos ;)

Tie, kas mėgsta ne tik gerą programą, bet ir švarų kodą, ras validų PEP8 2 kodą :)

Restruktūrizuoti failai dabar reaguos į statusą. Tai reiškia, kad nustačius straipsniui ‘unpublished’ Jūsų straipsnis nepasirodys svetainėje.

Taip pat patobulinta komanda turinio perkėlimui iš failų į duomenų bazę ir pats procesas optimizuotas.

Kodėl rekomenduočiau šią, o ne kitą sistemą

Pirmiausiai, ji parašyta su Python (o aš Python kalbos mylėtojas). Ji naudoja vieną populiariausių framework’ų - Django. Nedidelis funkcionalumas atveria duris į platų vaizduotės pasaulį. Man, populiariausios sistemos kaip Wordpress ir pan. nepatinka dėl per didelio funkcionalumo ir „griozdiškumo“.

Kam reikalinga administracija, juk galima naudoti kokį nors mylimą redaktorių, kaip VIM ar Emacs. Kam paklūsti bandos instinktui rinktis jau sukurtą įprastą Wordpress ar Drupal? :)

Jeigu sumąstysite rinktis panašios paskirties sistemą, būtinai užmeskite akį. O jeigu kas jau tokia naudojasi, būtinai brūkštelėkite komentare. Įdomu pamatyti daugiau tokių sistemų entuziastų :)

  1. TVS - Turinio Valdymo Sistema. 

  2. PEP8 - Python kodo standartų rekomendacija, apie kurią paskaityti galite čia