UC Catalog image

DTB képe

Sziasztok,
Az Ubercart Catalog moduljához kérném a segítségeteket. A jelenlegi kiadásban (6.x-2.9) a csatolt katalógus képek kezelése kicsit bugos, illetve nem lehet változtatni a tároló könyvtárat, az alapértelmezett files könyvtárba pakol mindent. Épp ezért készitettem egy saját modult erre a célra. Bemásoltam az uc_catalog_taxonomy($op, $type, $object = NULL) funkció forrását a uc_catalog.module-ból a saját modulba, megcsináltam a szükséges módosításokat, és javításokat, igy már jó helyre teszi a képeket. Viszont akár mit csinálok, az eredeti uc_catalog_taxonomy funkció is lefut, és felülírja az adatbázisban a kép elérési útját. Próbálkoztam a $_FILES['files'], majd a teljes $_FILES törlésével unset($_FILES); de semmi eredmény, ugyanugy lefut az eredeti funkció is. Először a saját modul fut le, utána az ubercart. Az eredeti funkció igy ellenőrzi a feltöltött képet:

...
  if ($object['remove']) {
    db_query("DELETE FROM {uc_catalog_images} WHERE tid = %d", $object['tid']);
  }
  elseif ($file = file_save_upload($field_name)) {
      ide nem kéne eljutnia, ennek nem kéne lefutnia
...

...vagyis a file_save_upload-nak kéne 0 (nulla) értéket visszaadnia, akkor NEM futna le. Hogyan lehet ezt megakadályozni, szabályozni? A $_FILES törlése nem vezetett eredményre. Másképp kérdezve, hogyan tudom megakadályozni, hogy egy feltöltött és lementett képet egy másik funkció újra lementsen? Ötlet? Javaslat?
Ui.: Ismerem a Taxonomy Image modult, de azt nem akarom használni)
Taxonomy upgrade extras: 
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
sgabe képe

A file_save_upload() visszatérési értéke csak hiba esetén lesz 0, itt pedig nincs szó hibáról.

Mivel a hook függvények a modulok súlya szerint futnak le, első ránézésre azt javasolnám, hogy a saját modulod súlyát állítsd nagyobb értékre, mint a katalogusé, így az fog utoljára lefutni.

További lehetséges megoldás, hogy nem az Übercart által alapértelmezettnek vett "image" mezőt használod, hanem létrehozol egy sajátot.

0
0
DTB képe

Köszi a hozzászólásod, bár különböző okok miatt sem a modul weight, sem a saját form azonosító nem jött be, viszont ezzel egy jó ötletet adtál, hogy a hook_init() résznél módosítani kell a $_FILES tartalmát, átnevezni az image form azonosítót, hogy az ubercart catalog ne találjon ott semmit, valahogy igy:

function hook_init(){
  if(is_array($_FILES['files'])) {
    $a = $_FILES['files'];
    foreach($a as $key => $arr ) {
      if(isset($_FILES['files'][ $key ]['image'])) {
        $_FILES['files'][ $key ]['myimage'] = $_FILES['files'][ $key ]['image'];
        unset($_FILES['files'][ $key ]['image']);
      }
    }
  }
}

Ezzel én kezelem a képeket, a többi marad a catalog modulra.
Igy már tökéletes! (bár elment rá mésfél napom... :-( )
Köszi a segítséged!
0
0