Üdvözletem mindenkinek!
Már kerek egy éve tervezgetem, hogy átállok drupalra, de eddig mindig visszatartott a wordpress egyszerűsége, kényelme. Sajnos (vagy nem sajnos) eljutottam egy olyan szintre, ahol a wordpress már nem elég. Lévén az oldalam egyre nagyobb látogatottságú, és szükségét érzem egy erősebb közösség kialakításának. Wordpressben bizony a közösségi pluginokkal (fórum, avatar, stb.) még akad probléma, sok alakítgatást igényel, elég pepecs munka. Továbbá a blogomnak minél több plugint használok, annál magasabb a cpu igénye, míg az általam használt pluginok jelentős részben beépítve rendelkezésre állnak drupalban, így sokat faraghatnék így a cpu igényen.
A következő funkciókat kéne megvalósítanom, ezekre várok tanácsot, segítséget, lehetőleg drupal 7-es megoldást, mert nem túl bonyolult funkciókról van szó, és szeretném a legújabb verzión megépíteni az oldalam (mert tetszik :) a beépített cck, stb.)
Szóval:
2 tartalomtípus lesz, az egyik típushoz kellene hozzárendelni a másikat (ez gondolom views), valahogy úgy mint a commenteket a nodekhoz, és a beküldése is onnan történhetne, akárcsak a commenteknek.
Továbbá: szeretném publikussá tenni a beküldéseket az első tartalomtípus esetén is: jónéhány mezőt ki kéne tölteni, de a képfeltöltés mezőt szeretném úgy megvalósítani, hogy "direkt link"/"remote url" beillesztésével küldené be a felhasználó a képet, nem kéne fáradoznia a le és feltöltéssel.
És a legfontosabb kérdésem amihez kapcsolódót már egy éve is feltettem, de sajnos akkor nem sikerült megvalósítanom drupalban (ezért maradtam wordpressen, többek között):
- hogyan tudnám a beküldési formot a következőképp megvalósítani:
Amikor a felhasználó be akar küldeni új tartalmat, először ki kell töltenie egy mezőt (url). Ezek után ellenőrizném preg_matchal, hogy helyes formátumban van-e megadva az url. Ha igen, akkor rákeresnék az adatbázisban: ha nincs még az url-hez kapcsolódó tartalom, akkor az új tartalom beküldése formra irányítanám át (megjeleníteném a formot, ahol a felhasználó által megadott url segítségével már néhány adatot szeretnék php-val kitölteni/megadni) , ha van hozzá kapcsolódó, akkor az adott tartalom oldalára irányítanám a felhasználót.
Röviden ennyi. Php-ben ez a form nagyon egyszerű lenne, de egyszerűen nem tudom, hogy drupalban mégis hol kéne elkezdenem? Hogyan érhetek hozzá? Hogyan definiálhatok előre változókat a formban?
Előre is köszönök minden segítséget.
1; Arról nem vagyok
1; Arról nem vagyok meggyőződve, hogy a cpu igénye a drupalnak kevesebb lesz.
2; erre a modulra lesz szükséged példál: http://drupal.org/project/wordpress_import/ - van több féle is (http://drupal.org/search/apachesolr_multisitesearch/wordpress%20to%20dru...), én anno ezt használtam. Viszonylag hiba mentesen.
Annyit kellett csak javítani, hogy a wp beledrótozta a teljes url-t a html-ekbe (http://-vel kezdődőtt nem csak /-el). Ezt keresés-csere megoldja.
3; A tartalom típusokat nem tudom, hogy kell összelőnöd, ahhoz kevés az infó. (És szerintem nem views, de lehet, hogy te mást értesz összerendelés alatt).
4; A comment rész sem problémás szerintem, de ilyet még nem csináltam.
5; Mező url ellenőrzését a webform megcsinálja helyetted. A többit meg szerintem le kell programoznod. Esetleg a rules modullal meg lehet csinálni.
Localhoston próbálkoznék vele, mindenképpen d7-re mennék, ha van rá mód.
--
Szabó Dénes - Internode.hu - Munkára fogott weblapok
programozás
Szia!
Nem tudom, milyen szinten állsz a PHP nyelvű programozással, de ezt nem fogod anélkül megúszni, legalábbis az utolsót.
Kellene egy kis modult írnod, a hook_form_alter() -t kell megvalósítanod, ott tudod kibővíteni a node beviteli formot, majd egy saját validate függvényben leellenőrizni a beírt adatokat.
Próbálok keresni mintát, elsőre ez és ez sokat segíthet. :)
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
hmm
Üdv!
Den:
A wordpress importálással nem lesz baj, megírom a saját php scriptemet hozzá (sok custom field miatt nem jó a wordpress_import), egyszer már a 6-os verziónál megcsináltam, de akkor végül wordpressben oldottam meg inkább a form dolgot.
CPU igény csak remélem, hogy kevesebb lesz, lévén drupalnak beépített cache rendszere van (és opcode cache-t is könnyebb vele használni), illetve ha wordpressben akarok fórumot, custom avatart, privát üzenetet, stb. akkor annyit kell rajta javítgatnom, patchelgetnem, hogy fene tudja mennyi idő alatt készülök el vele, és akkor még nem beszéltünk arról, hogy a különböző pluginok mennyire támogatják a gyorsítótárazást, mennyire stabil és gyors a kódjuk, stb. - míg drupalban ezek jelentős része beépítve elérhető - ez sokat jelent.
5; A webform beépített rendszere nem jó, ugyanis oldalspecifikus linket küldenek be, ahonnan curllel adatokat szedek le egy egységes adatlap kialakítása érdekében. Fontos tehát, hogy a linket jól adják meg, mert ezzel töltöm ki az adatok egy részét, és ezzel ellenőrzöm, hogy nem küldenek be dupla tartalmat.
nevergone:
Nem vagyok profi, de pl. ezt a formot le tudnám programozni tiszta php-ban. A probléma ott kezdődik, hogy egy frameworkhöz kell (drupal) igazítanom, ami nem tűnik túl egyszerű feladatnak. Az biztos, hogy nem 5 perc lesz, és hogy a hook_form_altert kénytelen leszek elmélyülten tanulmányozni, csak reméltem, hogy valaki már csinált ilyet.
Azt olvastam, hogy a drupal formoknak beküldés előtt van egyfajta postprocess fázis, ahol el lehet helyezni a kis php scriptjeinket, de nekem inkább előtte kéne feldolgoznom adatokat, és defaultként hozzárendelni a mezőkhöz (esetleg el is rejteni az így már értékkel bíró mezőket).
Köszönöm az eddigi segítséget, ha valakinek van még tippje, kérem írjon! (form rész lenne a legfontosabb)
felejtsd el
Amit a "pure" PHP formokról tanultál, azt itt felejtsd el, az egyik legnagyobb gányolás lenne. A Drupal tartalmaz egy remek Form API-t, amivel egyszerűen tömbként kezelhetsz formokat, kezdve a megjelenítéstől egészen a benne tárolt adatok elmentéséig.
Még ez is érdekes lehet, meg ez is.
Szerk.: Amúgy a dolog szépsége kb. ott kezdődik, hogy a modulodban (aminek a neve legyen foobar és áll legalább egy foobar.info és foobar.module fájlból, mindezek pedig a sites/all/modules/foobar könyvtárban) írsz egy foobar_own_form() függvényt, ami nem csinál semmi mást, csak visszaad egy megfelelően elkészített tömböt. Ez a tömb reprezentálja a formodat, a kezdeti lépésekben segít a fenti leírás, pontos referenciát pedig itt találsz. Ebből a tömbből a drupal_get_form() előállítja a szükséges kimenetet, amit aztán könnyedén sminkelhetsz is.
Ha a fenti formodat előállító függvény neve foobar_own_form(), akkor rögtön használhatsz foobar_own_form_validate($form, &$form_state) függvényt, ahol paraméterként visszakapod tömböt, a $form_state['values']-ben pedig a felhasználó által a formban megadott értékeket. Itt le tudod ellenőrözni ezek helyességét, ha nem jó, akkor a form_set_error()-ral vissza tudod dobni az űrlapot, ha pedig minden oké, akkor foobar_own_form_submit($form, &$form_state) és mentheted az adatokat.
Ennyi az egész, ez a Drupalos szép megoldás, érdemes az http://api.drupal.org/ olvasgatni, illetve tanulmányozni az Examples modul mintakódjait.
Ez a fenti történet pedig úgy kapcsolódik a kérdésedhez, hogy a hook_form_alter()-val elcsípheted a tartalom hozzáadásakor és szerkesztésekor megjelenő formot, ugyanígy tudsz egy új tömbelemet hozzáadni és azt lekezelni a tartalom elmentésekor.
Tovább is van, mondjam még? :)
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés