hook_node_type_info() és node_type_save() közötti különbség

balagan képe

Valaki szépen lassan le tudná írni, hogy mi a kettő között a különbség? Az api-ban csak annyi van, hogy a hook_node_type_info() függvény modulok által biztosított tartalomtípusokhoz, a node_type_save() pedig felhasználói, egyéni tartalomtípusokhoz való. Ehhez képest pl. a blog modul is a node_type_save() függvényt használja. Egyelőre még csak a hook_node_type_info()-val próbálkoztam, és azt a különbséget látom csak, hogy a tartalomtípusok UI-jén például nem jelenik meg törlés lehetőség az így létrehozott tartalomtípusokhoz. Mit kell még tudni a két függvényről, mi közöttük a különbség?

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Fórum: 
Sk8erPeter képe

Mi az a hook_node_type_info()?
Linkeld már be plíz, mert én még soha nem hallottam erről, és most rákeresve a gépemen található Drupalok között (van pár tesztcélból) egyik között sem találtam (egyébként keresésre mindenkinek ajánlani tudom az Agent Ransack programot :) ).

Szerk.:
ja hogy Te a hook_node_info()-ra gondolsz? Legalábbis csak olyanról tudok, ami hasonló...
http://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook...

Ehhez képest pl. a blog modul is a node_type_save() függvényt használja.

Szerintem nem azt használja, itt a forráskód vonatkozó részlete:

http://api.drupal.org/api/drupal/modules%21blog%21blog.module/function/b...

  1. /**
  2.  * Implements hook_node_info().
  3.  */
  4. function blog_node_info() {
  5. return array(
  6. 'blog' => array(
  7. 'name' => t('Blog entry'),
  8. 'base' => 'blog',
  9. 'description' => t('Use for multi-user blogs. Every user gets a personal blog.'),
  10. )
  11. );
  12. }

A nagy különbség szerintem abban rejlik, hogy a node_type_save() adatbázisba nyomja a content type-pal kapcsolatos összes lényeges adatot, míg ha Te modulból implementálod a hook_node_info()-t, akkor kódban tartod a content type-od infóit; na meg ahogy írtad, így admin-felületről nem törölhető a content type, legfeljebb a modul kikapcsolásakor tűnik el onnan.

0
0
nevergone képe

„A nagy különbség szerintem abban rejlik, hogy a node_type_save() adatbázisba nyomja a content type-pal kapcsolatos összes lényeges adatot, míg ha Te modulból implementálod a hook_node_info()-t, akkor kódban tartod a content type-od infóit, így kódból könnyebb is felülbírálni másik modullal a default behaviort”

Ezt ugye nem gondoltad komolyan? Vagy nem gondoltad végig?

0
-2
Sk8erPeter képe

Ha az utsó tagmondatra gondolsz, akkor utóbbi. Azt töröltem, mert nem helyes így.
De figyu, miért nem indulunk ki inkább abból a helyzetből, hogy ha valamivel nem értesz egyet, vagy baromságnak tartod, akkor korrigálod, kifejted a saját álláspontodat róla, és nem csak cinikusan visszakérdezel? Az eredeti kérdésre egyáltalán nem reagáltál semmit, csak megtaláltad az én hsz.-emben azt a pontot, amibe tényleg bele lehet kötni, ez tök jó, javíts ki, annak örülök is, de ne kérdezz vissza ilyen cinikus módon, mert ezzel csak nagyon ügyesen elveszed az ember kedvét attól, hogy egyáltalán erőlködjön, hogy érdemben hozzászóljon az ilyen jellegű kérdésekhez. Elég sokszor fejcsóválva látom ezt a gúnyos hangnemet a topicokban, pedig ha valaki valamit jobban tud, akkor nem azzal vívja ki mások elismerését, hogy lesajnálja a másikat. Örömmel látnék ehelyett inkább érdemi eszmecseréket! Köszönöm!

2
0
nevergone képe

Oké, jogos, csak egy kicsit lehidaltam hirtelen. Bár megfogadtam, hogy idén csak jobb minőségű, tartalmasabb hozzászólásokat gyártok, most el is buktam kicsit. :)

