Kép útvonala alapján a kép címe.

aruna képe

Sziasztok!

Van a fájlrendszeren lévő kép (D6), pl. ez:

/sites/default/files/valami.jpg

És nekem meg kellene kapnom a képhez tartozó 'alt' és 'title' szövegeket, amiket a drupal itt tárol az adatbázisban:

content_type_tartTipusAzon->field_topic_image_data

A kép adatait szerializálva tárolja, kb. így:

a:2:{s:5:"title";s:6:"Valami";s:3:"alt";s:0:"";}

-----
Tehát csak a fájl útvonalát tudom, azt nem, hogy mihez (melyik node-hoz) csatolták, ez alapján kellene visszanyerni a kép adatait (pl.: 'title').

-----
Erre a megoldásra gondoltam:

- A 'files' táblából lekérdezem a 'fid' mezőt egy sql-el:

SELECT fid FROM files WHERE filepath='%s' // %s = /path/valami.jpg

- A 'content_type_tartTipusAzon' táblából lekérdezem a 'fid' -hez tartozó adatokat (itt a 'fid' a 'field_tartTípusAzon_image_fid' mezőben van):

SELECT field_tartTipusAzon_image_data
FROM content_type_tartTipusAzon ctt, files f
WHERE ctt.field_tartTipusAzon_image_fid=f.fid
AND f.fid=%d -- %d helyén, amit ez előző select visszaadott

- Amit visszakapok a SELECT-ből (a kép adatait) "unserializálom":
a:2:{s:5:"title";s:6:"Valami";s:3:"alt";s:0:"";}

-----
Az lenne a kérdésem, van-e jobb, egyszerűbb, drupal-osabb megoldás?

Köszönöm
Aruna

Drupal verzió: 
aruna képe

hogyha több képet is hozzá lehet adni a tartalomhoz, akkor a CCK külön táblát hoz létre a kép mezőnek:

content_field_tartTipusAzon_image

és ebben tárolja kép adatait (field_tartTipusAzon_image_data).

0
0
Sk8erPeter képe

Körülnéztem az imageapi, filefield, imagefield modulok kódjában, én nem nagyon találtam jobbat, "Drupalosabbat", mármint abban az értelemben, hogy lenne már rá valami API. Sajnos.

OFF: Egyébként én kicsit nevetségesnek tartom, hogy csomó fontos/kiegészítő adatot serializált formában tart a Drupal az adatbázisban, ami pedig csak nagyon ügyesen növeli az erőforrás-igényt (lásd unserialize() memóriaigénye). Azért szívesen olvasnék erről valami élménybeszámolót, hogy vajon miért is sikerült ezt így kialakítani, amikor elég sok mindent szépen, konzisztensen csináltak meg, de ez nekem egy kicsit összebabráltnak tűnik, hogy finoman fogalmazzak. Ezekre a serializált adatokra egy normális query-t sem lehet írni, anélkül, hogy ne kéne hozzá még tákolni némi unserializálást PHP-ben. Miért nem lehetett ezeket külön mezőben, akár felőlem külön táblában tárolni?
OFF vége

Egyébként a Views-ban lehet úgy fájlokat listázni, hogy kilistáztatod az alt, title mezőket is, úgy, hogy az adott mezőnél a "- data" végződésű fieldet választod, például ha a mezőm neve Images, machine name-je "field_my_images", akkor ez lesz a Views-ban választható mező:
"Images (field_my_images) - data"
aztán ezenbelül kiválasztod a title-t:
imagefield title
de feltételezem, nem csak ilyen egyszerű listázásra van szükséged, hanem kódból szeretnél vele még valamit művelni.

0
0
aruna képe

hogy foglalkoztál vele.

RE: OFF:
Az elején mindig nagyon vonzó tud lenni, hogy komplex objektumot (mindenféle fontos/kiegészítő adatot), le lehet tárolni egyetlen mezőben.
Csak kiveszem/berakom más nem is kell. És még egyszerűbb is marad a táblaszerkezet.

Aztán idővel, ha jön a többi igény: szűrés/rendezés..., kiderül hogy jobb lett volna mindenre saját oszlop.

Szerintem a tervezési fázisban nehéz ezt jól megsaccolni.

0
0
aboros képe

hanem hogy a core mindig a legegyszerűbb, legáltalánosabb esetekre ad eszközöket. nemrég például valaki panaszkodott rá, hogy milyen kis béna az aggregator modul, hát az ugyanez a sztori. a core a "többség" igényeit szolgálja ki, minden másra ott a contrib.

a témához kapcsolódva, ha használod a file_entity modult, az talán könnyíthet az életeden ilyen helyzetekben. abban többek között van egy ilyen függvény, hogy file_uri_to_object ami egy elegáns entity_load segítségével fogja visszaadni az egész file entity példányt mindenestül.

0
-1

-
clear: both;

szantog képe

igen, én is erre gondoltam először, utána meg arra, hogy azért ehhez a komplett entity rendszert kellene visszaportolni d6ra. :D

2
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

aboros képe

upsz :)

0
0

-
clear: both;