hi!
Igazából nem biztos, hogy modul fejlesztési kérdés, de saját modulnál kellene megoldanom.
Van egy saját tartalom és abba kellene egy submit button a teljes nézetben. Ez meg is van.
A button megnyomására a Drupal "Csatolmányok" részéhez kell ugrania.
Ehhez kellene oda egy
<a name="ideugras">Ide kellene ugrani</a>
html kód elvileg, ami nincs alapból ott.
Hogyan oldható meg szépen? Az is jó, hogy teljesen a lap aljára ugrik a form buttonra kattintva.
G.
Drupal verzió:
Fórum:
egy megoldás
egy megoldás, ami működik:
G.
nagyon sokat gondolkodtam, hogy mit írjak erre
vagy hogy írjak e egyátlán valamit. lehet nem kellene, akkor bocs, de nem bírom megállni, hogy meg ne jegyezzem.
ez a kódrészlet itt nem megoldás, hanem egy ordas nagy gányolás.
kérem senki ne vegye ezt mintának a témában vázolt feladat megoldására.
azt most hagyjuk, hogy ehhez miért kell űrlap, mikor ezt egy sima anchorral meg lehet csinálni, tegyük fel, hogy mindenképp űrlappal kell megoldani valamiért. (nlta miért)
ilyet, hogy kacsacsőr form, method post, stb... ilyet soha nem csinálunk drupalban. soha! vért könnyezve kórusban visítanak a kismacskák a motorháztető alatt!!!
van formAPI, tessék azt használni. azt kell! mint ahogy nem írunk olyat, hogy kacsacsőr a src (mert van l() fgv és azt használjuk) .. nem írunk olyat, hogy kacsacsőr img src... mert van theme('image'... és azt használjuk!
formAPI!!!
amit még nem értek, hogy ezt miért hook_view -ban csinálod??? az adott tartalomtípust a te modulod hozta létre?? ha igen, akkor talán ok, bár akkor se értem, hogy miért égeted az űrlapodat a $node->content -be?? ha nem a mymodule hozta létre ezt a tartalomtípust, akkor pedig végképp rossz, a hook_view csak olyankor használatos, ha ugyan az a modul definiálta a típust, mint amelyik a hook_view -t valósítja meg. ha másik modul által létrehozott tartalomtípust akarsz piszkálni és mindenképp modulban akarod tenni ezt (ki tudja miért?), akkor hook_nodeapi.
nem vagyok teljesen biztos benne, de ezzel a fenti borzadállyal szerintem eltörted a cckt is, tehát ha most cckval hozzáadsz egy mezőt a típusodhoz, nem fog megjelenni mert manuál átégetted a $node->content. nem túl egészséges.
egy szónak is száz a vége, amit itt fent csinálsz az baromi drupal-idegen.
bocs hogy így megírtam ezt, de fontosnak tartom, hogy ezt tudd, ne szokjad meg ezt a fenti borzalmat.
-
clear: both;
view
Ok, rendben. Elfogadom a kritikát, de eddig még nem volt ilyen feladatom. Próbálkozom, de nem jó irányba. :)
A tartalomtípust a mymodule modul hozta létre. Saját nézetet szeretnénk neki létrehozni.
A gombbal kell megoldani az ugrást (#attachments).
A szép megoldás itt van:
http://api.drupal.org/api/drupal/developer--examples--node_example.modul...
Ezt kellene felhasználnom.
Igazából itt is egy output-tal (theme_node_example_order_info) csinálja theme-vel.
G.
szerintem elég nagy még a zavar az erőben
ágyúval lősz a verébre. most hirtelen nincs kéznél egy olyan típusom se, ami használna upload.modult (vagy egy éve nem használom a core upload.module -t), de este majd megnézem, hogy pontosan mi történik azzal és küldök egy pontos megoldást. az idézett példamodul arra lett írva (hudeszépen mondtad), hogy illusztráljon egy node_load és egy theme_ közötti "kommunikációt". a példa amit megvalósít ezer más úton is megoldható, nem csak úgy.
neked jellemzően egy sminkes megoldás kéne szerintem, de legalábbis semmiképp nem kell űrlap és az is nagyon rossz ötlet, hogy a linket a node->content -be égeted.
este majd ránézek.
még annyit, hogy az upload.modul el fog tűnni, a hetesben már nincs is, szóval szeirntem arra építeni bármit is a jövőben, az botorság, tessék használni a filefieldet. azért van.
-
clear: both;
apró kiegészítés: a D7-ben még van upload
Apró kiegészítés: a Drupal 7-ben még van upload modul, csak már nem célszerű használni.
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
továbbra is csak iránymutatás,
lörnin' báj duin, esz déj széj. ;)
még mindig nem világos, hogy mi okod volt arra, hogy olyan modult írj, ami saját maga definiál egy tartalom típust, mikor ezt cckval is megteheted és még akkor is fennál annak a lehetősége, hogy a típust a saját modulod babrálja. (plusz minden cck jóságot is használhatsz. semmi értelme saját modulban node typeot csinálni szerintem)
mindegy is.
sminkben is meg lehet ezt csinálni, de most az is mindegy, te modulban akarod. maradjak fókuszált ;)
nem volt energiám csinálni egy modult, ami saját típust állít elő és a hook_view() -t használja, úgyhogy a hook_nodeapi() -t használom és azt figyelem, hogy van e upload modullal feltöltött adat, ha igen, akkor adok egy linket, ami a $node->content elején fog megjelenni. ez egy teljesen egyszerű html anchor lesz, egy id -re fogok hivatkozni, hogy melyikre, azt könnyű kideríteni: http://img.skitch.com/20091123-ewhtx3ci6inx4wiufqg3j7fx4f.jpg
ugyan ezt kell csinálnod a hook_view() -ban is.
a modulom neve anchor_to_attachments_example
.info file:
.module file:
ennek eredménye emitt: http://img.skitch.com/20091123-my95x7yruppfu781w3in4yjb3h.jpg
nincs hook_theme, nincs saját sminkfüggvény, minek az? szépen ezt a kis tömböt amit most a node->content -be varrunk majd a render odaintézi a helyére. -10 a súlya. ez azt jelenti, hogy fixen -10 -re van égetve, úgyhogy amikor a display fields fülön variálod a sorrendeket, akkor ez oda lesz égetve a -10 -re. lehetne mondjuk kombinálni, hogy ahova az upload.module attachments részét súlyozod, oda súlyozzuk a linket, az attachmentset meg átsúlyozzuk 999 -re. :) vagy lehet még lesni más modulokból, hogy hogyan teszik guin súlyozhatóvá a dolgaikat.
ja és persze lehetne még a végtelenbe és tovább ;)
remélem sikerült inspirációt adni.
-
clear: both;
kösz
Köszi!
Bár hasonló volt az elképzelésem csak nem találtam a megfelelő részt a doksiban (rossz helyen kerestem), de ezt css-ben kellene a smink-nek megfelelően submit buttonra formáznom (mert button kell a link helyett).
De ez már egy másik thread. :)
Köszönöm az iránymutatást!!
G.
A linkbe bármikor tudsz képet
A linkbe bármikor tudsz képet is elhelyezni, ami már button ;)
Form generálásra itt semmi szükség szerintem.
Hosszu Kálmán
http://twitter.com/kalmanhosszu
http://www.kalman-hosszu.com/
http://premiumcmsthemes.com/
meg is oldottam
igen... meg is oldottam ccs-ből. A "link-ből submit button lett".
G.
Nem hülyeség típust készítei
Nem hülyeség típust készítei modulból. Egyrészt nem kell egy böszme nagy modult behúzni a maga minden hülyeségével (gondolok itt a Form API-s belenyúlásokra, ami miatt véletlenül sem úgy működnek a dolgok, ahogy azt az ember megszokta, cserébe vannak sűrűn változó, dokumentálatlan hookok, amikre nincs példa). Amikor nem csak az van, hogy kilométer hosszú standard node form-ot (ami nem is túl felhasználóbarát ugye) okádik az ember a user arcába, hanem van némi elvárás, mondjuk szeretne GYORSAN content_multigroup jellegű dolgot, ami működik is mondjuk a hierarchical selecttel, akkor van értelme, mi az hogy, nagyon is! És akkor nem lesz filefield, imagefield?
Valljuk be, egy komolyabb projektnél a felhasználói felületet tervezők nagy ívben tesznek arra, hogy a Drupalban, CCK-ban, Viewsban mi az alapértelmezett megjelenés. Ők azt akarják visszakapni, amit kitaláltak. Ha pedig az úgy nem jó, ahogy van, akkor sokkal gyorsabban haladsz saját ct modullal, ahol nem karmolássza össze az űrlapmegjelenítést soklépésben a Forms API, nem löki bele a teljes node tartalmát a $form-ba, nincs szopókő, ha a mezőt hozzáadod másik ct-hez is, és akkor átvariálja a táblastruktúrát stb.
Azt meg valljuk be őszintén: összetett mezőtípusokat létrehozni leginkább Nedjo, Quickschetch Robert Douglas, Merlinofchaos, Sun, Jonbob és más CCK core fejlesztők szoktak. Miért? Mert nem éri meg főverzión belül többször módosított, dokumentálatlan API-n újra és újra átrágni magad. Legalábbis nekem nem. Ettől függetlenül úgy szoktam létrehozni a táblastruktúrát, hogy az alkalmasint kompatibilis legyen a CCK-val, de dokumentáció és jó példák nélkül nem szégyen, ha az ember mellőzi. (A teljesítményre gyakorolt jótékony hatás sem mellékes, kapásból ~20MB-ot spórol az ember egy teljes tartalom megtekintésnél akár használja az ember a $node->content tartalmát, akár közvetlenül babrálja a megjelenítést a $node->field_* változókon keresztül.)
persze én értem az indokokat, hogy miért
de szerintem az esetek döntő többségében nem állnak fenn a követelmények amik miatt mellőznöm kéne a cckt. szerintem itt nagyon kevesen építenek igazán komoly forgalmú webhelyeket vagy nagyon összetett, sokűrlapos, bonyolult adatrendszerű alkalmazásokat. legtöbbünk egyszerű siteokat hoz létre, ahol én személy szerint semmi értelmét nem látom annak, hogy saját modullal definiáljak egy tartalom típust mikor megtehetem ugyan ezt két klikkel a kezelőfelületen is.
-
clear: both;
Ezzel egyet is értek, én csak
Ezzel egyet is értek, én csak a „semmi értelme saját modulban node typeot csinálni szerintem” mondatodra reagáltam.
Alapvetően egyetértek, de az
Alapvetően egyetértek, de az image-et, table és hasonlókat ha elhagyja az ember, nem nagy probléma, főleg, ha nem egyendolog kell (ezek általános függvények, ha valami megbazirgálja, akkor mindenhol meg lesz bazirgálva). Az interaktív elemeket nem használni viszont elég messze van a rendszerben gondolkodástól. :)
Drupal smink
Tényleg nem akarlak bántani, mert nem mondok semmi produktívat, de remélem a Drupal smink-készítést még nem tervezed felvenni, és a modulfejlesztés is, ehh...
Nyilván sok dologban én magam is béna vagyok, de igyekszem pótolni azzal, hogy utánaolvasok a dolgoknak, illetve igyekszem megfigyelni, hogyan csinálják a nálam hozzáértőbbek.
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
lassan
A modulok egész jól mennek, persze messze vagyok még a középszinttől is. De próbálkozom.
Mindig megfogadom a tanácsaitokat, ebben a témában is!
Azért fordulok hozzátok, mert adódott egy probléma, amilyet még nem csináltam.
Ki kell próbálni, csak úgy lehet rájönni dolgokra. A próbálkozásom működik, de nem drupal-barát. Ok.
Jó volna egy minta, hogyan lehet szépen megoldani.
Előre is köszönöm a segítségeteket!
G.
JS?
Sziasztok!
Látom, nagyon megoldottátok már ezt a problémát, de felteszem a kérdést (lehet elásva magamat a Drupal Szakmai Bizottság :DDD előtt)
Miért nem javascripttel oldjuk meg ezt a problémát? A kérdésben oldalon belüli átugrás van, ahhoz még anchor sem kell, hogy javascripttel átugorjuk, és JS-sel elég könnyen hozzáragasztunk még egy gombot akárhova, vagy akár meglévőre. Lévén ez egy látszólagos megoldás, gondolom usability feature, hogy a kedves user ne felejtse el a csatolmányt feltölteni, vagy ne kelljen keresgélnie és így ezt szívesen kitolnám JS-be.
Ez elborult ötlet, vagy csak nagyon elkényelmesedtem a mostanában lévő sok Js miatt amit kódoltam? :)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TeeCee, the One and Only
Ha nincs engedélyezve a JS
Ha nincs engedélyezve a JS akkor nem működik a dolog, az a probléma. Amúgy persze meglehetne azzal is csinálni.
Hosszu Kálmán
http://twitter.com/kalmanhosszu
http://www.kalman-hosszu.com/
http://premiumcmsthemes.com/
Gondoltam...
...hogy ezt fogjátok hozni kérdésnek, de tapasztalataim alapján 99,9%-ban be van kapcsolva a Js. Mivel az én feltételezésem szerint itt valami user-kisegítő fícsőrről lenne szó, ami az egységsugarú felhasználóknak készül, azoknál meg nincs letiltva semmi. A profik, akik meg szándékosan tiltják le a JS-t azok meg úgysem használnák ezt a funkciót, vagy bekapcsolják a scriptet.
Szóval szerintem nem probléma, ha JS véletlen még sincs, mivel az oldal használható marad, minden funkció elérhető.
Jelzem: amikor views-listát alakítottam át, vagy webformot törtem többlaposra, akkor a meglévő HTML-ből dolgoztam diszkrét módon, így megmaradt az eredeti funkcionalitás, tehát ezt szem előtt szoktam tartani.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TeeCee, the One and Only
Nem arról van szó, hogy
Nem arról van szó, hogy valaki letiltja a JS-t, mert én kb úgy vagyok vele, hogy aki letiltja az szívjon csak, hanem arról, hogy mondjuk valaki felmegy az ilyen-olyan ultramenő csilli-villi érintőképernyős telefonjával megnézni az oldalt, és mivel a mobilos böngészők, vagy egyáltalán nem, vagy csak korlátozottan tudják használni a JS-t így cseszheti.
Ez ilyen furcsaság, hogy ahogy telik az idő egyre inkább elvárható hogy ne legyen tiltva a JS, viszont egyre kevésbé biztos hogy a látogatás számítógépről jön.
Legalábbis szerintem.
Hosszu Kálmán
http://twitter.com/kalmanhosszu
http://www.kalman-hosszu.com/
http://premiumcmsthemes.com/
De rég volt
Milyen mainstream okostelefonnak van ma korlátozott böngészője?
opera mini pl
A Nokia E51-es telefonom beépített böngészője bizonyos js-t tud futtatni, de az opera mini meg nem nagyon.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
es amikor nincs JS?
Es mi van akkor amikor le van tiltva a JS?
---
http://drupalaton.hu
miért nem javascriptel?
mert abban nem vagyok annyira otthon. :)
száz módon lehet megoldani nyilván.
aki meg kikapcsolt jsel netezik 2010ben, az nemnormális.
gmailt is oldschool standard htmlbe használja? facebookot hogyna nézi? vagy flickert? hogy csak kettőt mondjak. :)
mondjuk ha már felvillantottad ezt a lehetőséget, nem osztasz meg egy konkrét megoldást? ;) tudod, utókor.. :P
-
clear: both;
Konkrét megoldás...
... az kéne, mi? :P
No egye fene, 10 perec alatt összedobtam valamit.
No ez annyit csinál (ha már utókor), hogy a .node elem első TAG-jának berak egy SUBMIT típusú INPUT-ot, amire ráköt egy onClick eseményt, ami a .file-uploads -hoz küldi a böngészőt, fél mp-es animálással. (Ha már csinálunk valamit, csináljuk látványosra :D )
Ehhez kell a scrollTo plugin, viszont ha csak firebugban a konzolon akarjátok kipróbálni, akkor a következő sort rakjátok még be, egyébként meg be kell tölteni:
A rendes megvalósításhoz egyrészt kellene figyelni, hogy csak akkor tegye mindezt, ha van csatolmány, másrészt nem tudom, előfordul-e olyan eset, hogy egy oldalon több .node és .file-uploads rész lehet, ez ugye problémát okoz a mostani 'demóverzióban'.
Továbbá: tessék a drupal_add_js() függvénnyel behúzni a scrollTo plugint, úgy aggregálható!
aboros: így megfelel? :)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TeeCee, the One and Only
Volt egy kis időm, úgyhogy
Volt egy kis időm, úgyhogy összedobtam egy kis modult, ami ezt a funkciót megvalósítja, így ha van JS ha nincs JS mindenképpen működik.
A működéshez szükséges a jQuery.ScrollTo 1.4-es verziója.
scroll2attachment.info:
scroll2attachment.module:
scroll2attachment.js:
Hát ennyi lenne, csak gondoltam megosztom, hátha érdekel valakit.
Hosszu Kálmán
http://twitter.com/kalmanhosszu
http://www.kalman-hosszu.com/
http://premiumcmsthemes.com/