Projekti CMS është një guidë pak e ndryshme nga të tjerat në dy aspekte. Së pari është për mua guida me e gjatë që kam marrë ndonjëherë përsipër të shkruaj, sepse përfshin realizimin e plotë të një CMS-je. Së dyti sepse është paksa ndryshe nga guidat tradicionale. Artikulli që do të lexoni këtu është më tepër një shpjegim i hollësishëm i funksionimit të CMS-së dhe prezantim i funksioneve të saj, jo një guidë e mirëfilltë. Guida e vërtetë ndodhet në kodin që mund të shkarkoni më poshtë dhe në komentet e kodit.
Duke qenë një projekt i madh, nëse do të bëja një guidë për të gjithë konceptimin dhe kodimin e CMS-së do duheshin disa artikuj shumë të gjatë. Zgjidhja e ofrimit të gjithë kodit dhe komentimi i hollësishëm i tij më erdhi në mendje pasi mendova çfarë do doja unë nga ky projekt. Në fakt, ajo që do doja unë nga një projekt i tillë nuk është një seri guidash që tregojnë funksionalitetin duke shpjeguar fragmente të kodit, sepse do e kisha të vështirë ti mblidhja të gjitha copëzat bashkë. Në kundërshtim do doja një kod të komentuar mirë nga i cili të mësoj si të krijoj funksionalitete të ndryshme, si ti organizoj skedarët, etj. Shpresoj që ky këndvështrim të përshtatet edhe për ju.
Pse një CMS?
Përgjigja është e thjeshtë: Sepse pjesa më e madhe e dizenjuesve për web që po mendojnë të mësojnë të programojnë, dëshirojnë të realizojnë CMS për klientët e tyre. Qëllimi nuk është vetëm ky, por më duhet ta pranoj që është arsyeja kryesore. Në krah, një CMS është një aplikacion për web kompleks që përmban shumë opsione të cilat mund të përvetësohen e të përdoren për sisteme të tjera.
Pyetja tjetër është: Pse mos të përdorim një CMS të gatshme si Joomla, Drupal apo WordPress? Absolutisht nuk ju them mos ti përdorni sepse do ishte një këshillë e gabuar. CMS-të e gatshme ofrojnë shumë, janë të testuara e të mirëmbajtura nga një komunitet i madh, por më e rëndësishmja është se instalohen dhe vihen në produksion për pak minuta. Megjithatë, konsideroni disa arsye pse duhet ti ofroni klientëve tuaj një CMS të konceptuar nga ju:
- Sepse është një sfidë e mirë për veten nga e cila mund të mësoni shumë përmes skenarëve reale.
- Sepse paguheni më mirë nëse programoni një CMS tuajën se sa thjeshtë të instaloni një të gatshme.
- Sepse CMS-ja juaj ka opsionet e duhura për të menaxhuar një faqe klienti dhe jo qindra opsione që nuk hyjnë në punë.
- Sepse CMS-në tuaj e njihni shumë mirë dhe mund ta modifikoni apo ti shtoni opsione fare lehtë, pa lexuar dokumentacione të pafundme.
- Sepse kodi i CMS-së tuaj nuk është i aksesueshëm nga publiku i gjerë dhe shanset për ta sulmuar janë më të vogla.
Pikat e mësipërme duhet të jenë disa arsye të mira për të shkuar drejt rrugës “CMS personale”, por gjërat nuk janë të zeza apo të bardha. Gjithçka varet nga skenari. Nëse një klient nuk ju paguan mjaftueshëm, atëherë thjeshtë instaloni një CMS të gatshme. Nëse nuk keni kohë për ta programuar një CMS, atëherë përsëri instaloni një të gatshme. Jeni ju ata që vendosni se cila është zgjidhja më e mirë.
Databaza
Çfarë përmban kjo CMS?
Besoj se kjo është pyetja që ju intereson më tepër. Fillimisht duhet të dini që CMS-ja që kam ndërtuar për këtë projekt është shkruar tërësisht nga zero. Pra nuk ka kode apo zgjidhje të marra nga site-e të tjerë, sepse nuk do quhej CMS-ja ime, por një CMS kolektive. Gjithashtu më duhet t’ju them se nuk është CMS-ja më e ndërlikuar në botë me qindra opsione. Ato që ndodhen në të janë seksione që unë i kam menduar si jetike për një CMS dhe që do t’ju ndihmojnë të kuptoni se si gjithçka funksionon. Më pas, opsionet mund të shtohen pa fund në varësi të projektit. Fakt interesant: Për të gjithë projektin nuk kam përdorur as edhe një imazh; çdo gjë është bazuar mbi tekst për të ruajtur thjeshtësinë.
Panel Administratori
Ky është seksioni më i rëndësishëm i CMS-së dhe ajo që e bën të quhet e tillë. Përmes panelit të administratorit mund të menaxhoni praktikisht çdo gjë që shfaqet në faqe, me thjështësinë e të shtypurit të disa butonave.
Kategori dhe Artikuj
Një organizim i mirë i artikujve është i domosdoshëm për çdo CMS, sepse janë pjesa më e rëndësishme ku informacioni shfaqet. Çdo artikull që shtohet duhet ti përkasi një kategorie të caktuar. Në këtë mënyrë krijohet një ndarje logjike e tyre, por dhe gjithashtu mund të krijohen faqe që listojnë disa artikuj. Nëse një faqe drejton tek një kategori, aty shfaqen të gjithë artikujt që i përkasin asaj kategorie.
Lajme
Nga eksperienca, pothuajse të gjitha faqe e bizneseve që kam realizuar kërkojnë një seksion për lajmet. Ato mund të jenë edhe evente apo lajmërime, por mund të përshtaten lehtësisht në seksionin e lajmeve. Edhe kjo CMS ofron menaxhimin e lajmeve duke i shfaqur ato të renditura sipas datës dhe të kliklueshme për ta dërguar vizitorin në përmbajtjen e zgjeruar të lajmit.
Menu Dinamike
Ky është një lehtësim për administratorit e CMS-së duke i ofruar menaxhimin e menuve. Kuptohet që nuk është një opsion i domosdoshëm sepse menutë rrallë ndryshojnë dhe nëse duhet, mund të modifikohen lehtë në HTML. Megjithatë, qëllimi është që të mësoni e ti përdorni këto njohuri në projekte të ardhshme, të cilat edhe mund të kërkojnë menaxhim menush. Përmes panelit, administratori mund të shtojë/editojë menutë e ti lidhë ato me një kategori apo artikull të faqes. Një opsion ekstra që mund të përfshinin menutë do të ishte shtimi i një imazhi (për menu me imazhe), por si ju thashë më sipër kjo CMS nuk përmban asnjë imazh. Mendojeni si mund ta shtoni vetë këtë opsion.
Menaxherë të faqes
Paneli i Administratorit mund të aksesohet nga përdorues me dy nivele: Super Admin dhe Admin. I vetmi avantazh që Super Adminët kanë mbi Adminët është shtimi apo editimi i menaxherëve të tjerë. Me të njëjtën logjikë, duke përdorur kodin që unë kam shkruar për të limituar aksesin, mund të limitoni edhe opsione të tjera apo të shtoni një nivel tjetër (psh: ‘Redaktorë’ që vetëm mund të menaxhojnë artikujt dhe lajmet).
Përmbajtja në dy gjuhë
Zgjidhja që unë kam dhënë këtu është e thjeshtë dhe e ngurtë, por për një sistem fleksibël multi-gjuhësh do kërkonte vërtetë shumë punë të konceptohej e të realizohej. Ajo që unë kam bërë për të pasur dy gjuhë për çdo seksion të faqes (kategoritë, artikujt, lajmet dhe menutë) është e thjeshtë; kam futur në databazë dy kolona për secilën fushë (psh titulli_al dhe titulli_en) dhe kam ofruar dy forma editimi, një për shqipen dhe një për anglishten. Gjithashtu kini parasysh që edhe elementët e ndërfaqes në një sistem të vërtetë do donin ndarje për gjuhët e ndryshme, gjë që për këtë CMS unë se kam bërë. Kjo arrihet lehtë duke krijuar skedarë gjuhësh (psh: al.php, en.php, it.php, etj) me variabla të njëjta të cilat kanë vlerë të ndryshme dhe thërriten për gjuhën përkatëse. Ky është sistemi më i mirë dhe më i lehtë për tu mirëmbajtur.
Shabllone
Shabllonet janë një nga opsionet më interesante (të paktën për mua) të kësaj CMS-je. Një shabllon shtohet si direktori brenda direktorise ‘shabllone’ dhe krijohen në të dy skedarë: 1) ‘pamja.tpl’ (tpl për template) që përmban HTML-në e faqes së bashku me variablat e shablloneve dhe 2) ‘stili.css’ që përmban stilet CSS të shabllonit. Përmes këtij sistemi i ofrohet dizenjuesve që nuk njohin PHP të krijojnë apo të mirëmbajnë shabllone fare lehtësisht. Teknikisht, kodi PHP e lexon shabllonin aktiv duke i zëvendësuar variablat e shabllonit me tekstin e vërtetë që do të shfaqet e në fund e printon në ekran të gjithë si HTML. Ju këshilloj ti hidhni një sy sepse është sistem i thjeshtë e i fuqishëm që mund të zgjerohet pa limit.
Editor teksti
Editori i tekstit që kam përdorur sigurisht nuk është punë e imja sepse do ishte pa logjikë. Kam zgjedhur të përdor TinyMCE sepse është vërtetë shumë i thjeshtë për tu aktivizuar, ka opsione e plugine pa fund dhe është i bukur. E kam përdorur dhe vazhdoj ta përdor në çdo sistem që krijoj. Për këtë CMS zgjodha të aktivizoj shabllonin ‘simple’ (i thjshtë) që është forma më minimaliste e TinyMCE, në mënyrë që të ruaj thjeshtësinë. Por ju mund të zgjidhni pa problem formën ‘advanced’ apo shabllonin ‘office’ që përmbajnë të gjitha opsionet (edhe ato që s’duhen).
Konfigurim
Ashtu si çdo gjë tjetër, konfigurimi është mbajtur në formën më të thjeshtë të mundshme për mos ti ndërlikuar gjërat. Në të mund të vendosni titullin e faqes, gjuhën bazë, shabllonin aktiv, etj. Në sisteme të tjera i kam ruajtur konfigurimet në një skedar php dhe kam lexuar variablat, por kësaj rradhe mu duk më mirë të përdor një tabelë në databazë. Fundja nuk na gjen gjë se bëjmë një query më tepër.
Nuk dua të zgjatem më tepër me fjalë sepse në këtë rast janë të tepërta. Shkarkoni arkivin, studioni kodin dhe shikoni mënyrën e organizimit të skedarëve. Mos nguroni të komentoni nëse gjeni ndonjë problem në CMS apo nëse keni pyetje.
Mësim të mbarë.









