Szép estét mindenkinek!
A node images php-s oldalában szeretnék egy kis segítséget kérni.
Az alaphelyzet az, hogy ha a node images beállításaiban kiválasztjuk azt a módot, hogy a képet akkor tegye ki, ahova node->node_images; -hívást beépítjük, pl a node.tpl.php-ba.
Azt szeretném megkérdezni, hogy szerintetek, hogyan lehet az megoldani, hogy az aktuális kép nevét ki tudjam print-telni valamilyen módon?
Már ilyen totál eszetlenségeket is próbáltam pl: node->node_images->filename; ...
Aminek nagyon örülnék, ha olyan lenne a végeredmény: valami.jpg
Igazából arra gondoltam, hogy egy új globális változót kell deklarálni valahogy, vagy nemigazán tudom sajnos...
Drupal verzió:
Fórum:
van bármi különös oka annak, hogy a node_images kell neked?
én inkább azt ajánlanám, hogy filefield+imagefield kombinációval oldjad meg a képek csatolását, az sokkal "drupalish" -abb megoldás. ha így teszel, akkor majd a mezőt magát sminkelheted, hogy a renderelt html valamilyen formában a filenevet is tartalmazza, még elegánsabb, ha saját field formattert írsz hozzá, mindkettőben nagyon szívesen segítek, de a node_images -t nem használtam már vagy két éve, mert nem látom értelmét.
van bármi konkrét oka, hogy neked a node_images _kell_?
-
clear: both;
Hát az igazság az, hogy igen
Hát az igazság az, hogy igen :)
Ugyanakkor a CCK ImageField Imagecache kombinációt is alkalmazom,
de azt máshol.
Már annyira beleéltem magam, az eddigi node_images-es ügyködésbe, hogy nem szeretnék az utolsó lépésnél elbukni.
De amennyiben te azt mondod, hogy megoldható az, hogy pl a node.tpl.php-ban meghívjam az adott mezőbe (vagy nem tudom hogyan hívjam azt amikor létrehozok egy másik mezőt egy másfajta képnek) beillesztett kép nevét (és azt kapom, h valami.jpg), akkor úgy csinálom! :D
isten hozott a drupal csodálatos világában :)
errefelé általában az a járás, hogy ezer úton juthatsz el ugyan arra vagy legalábbis nagyon hasonló eredményre. egy funkciódat tucatféle módon tudsz kialakítani, ezek nagy részét még arra is rá tudod venni, hogy tökugyanúgy nézz ki a látogató számára.
nagy rutinnal a lehetséges variációkat három-négyre csökkentheted, de még így is minden majdnem minden alkalommal felmerül a kérdés: most akkor melyik?
a döntés sokszor azon múlik, neked melyik a kényelmes.
meg van ilyen is, hogy figyeled a core merre fejlődik és olyan megoldásokat választasz, amik "close core" :) (ezt most találtam ki, ne guglizzad:)
remek példa a node images.
szép dolgot csinál, dehát van nekünk remek ccknk, abba van hibátlan filefield és annak imagefield widget, fupload, meg filefield_inline meg mindenféle színes-szagos sztárság. minek telepítsem a node_images, mikor van remek imagefieldem amúgyis, ami alapból szépen ismeri az imagecachet, szépen viewsba épül, panels látja, stb stb.. mindent tud.
most letöltök egy node_images, mer' utoljára 5.3 -nál használtam, akkor kezdett tetszeni a filefield. :P megnézem mit csinál, _biztos_ hogy be lehet szépen pakolni a filenév, ha nem is pont a node.tpl.php -ban, hát akkor máshol.
addig ha gondolod írd le, hogy miért pont a node_images kell arra a feladatra, hogy egy nodehoz egy vagy több képet csatolj és azokat aztán _bárhogyan_ megjelenítsd a node mellett/benne?
(bár ez már egy(?:) éves, de kapcsolódik: http://drupal.hu/forum/imagefield-imagecache-pseudo-filter)
-
clear: both;
na megnéztem, végülis igaz a mondás
nincs lehetetlen. :)
a node images egy szép sminkhurkot ad ami összeállítja neked azt a stringet, ami majd a node.tpl.php -ban a $node->node_images lesz.
ezt, mint minden sminkhurkot (theme_ kezdetű függvény bármilyen modulban) újra megvalósíthatod a template.php -ben (ez a te sminked része, ha nincs ilyen file benne, hozzad létre kézzel). az a szabály, hogy pl a theme_world_alter hurkot SMINKEDNEVE_world_alter néven kell megvalósítanod.
a szóban forgó függvény a theme_node_images_view, node_images.module 730. sor..
(ha nem világos, hogy derítettem ezt ki, légyszi kérdezz rá, szívesen elmagyarázom)
szóval azt a függvényt ami ott van, egyszerűen kimásolod és beilleszted a sminked template.php -jába.
ezután ilyenre szerkeszted (vagy eleve ezt kopizod be:)
(a SMINKEDNEVE részt ugye átírod a saját sminked nevére)
kész is vagyunk, mentjük az állllományt :P és ürítjük a smink regisztrációs tárat, jó étvágyat. ez fog történni ugye: http://skitch.com/aboros/np6q9/add-filename-to-node-images
figyedoda, hogy az eredetihez képest csak itt nyúltunk bele:
egyszerűen csak hozzáadtuk a mintához és a "thumbhoz" is a nekünk kellő dolgot, szevasz.
ez minden tartalom típusban, ami használ node imagest, ezt fogja csinálni. hogy hogy néz ki, az ugye css kérdése. cserélgetheted a spant divre, meg pakolhatsz köré amit akarsz, lelked rajta ;)
bár a node images úgy néz ki sokat fejlődött, meg igazán jópofa modul, rugalmasságban, ezáltal jövőállóságban a megközelítése nem veheti fel a versenyt a filefield+imagefield+imagecache trióval. (ha más nem: fields in core! jippiájjé)
minden ami saját "mezőket" ad hozzá a nodehoz úgy, hogy az nem cck, előbb utóbb felesleges lesz. (ez a magánvéleményem)
azt javaslom, hogy bár a probléma megoldódott, gondold át, hogy mégiscsak kell e neked ez a modul erre a feladatra. ha csak azért kell, mert saját fülre pakolja a képfeltöltést, vagy mert .. áhh, el se tudom képzelni miért kell. :) mitől olyan vonzó?
-
clear: both;
Szerintem se használd
Én egy D5-ös oldalt node_images-sel készítettem el, és óriási szenvedés árán tudtam D6/imagefield-re migrálni.
A node_images előbb utóbb ki fog halni, hosszabb távon a filefield/imagefield lesz a befutó (várhatóan). Több támogatása van, több modul épít rá.
Szóval csak ha mazohista vagy akkor maradj ennél a megoldásnál. :)
--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan
Off szössz
Ehhez egyetlen szösszenet:
Inkább ne, tökéletes az a SPAN pontosan így, hogy a példában írtad. Abban a pillanatban, ahogy mondjuk egy P tag kerül valamiért az egész köré, egy DIV miatt rögtön bukik az „egész”, mert érvénytelen lesz a generált kód, mint XHTML dokumentum. A SPAN viszont szinte bárhol elmegy, és valid marad.
ez volt a gyanúm
pedig divvel is jól néz ki, úgy egymás alá kerül :P
(ez vicc, ne cseréld divre, cssből állítsad a display:block -ot be jól, ha azt akarod. - utókornak)
-
clear: both;
Igazából nem is tudom hol
Igazából nem is tudom hol kezdjem... Talán ott, hogy nagyon köszönöm, valamint ilyen elképesztően lelkes és segítőkész fejlesztői társaságot még nem láttam, annak ellenére, hogy IT területen már láttam ezt-azt :) Ezzel nálam egy elég nagy részt áthidaltál a fejemben, ami már nagyon hiányzott!
hogy miért döntöttem a node-images mellett?
Ez röviden kettő dolog:
1. sokkal egyszerűbbnek láttam php-ban megoldani, hogy külön legyen 1 db képe a teasernek,
mert ugye a php adott és gyakorlatilag ahhoz nem kell úgy ismerni magát a rendszert, mondjuk azt bebizonyítottad, hogy a kettő ismerete együtt felbecsülhetetlen előny!
2. hamár külön teaser akkor a külön fül sem rossz, habár ez sem igaz, mert létrehozhatok imagefieldben külön mezőt amit persze úgy állítok be ahogy akarok.
Na mind1, igazából ma, (vagy már tegnap) sajnos nincs erőm próbálkozni, de holnap az egész délutánomat ezzel fogom eltölteni! :) (Biztos vagyok benne, hogy lesz még pár kérdésem)
Amit írtál nagyon profi elismerésem!
és még egyszer köszönöm!
Sajnos a probléma még nem
Sajnos a probléma még nem oldódott meg teljesen, mert először is valamiért nem írja ki a fájl nevét pedig módosítottam ezt a részt így:
A másik ami még nem egyezik az elképzelésemmel, az az, hogy hogyan tudom külön kiprintelni a node-ban azaz mondjuk azt mondom, h a kép a content fölött van, és a kép nevét pedig a a content alatt szeretném beszúrni egy
ugye ürítetted a smink regisztrációs tárat? ;)
miután mindezt bepakoltad a template.php -be, üríteni kell a smink regisztrációs tárat, hogy a sminkrendszer "észrevegye" az új függvényt.
ez a kép fent filenév lent már variálósabb, most hirtelen nem emlékszem, hogy a $node ban benne van e tömb formában is a node_images adat vagy csak a $node->node_images sztring van. :( ha benne van, akkor könnyű dolgunk lesz, az előfeldolgozóban a létező tömbből könnyen összerakunk egy listát theme('item_list' -el persze, ami a fileneveket tartalmazza, ezt egy új változóba pakoljuk és a node.tpl.php -ban kiírjuk majd.
utána kell néznem, hogy megvan e a kellő adat, de ez ma már nem fog menni szerintem, szori. addig próbálkozz esetleg.
-
clear: both;
persze, hiszen felraktam egy
persze, hiszen felraktam egy modult ami kikapcsol minden cache-t (disablecache), de azért nyomtam egy mentést a sminkeknél is, de sajnos semmi, még mindig ez látszik a fájl neve helyett: %filename
Habár van egy ötletem, méghozzá az, hogyha azt meg lehetne oldani, hogy ez a változó: node->node_images visszaadja a fájl nevét azaz a többi string nélkül, csak csupaszon, akkor megvan a megoldás, mert csak a node.tpl.php-ban íratom ki (mert ugye máshol cck-s dolog van) lényeg hogy oda beszúrom amit kivettem a node->node_images -ből.
A probléma csak annyi, hogy nemigazán működik a fájlnév kiíratás, még span-ként sem, ha ez működne akkor már nagy probléma nem lenne sztem.
Azt nem értem, hogy nálad miért működött (képen)?
nálam pedig miért nem?
Azt is kipróbáltam, hogy a node_images.module -t módosítottam, ahogy írtad, de az is ugyan ez! :S
Egyáltalán nem gond, hogy ma
Egyáltalán nem gond, hogy ma már nem fog menni :)
Köszönöm, hogy egyáltalán foglalkozol a problémámmal!!!
Megvan a megoldás!!!
Végül úgy oldottam meg, hogy fogtam és a template.tpl.php-ból, abból a részből ami a stringet rakja össze: node_images -be.
Tehát így elértem, hogy a teljes elérési útvonal átmenjen és utána már csak
substr($node->node_images, #); lenyestem az elejét (a #-helyére annyit írjunk amennyi karaktert szeretnénk levágni az elejéből.
Utána meg ahova akartam kiírattam echo-val, valamint vissza építettem a kép meghívást csak manuálisan írtam elé. (azért írtam, hogy valakin majd segítsen) ;) .