Jump to content

[MEGOLDVA] Product Attachment - loginhoz kötve


wilbury
 Share

Recommended Posts

A Presta alapból letölthetővé teszi mindenki számára a termékhez feltöltött csatolmányokat. Azt könnyedén megcsináltam, hogy csak bejelentkezés után lehessenek letölthetők ezek. A megrendelő viszont azt szeretné, hogy bizonyos doksik letölthetőek legyenek login nélkül, mások pedig csak login után.

 

Találkoztatok-e ilyen modullal, ami megoldja ezt?

 

Értem én, hogy csak bele kell tennem egy bool mezőt a DB_prefix."_attachment" táblába, kiegészíteni az AttachmentCore osztályt, hogy olvassa (és írja) is be, majd az adminon valahogy ezt beállíthatóvá tenni, de főleg ez utóbbi olyan macerás...

Edited by wilbury (see edit history)

Share this post


Link to post
Share on other sites

Én nem ismerek erre modult, de egyébként nem vészes a terved sem. Annyira nem macerás admin/terméklap/valamelyikfülre írni, azt controllerbe kötni, majd ha kell kiolvasni a boolt. Én szinte teljesen ugyanezt csináltam meg egy számlázóprogrammal való összekötéskor (az adott termék szinkronizálva van-e vagy sem, illetve ezt pipával szabályozni is lehetett).

 

Esetleg egy másik megoldás ami egyszerűbb (csak tematikai szinten): keress egy mezőt adminban terméklapon amit nem használnak, ilyen lehet például az ean13, vagy bármelyik másik (olyan, amibe van kötve a letöltőfelület tpl-ébe).

 

Ha azt akarják, hogy az adott termékhez kötött csatolmány letölthető lehessen akkor ebbe a mezőbe írják bele, hogy: "letoltheto".

Te pedig tpl szinten lehívod az ean13 változót, majd if-el megvizsgálod, hogy az értéke egyenlő-e a "letoltheto"-vel.

 

Ha igen akkor mehet a download, ha nem akkor ennyi.

 

Hirtelen ez jutott eszembe, de nyilván csak tematikai szinten... ezt nyilván bárhogy máshogy is lehet alkalmazni. Szerintem ez egyszerűbb, mint új dolgokat kötögetni meg db-be írni.

Share this post


Link to post
Share on other sites

értem, amit írsz. Mivel nem voltam eléggé egyértelmű, így - azt hiszem - félreértetted. Igazából nem termékszinten dől el, hogy egy csatolmány letölthető-e, így a termék ean13-ja (amennyibe nem használnák) nem jó erre. Csatolmány-szinten dől el.

 

Konkrétabban: terméknek lehet gépkönyve (csak a beavatottaknak) is, és használati utasítása (publikus) is.

Share this post


Link to post
Share on other sites

Éééértem, és igen: akkor nagyon félreértettem. Megmondom őszintén, ez fel sem merült bennem.

 

Úgy gondoltam, hogy termékszinten kell a dolog. Bocsánat!

 

A letöltőfelület tpl-ében le lehet kérdezni a csatolmány id-jét, vagy nevét? Azt if-be tenni ott, ahol egyébként a login-t is vizsgálod?

Share this post


Link to post
Share on other sites

Le lehet kérdezni az id-t, igen (egyébként a product.tpl-ről beszélünk). Sőt meg tudom oldani könnyedén, hogy ez a bool info is átmenjen a tpl-be

1. Attachment osztály kiegészítése a bool-lal,

2. ProductControllerbe nem kell semmi (a db-ből minden mezőt felolvas, így az új is bekerül)

 

Így akkor kliens oldalon kombinálva a $login és $downloadable (munkanév) változókat, megoldható a dolog villámgyorsan

 

Amitől (kis túlzással) félek, az inkább az admin felület, hogy ott hogyan teszem bele ezt a boolt. Az AdminAttachmentsController.php kell hozzá, aztán ott valami kavarással. Ahogy így gyorsan belenéztem a kódba, hogy elmagyarázzam, már nem is tűnik olyan nehéznek :)

Share this post


Link to post
Share on other sites

Tudtam, meg fog gyűlni a bajom az adminnal...

 

Nem egészen értem, hogyan működik a checkbox. A renderForm függvényben létrehoztam egy új checkboxot, de nem értem bizonyos paraméterei mi célt szolgálnak? Kell neki kötelezően egy values. OK, elfogadom. Azon belül kell egy query. De miért? Hogy jön ide egy query? Azt sem értem, melyik 'id' mit akar jelenteni, hogy kell értéket adni, stb. Itt egy rossz példa (én csináltam :) )

 

 

'values' => array(
  'query' => array(
     array(
       'id' => 'needlogin',
       'name' => '',
       'val' => 1
     )
  ),
 'id' => 'id',
 'name' => 'needlogin'
),

Share this post


Link to post
Share on other sites

A query egy tömb, amit meg is oldottál csak az id vagy name paramétereket értelmezted hibásan. Azok a legördülő select mezőkhöz kellenek illetve akkor ha több checkboxot szeretnél felsorolni.

 

Talán helyesen így nézne ki (azért csak talán, mert nincs időm tesztelni):

'values' => array(
  'query' => array(
     array(
       'id' => 'needlogin_no',
       'name' => 'Igen',
       'val' => 0
     ),
     array(
       'id' => 'needlogin_yes',
       'name' => 'Nem',
       'val' => 1
     )
  ),
 'id' => 'id',
 'name' => 'name'
),

De a te esetedben elegendő lesz csak egy igen-nem kapcsoló is ha jól értem.

 

Próbálhatod így (1.6.x):

array(
    'type' => 'switch',
    'label' => 'Csak bejelentkezett felhasználónak',
    'name' => 'needlogin',
    'desc' => $this->l('Bejelentkezés nélkül is letölthető vagy nem.'),
    'class' => 't',
    'is_bool' => true,
    'values' => array(
       array(
          'id' => 'needlogin_on',
          'value' => 1,
          'label' => $this->l('Yes')),
       array(
        'id' => 'needlogin_off',
        'value' => 0,
        'label' => $this->l('No')),
    ),
),

Kicsit kevertem az angolt és a magyart :)

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More