Me pelqeu shume ky tutorial. Bravo Joni
FLm shum Joni . Shum tutorial i bukur
Flm cuna. Shpresoj t’ju hyje ne pune.
Fadion Dashi
të lumt, Tutorial shumë i mirë.
Flm Rushit
Te lumte Fadion, se shpejti do te paguaj per premium e shof se ia vlenë.
Ju lumte per kete site!
Flm per fjalet e mira. Na behet qefi qe je i interesuar per Premium. Per cdo pyetje qe te kesh na u drejto me email
Flm
Romeo
Te lumte Joni tutoriali shum i mire
Pergjezime per c`do gje qe beni dhe per te gjith kete informacion per shume vete shume te vyer, por vetem nje verejtje kisha kur pretendoni per te drejta autori beni kujdes me pak fajl as te mos vidhni dhe normalisht as pos t`ju vjedhin.
Arsyeja qe po ju bej kete verejtje eshte paragrafi i fundit i ketij mesimi me sfond te kuq.
Per fat te keq mendoj qe mesimin e keni te huazuar per mos tu shprehur te pervetesuar mbase me pa te drejte.
Respekte kalofshi mire.
Rakipi, ti mendon se mesimin e kemi te huazuar? Keto gjera behen me prova dhe jo me ndjeshmeri. Nese ke dicka per te paraqitur, atehere jepi; perndryshe hesht!
“Verejtja” jote nuk eshte asgje pervec se nje shpifje qe gjithashtu i shton nje koment te kote kesaj guide. E cuditshmja eshte qe nje here te pergezon, nje here te hudh poshte te gjithe punen. Kije parasysh (dhe ti duhet te jesh i vetmi qe dyshon) qe me eshte nevojitur me shume se 1 jave per ta realizuar kete guide, duke perfshire kodimin e komplet sistemit, komentimin e kodit dhe shkruarjen e permbledhjes. S’mund te toleroj qe urryesi i pare qe vjen ketu ta hedhi ate pune poshte; virtualisht sepse ne na shtyjne perpara ata qe e vleresojne dhe qe kritikojne subjektivisht.
Me vjen keq dhe i kerkoj ndjese lexuesve per kete lloj komunikimi, por nuk mund te gjej fjalor tjeter per t’ju pergjigjur te tilla komenteve.
Rakipi, nese ke ndonje prove per ta vertetuar shpifjen tende (sigurisht qe s’ke!) atehere paraqite. Ne rast te kundert mos posto me sepse po ndot guiden.
Fadion , jam i interesuar qe te mesoj CSS mundesh te me sugjerosh ndonje faqe ?
@Driton, mund te mesosh ketu tek Feniksi
. Hidhi nje sy guidave rreth kodimit te nje faqeje me HTML dhe CSS. Jam i sigurt qe ka shume per te mesuar.
Nese je fillestar absolut, te keshilloj te lexosh ndonje liber. Personalisht kam mesuar CSS me librin “HTML Utopia Designing Without Tables Using CSS 2nd”. Eshte pak i vjeter, i 2006-es dhe nuk perfshin CSS3 apo HTML5, por do te marresh shume njohuri me te. Me pas i zhvillon ne praktike dhe CSS3 dhe HTML5 i meson gradualisht.
Sidoqofte, hidhi nga nje sy Feniksit here pas here sepse guidat per CSS jane nder kryesoret e kesaj faqeje.
Pershendetje! Pergezimet e mia me te sinqerta per Tutorialin qe keni publikuar, dhe vecanerisht per webin qe keni, Me keto qe na jepni na keni bere qe te punojme dicka me php.
Une tani kam nje problem nuk e di me ndihmoni dot, me duhet te ndertoj nje Paging ne PHP por nuk po mundem ta realizoj, n.q.s dikush ka dicka ose mundet te me ndihmoje per dicka te tille ju lutem me ndihmoni, Kerkoj ndihme edhe nga Administratoret e kesaj Faqeje. Fadion HEEEELPPPPP please….
Pershendetje Lejkre dhe te falenderoj per komentin.
Faqosja (pagination) eshte pak tricky per fillestaret, sepse kerkon te behet nje llogari fare e vogel matematike dhe te perdoret ne MySQL fjala kyce LIMIT me 2 parametra: rreshti fillestar, numri i rreshtave. Per fat te mire ne internet mund te gjesh gjithcka dhe mjafton te kerkosh ne google “php pagination tutorial”. Nese di pak Anglisht dhe pak PHP, do orientohesh lehte.
Pershendetje! Fadion. Uroj te jesh mire, punen e paging e rregullova, por kam nje problem sepse kur ndryshoj browserat me ndryshojne shume gjera ne paraqitje te faqes, a mundesh te me ndihmosh, cfar duhet te bej qe te jete e perdorshme browserat me popullor qe jane. Faleminderit! Gjith te mirat.
Kompatibiliteti me shfletuesit eshte nder pjeset me komplekse kur kodon nje faqe HTML. Pa e pare nuk kam c’te them sepse cdo faqe eshte unike. Hidhe diku qe ta shoh dhe postoje linkun ketu.
Pershendetje! http://www.kamza.net84.net ketu eshte faqja qe kam hedhur, e gjith problemi eshte sepse kam vendosur dy gjuhe anglisht edhe shqip edhe kur klikoj tek anglishtja me del ne rregull, kur e klikon tek shqip, me ndryshon paraqitja, nuk e di se cfar nuk shkon te lutem po munde, ma kthe nje pergjigje. Faleminderit!
Ndarja e kolonave eshte bere me tabele dhe kjo eshte nje “jo e madhe”. Bej tre div me gjeresi te caktuar (apo %) dhe me float vendosi ne krah te njeri tjetrit. Kjo eshte menyra me e thjeshte per te bere kolona.
Pershendetje Fadion!
Doja te te kerkoja nje ndihme, dua te bej include (); ne templatein e kesaj cms tek pamja.tpl
por nuk ma merr ka ndonje lloj menyre tjeter se si mund ti bej include, dua te bej include nje forme kontakti tek menuja Kontakt, por nuk me del nuk e di se ku kam gabuar.
Faleminderit per ndihmat qe na jepni.
Ne formen aktuale, CMS-ja nuk ofron opsione per te perfshire skedare brenda shablloneve. Mund te modifikohet, por nese s’ke njohuri te mira ne PHP, do te duhet shume pune.
Te kujtoj qe CMS-ja eshte per arsye edukative. Edhe pse mund te perdoret per ndonje projekt te thjeshte, nuk eshte ky qellimi i saj. Ka plot alternativa shume te mira online qe ofrojne zgjidhje te plota.
Përshëndetje! nuk e di nëse pyetjen po e bëj në vendin e duhur, por mu duk më e pështatshme në këtë pjesë pasi kjo Guidë që Fadioni ka Publikuar i perfshin pak a shumë gjithcka në php.
Unë do doja ndihmë nga lexuesit sidomos më shumë nga Administratorët e kesaj faqeje, si mund të bëj një link për të lexuar një material të plotë jo me ID por me një ëmër që mund të vendos në dataBaze
P.SH. Nga ky link artikull.php?id=$id e artikullit në artikull.php?a=$titull ose $fjalekyqe një kolon në data bazë.
Nuk e di së sa u shpjegova për këtë gjë që po kërkoj. N.q.s dikush mundet të me ndihmoje do ja dija shume përnderë.
Faleminderit!
Nuk eshte ndonje gje e komplikuar shume, sepse funksionon me te njejten ide si ID-ja. Praktikisht, mund t’ja ngjisesh ID-ne titullit ne formen: artikull.php?t=titulli-artikullit-5, ku “5″ eshte ID-ja e atij artikulli. Mund ta procesosh me tej me PHP per te shkeputur ID-ne.
E mira do te ishte t’i rishkruash URL-te me htaccess, perndryshe s’ka shume kuptim perdorimi i titullit. Pra, artikull.php?t=titulli-artikullit-5 -> /art/titulli-artikullit-5/. Nje praktike e mire eshte qe ID-ja ne URL te tilla te vendoset si parameter i vecante. Psh:
artikull.php?id=5&t=titulli-artikullit
Ne kete rast e ke te thjeshte te marresh ID, por edhe mund te ofrosh URL SEF nese i rishkruan:
/art/titulli-artikullit/5/
Alternativa tjeter (por qe personalisht s’me duket me interes) eshte ti vendosesh cdo artikulli nje titull SEF unik dhe te perdoresh vetem ate titull si parameter, pa pasur nevojen e ID-se. Nese artikulli do kishte titullin “Ky eshte nje artikull”, te gjenerohet nje titull SEF “ky-eshte-nje-artikull” dhe ky titull i modifikuar te kalohet ne URL. Nese behet te jete unik, mund te perdoret me te njejtin qellim si ID-ja. Megjithate, do kerkoje nje fushe ekstra ne databaze dhe fakti qe cdo artikull duhet te kete titull unik, mund ta beje jo praktike nese ke shume artikuj ne kategori te ndryshme.
Perseri une shpresoj mos tju merzits me keto pyetje qe kam.
Kamer perdorur .htaccess per te ndryshuar url me sakt per ti hequr .php ne url
kam perdorur keto te dhena
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^kontakt kontakt.php [nc] #
Kur klikoj ne url e vendos pa .php me shfaqet faqja por template nuk me del ne rregul duket sikur nuk hyjne ne funksion css fare. Ju lutem Admin sepse ju keni eksperience te madhe neketo. sepse kam pare shume pune tuajat neper internet.
Faleminderit!
Admin Problemin per te nxjerre pa prapashtesen e rregullova por dua te vendos edhe nje slesh (kontakt/) ne fund te fjales, kete spo i nxjerre dot nese mundeni nje ndihme Faleminderit shume
dhe ju pergezoj shume per vullnetin e madh qe keni per te na ndihmuar ne cdo pyetje qe kemi
Faleminderit edhe njehere shume nga ana juaj.
Provoje:
RewriteRule ^kontakt/?$ kontakt.php [nc]
Si c’besoj e ke zgjidhur tashme, CSS-te, imazhet dhe cdo resurs tjeter i jashtem duhet te lidhen me URL absolute kur rishkruan URL-te.
Hej Fadion, kur e vendos me / ne fund nuk me shfaqet sepse ma merr si me qene nje folder ne root edhe deshiron ta hapesh. Nuk e di se ku e ka problemin spo e kuptoj fare. gjtihsesi te falenderoj per pergjigjet qe me jep.
Faleminderit!
Direktivat e Apache, qofte per Rewrite ose jo, nuk jane teme edhe aq e thjeshte per te bere suport ne komente. Te keshilloj te lexosh ndonje guide te plote per rishkrimin e url-ve me mod_rewrite ku do kuptosh si shkruhen, si perjashtohen direktorite, etj.
E di ca me pelqen me shume te cdo guide ketu?
Fakti qe ju (ne kete rast Fadioni) gjithmone e theksoni qe materiali nuk eshte i veshtire,madje i thjeshte.Kjo te jep vertet idene qe po meson nje gje te thjeshte dhe eshte shume lehtesuese
Flm Alba. E rendesishme eshte qe ne fund guida te jete instruktive
Shume faleminderit per kete guide interesante, por do te doja qe ne vend te perdorimit te fjales edito, editim etj te perdorej Redakto, Redaktimi.