Szóval ez még nem a Drupal 8, ezért itt még nincs olyan az alaprendszerben, hogy egy adat „csak úgy jön” valahonnan. Minden adat az adatbázisban tárolódik, vagyis igen, mindkét esetben az adatbázisban tárolódik a tartalomtípus és onnan kerül feldolgozásra.

Én úgy gondolom, hogy a node_type_save() elment egy tartalomtípust, mint pl. amikor modulból létrehozunk egy tartalmat vagy bármit. A hook_node_info() pedig definiál egy olyant, ami a modul működéséhez feltétlenül szükséges.

Érdemes megnézni ezt a listát:
http://drupalcontrib.org/api/drupal/drupal!modules!node!node.api.php/fun...

1
0
balagan képe

Haha, nem csak én hibázok! Ez még nem a drupal 8 :)

0
0
nevergone képe

Valóban, a „nem” szócska kimaradt onnan. :)

0
0
Sk8erPeter képe

Igazad van, végül is elmentődik minden adatbázisba, nem csak a kódból kotorja ki a modullal definiált content type-okat sem. Kérdés, vajon ez tényleg hatékony-e így. (Mindent jól benyomni serializálva adatbázisba, aztán unserializálni, jó kis memóriazabáló módon...)

Én úgy gondolom, hogy a node_type_save() elment egy tartalomtípust, mint pl. amikor modulból létrehozunk egy tartalmat vagy bármit. A hook_node_info() pedig definiál egy olyant, ami a modul működéséhez feltétlenül szükséges.

Ja, hát én arra gondoltam - bár lehet, hogy nem sikerült jól kifejezni magam az eredeti hsz.-ben, aztán még beleírtam egy téveset is jól összecsapva -, hogy a node_type_save-vel mentett cuccok például az admin-felületen létrehozott content type-ok, tehát amiket én összeklattyogtatok a GUI-n, VAGY olyanok, amiket mondjuk modulból, "programmatically" hozok létre, a megfelelő paraméterekkel, míg a hook_node_info() meg arra szolgál, hogy egy modullal tudjak én is kínálni egy modul szerinti default tartalomtípust (ahogy írtad, amire feltétlen szükség van), ami aztán végül szintén bekerül az adatbázisba, ahogy írtad is.

Szóval ez még nem a Drupal 8, ezért itt még nincs olyan az alaprendszerben, hogy egy adat „csak úgy jön” valahonnan.

Ezt hogy érted? Mármint az említett dolgok miben lesznek mások D8-ban?

0
0
nevergone képe

Ha ismered a Features modult, akkor azt képzeld el, hogy ahhoz hasonló kerül az alaprendszerbe, csak még tutibban. Megszűnik a system tábla, minden fontos adat exportálhatóvá válik vagy eleve fájlban tárolódik. Erről szól a CMI. :)

1
0
Sk8erPeter képe

Hmm, ez jól hangzik, köszi!

0
0
nevergone képe

Annyit még hozzátennék pontosításnak, hogy a Features modul megmarad, az alaprendszer csak azt tartalmazza majd, hogy az adatokat exportálni és importálni lehessen. Viszont ahhoz a Features modul fog felületet adni, hogy összeválogathasd, hogy a módosítások és beállítások közül mi tartozik egy funkcióhoz.

„A 3.x version of Features is planned for Drupal 8 to integrate with the new configuration management system. If you simply need to export simple site configuration, the D8 configuration management system should be used instead of Features. You will use Features in D8 to export bundled functionality (like a "photo gallery feature").”

De ez már egy másik történet, nem kapcsolódik az eredeti kérdéshez.

1
0
balagan képe

Igazad van, a hook_node_info()-ra gondoltam, és a blog is tényleg azt használja. Azt hiszem az article-vel kevertem, de mindjárt utánajárok.(Igen, a Basic page-et néztem tegnap, és az node_type_save() fügvénnyel jön létre)
Szóval a hook_node_info() és a node_type_save() között mi a különbség?

0
0