bra Posted February 24, 2005 Report Share Posted February 24, 2005 sveiki man ir kātrējais jautājums. Bieži gadās ka šu tur ir nepieciešams veikt dažādas iamaiņas pievienojot kādu papildu f-ciju vai izmainot esošo vai arī kādu noņemt nost ( es biju domājis pašdefinētu fciju), Tātad mans jautājums ir kā būtu jāvaido šāda tipa dzinējs - moduļu mazēts (piem kā WordPress) man pašam radās ideja samaikot DB vienu tabulu, tur sarakstīt visu infu par katru moduli atseviņški, bet to struktūru arī nevarēju išti izštukot jo ir jāperedz iespējami daudz iespējas. Tā pa miglu atceros ka Jāzeps bija kaut ko tamlīdzīgu satasījis, bet laikam tagad tas viis ir pie dieviem. kā jūs parasti veidojat šādas sitēmas? Paldies jau iepriekš Link to comment Share on other sites More sharing options...
Robis Posted February 24, 2005 Report Share Posted February 24, 2005 Vienkārši nevar? MySQL tabula: Lauki: mod_id, mod_name un citi, kas tev tur vajadzigi par katru moduli? Pec tam tik php sataisi array ar visiem datiem par moduljiem un izmanto! Link to comment Share on other sites More sharing options...
bubu Posted February 24, 2005 Report Share Posted February 24, 2005 bra: a vai nav labāk nevis glabāt moduļu informāciju iekš MySQL, bet gan iekš pašu moduļu php failiem. Tipa, vienā direktorijā samet visus moduļu php failus, tad kad vajag pieslēgt tos, tad uztaisi ciklu ar include katru no failiem, un, piemēram, katrs no failiem atgriež masīvu ar sevis aprakstošu informāciju, ko arī galvenā programma izmanto, tipa: <?php $module_info["name"] = "Krutais modulis"; $module_info["version"] = "1.0"; $module_info["description"] = "kautko dara"; // tālāk seko vispārējas funkcijas vai klases... ?> Tādējādi, kad uztaisīsi include šo moduli, varēsi izmantot šo $module_info masīvu, un, kad vajadzēs pieslēgt nākamo moduli, tad vienkārši uztaisi unset($module_info); (protams, iepriekš saglabājot tā informāciju, kur citur, ja nepieciešams), un slēdz klāt nākamo moduli. Link to comment Share on other sites More sharing options...
Robis Posted February 24, 2005 Report Share Posted February 24, 2005 Pareizi un lai aizpildītu masīvu $module_info[] , ir lietderīgi savākt info no datubāzes :) Link to comment Share on other sites More sharing options...
bra Posted February 24, 2005 Author Report Share Posted February 24, 2005 varbūt ne pietiekoši pareizi izteicos bet paldies me bija domājis arī struktūru, kādam vajadzētu izskatīties, vai kā jūs tasat vai tasītu pašu kernrli (kodolu) šādam dzinējam, tas ko es biju izštukojis galīgi nekam nederēja. tā pati iedeja ir teiksim ir webloga dzinējs, kur var pielikt noņemt (deaktivizēt) kādu moduli piemēram komentāru moduli, vai linku moduli un tas sasaucas i ar user daļu i ar admin daļu. Man nav ideju kur skatīties piemērus, zinu ka Wordpresam tāds laikam ira, bet tas kods priekš iesācēja ir biku par saražģitu... :huh: Link to comment Share on other sites More sharing options...
bubu Posted February 24, 2005 Report Share Posted February 24, 2005 Pareizi un lai aizpildītu masīvu $module_info[] , ir lietderīgi savākt info no datubāzes :) 14133[/snapback] Tu acīmredzami neizprati manu ideju. Doma ir tāda, ka $module_info ir definēts pašā modulī - php skriptā, un datubāze te vispār netiek iesaistīta! Link to comment Share on other sites More sharing options...
Venom Posted February 24, 2005 Report Share Posted February 24, 2005 ņu, pieņemsim, ka ir tāds modulis kā kalendārs. uztaisam tam failu "calendar.php" tālāk bloga rāmī ieplānojam vairākas vietas, kur to var ielikt, piem. masīvā $cal_places=array('pa labi augšā','pa labi vidū','pa labi lejā'); un kaut kā settingos saglabājam, piem. $cal_place=0; un tad att. vietā <div align="right"> <div id="top"> <?php if ($cal_place==0) include_once 'calender.php'; ?> </div> <div id="middle"> <?php if ($cal_place==1) include_once 'calender.php'; ?> </div> <div id="bottom"> <?php if ($cal_place==2) include_once 'calender.php'; ?> </div> </div> mīnusi - daudz jāmocās lai visu atcerēties, modulim jāstrādā neatkarīgi jebkurā vietā (t.i. lai piem. "nesalauž" esošo kvēriju), kodā daudzas vietas kur jāliek moduļu iespējamo vietu kods pluss - modulis izpildās tikai tad, kad tam jāizpildās otrā pieeja - template elements kaut kur pašā augšā ob_start(); //šeit izehojam kalendāru $tpl['calendar']=ob_get_clean(); ob_start(); //šeit iszvadās viss (X)HTMLs, kur kaut kur ievietots &calender& //pašās beigās: $html=ob_get_clean(); foreach($tpl as $key=>$val) $html=str_replace('&'.$key.'&',$val,$html); echo $html; flush(); mīnusi - viss htmls izvadās tikai skripta beigās (ok, var taisīt replace kaut kur pa vidu, bet tas atkal sarežģī) plusi - viegli nomainīt izvietojumu, var savietot ar paštaisītu kešingu, ja att. modulis nav ieslēgts, tad &moduļa_nosaukums& nomainām pret '' un miers Link to comment Share on other sites More sharing options...
Robis Posted February 24, 2005 Report Share Posted February 24, 2005 Tu acīmredzami neizprati manu ideju. Doma ir tāda, ka $module_info ir definēts pašā modulī - php skriptā, un datubāze te vispār netiek iesaistīta! 14139[/snapback] Es sapratu Tavu ideju, bet doma par datubāzi, lai moduļus varētu administrācijā viegli aktivizēt/deaktivizēt, pielikt parametrus utt... Link to comment Share on other sites More sharing options...
bra Posted February 24, 2005 Author Report Share Posted February 24, 2005 ņā, bet būtībā ja izmanto kādu no dotajiem venom piemēriem jāparedz jau kādi moduļi būs, bet teiksim par to pašu kalendāru es tagad uztasu webloga dzinēju un par to kalendāru nemaz nedomāju un pēc teiksim nedēļas pēkšņi izdomāju ka ma tagad tādu te vajag tad iekopēju teiksim calendar.php un uztasu DB lai piemēram varētu katram datumam varētu pielikt vārdadienas, tad kad šisto viu esmu izdarījis, man iekš admin paneļa pie moduļiem parādas calendar - active/ not active, labi tas vel būtu viegli, bet itkā jau varētu calendar.php sākumā izmantot bubu ideju labi tas būtu oki. bet man problēmas sagādātu tieši paša kerneļa uztasīšana t.s. lai nolasa visu failus no monules diras un tad samet iekš DB skākuma ar lauka status vērtību not active vai kā tā, bet vai tas nepaildzinātu ielādi ja katru reizi jālasa visi faili no tās diras un tad vel jāčeko no DB vai šis active vai notactive? vai vispār kāds ir ko tamlīdzīgu tasījies? ja ir moš varētu kādu koda parugu palūgt lai vieglāk pašam izštukot... :huh: Link to comment Share on other sites More sharing options...
Venom Posted February 24, 2005 Report Share Posted February 24, 2005 kaut ko ūber sadomājis (: ar to moduļu lasīšanu - skaties readdir/opendit piemēru manuālī, vai pameklējis tepat forumā - piemēru kaudzēm att. uz jauno moduļu detektēšanu: saglabā un pārbaudi moduļu direktorijas mainīšanas laiku (ja tiek pievienots fails - tā mainās? vai vismaz notoucho to) ko turpmāk arī čekosi, resp. @include 'lastmoduled.php'; if (!isset($updated)) $updated=0; if (filemtime('./modulu_dirs/') !=$updated) { //nolasām failus, pieņemsim, ka tajā faili sauksies "modula_nosaukums".php //salīdiznām, vai modula_nosaukums eksistē iekš db, ja nē - pieliekam ierakstām lastmoduled.php saturu '<?php $updated='.filemtime('./modulu_dirs/').'; ?>' } tālāk tik un tā jāmaina vai nu php, vai html (template) koda līmenī, bē Link to comment Share on other sites More sharing options...
bra Posted February 24, 2005 Author Report Share Posted February 24, 2005 negribu būt nepieklājīgs, bet kāds uzskatāms koda piemēriņs nenāktu par skādi :unsure: paldies jau iepriekš! Link to comment Share on other sites More sharing options...
bubu Posted February 24, 2005 Report Share Posted February 24, 2005 Kam koda piemērs? Visu laikam būs priekšā jārāda.. Nu ko tu nemāki, direktoriju nolistēt? Neņem ļaunā, bet tak manuālī pilns ar piemēriem: http://lv.php.net/opendir Link to comment Share on other sites More sharing options...
arnico Posted February 25, 2005 Report Share Posted February 25, 2005 zinu ka Wordpresam tāds laikam ira, bet tas kods priekš iesācēja ir biku par saražģitu Taadas lietas nevar uztaisiit vienkaarshi, ar triis rindinju skriptu :) taa pati par sevi ir sarezgjiita lieta :) taaka manuaalji, php.net un google.lv un viss buus chikeniekaa :) Link to comment Share on other sites More sharing options...
hmnc Posted February 25, 2005 Report Share Posted February 25, 2005 nu jopcik! nav moduļu sistēma sarežģīta nu nav!!! bubu un Venom parādīja ideālu piemēru. princips gaužām elementārs: sataisam visas standarta funkcijas sev, definīcijas, inclūdojam visas klases utt bla bla viss kas būs nepieciešams dzinēja darbībai, un tad ņemam cauri moduļus vai nu no foldera vai caur mysql (bet includes tāpat sanāk.. dooh). un viss. kas tur ir tik sarežģīts?? metam tik klāt moduļus un aidā! Link to comment Share on other sites More sharing options...
arnico Posted February 25, 2005 Report Share Posted February 25, 2005 hmnc :) katram cilveekam ir cits liimenis :) vai tu peec 5 dienu PHP redzeeshanas vareeji kautko taadu uztaisiit ? :) Link to comment Share on other sites More sharing options...
Recommended Posts