Вопрос по хуку hook_node_insert

18 декабря 2014 в 16:56

Добрый день!
Прошу прощения за перепост, но к сожалению в предыдущем посте http://www.drupal.ru/node/114605 мне ничего так ни кто толком разъяснить не смог. Задача в принципе та же. Есть простенькая таблица, лежащая в базе вместе с таблицами Друпала назовем её tovar (id товара, название товара, артикул и количество товара). Создан тип материала с полями (Idтовара, наименование товара и место хранения товара). Нужно что бы при добавлении содержимого этого типа материала вписав в поле Idтовара его id и нажатии кнопки "Сохранить" происходило обращение к таблице tovar и по id вытаскивалось название товара и подгружалось в эту ноду. Погуглив нашел хук hook_node_insert, но так и не понял, как мне его использовать(((( Если кто то сможет на примере объяснить как это сделать или скинет ссылку на русскоязычный пример буду очень признателен.

Комментарии

Аватар пользователя Inj Inj 0

Помню когда-то сам смотрел на хуки квадратными глазами Smile
Если коротко, то нужно создать свой модуль, который будет состоять из двух файлов:
ваш_модуль.info
ваш_модуль.module

в первом будет описание (инфы в нете, в том числе и рускоязычной пруд пруди), во втором соб-сно сам хук:

<?php

function ваш_модуль_node_insert($node) {

/*  тут Ваш код,
*   выполняемый при создании ноды
*/

}

вот и весь файл. "ваш_модуль" заменить на придуманное название для новосозданного модуя

18 декабря 2014 в 21:25

Inj wrote:
Помню когда-то сам смотрел на хуки квадратными глазами Smile
Если коротко, то нужно создать свой модуль, который будет состоять из двух файлов:
ваш_модуль.info
ваш_модуль.module

в первом будет описание (инфы в нете, в том числе и рускоязычной пруд пруди), во втором соб-сно сам хук:

<?php

function ваш_модуль_node_insert($node) {

/*  тут Ваш код,
*   выполняемый при создании ноды
*/

}

вот и весь файл. "ваш_модуль" заменить на придуманное название для новосозданного модуя


Это в первом же посте про создание модуля можно найти))))) Трудность как раз не в создании 2-х файликов (с этим и первоклассник справится), а в том что нет примера с описанием что откуда берется при использовании хука в коде модуля... А по поводу нанять кого-нибудь - хотелось самому разобраться что к чему, вот в чем дело...

18 декабря 2014 в 22:22

"mihon_kri" wrote:
ссылку на русскоязычный пример буду очень признателен

ссылка google.com
запросы:
drupal hook
hook_node_insert

узнавал - гугл вкурсе..

18 декабря 2014 в 22:28
Аватар пользователя Inj Inj 0

ну так а что неясно? Эта функция будет выполняться при добавлении новой ноды. Все ёё данные хранятся в переменной $node. только забыл амперсанд

function ваш_модуль_node_insert(&$node) {

теперь все Ваши безобразия, творимые с этой нодой в ней же и останутся.
Фактически

"mihon_kri" wrote:
Нужно что бы при добавлении содержимого этого типа материала вписав в поле Idтовара его id и нажатии кнопки "Сохранить" происходило обращение к таблице tovar и по id вытаскивалось название товара и подгружалось в эту ноду.

соответственно в этой функции написать что

if ($node->type == 'your_type' {

далее, насколько я понимаю, запрос в базу к вашей таблице с целью получения названия товара. Потом

$node->you_field['und'][0]['value'] = Вытянутое_из_базы_название; //просьба гуру не пинать про ленгвидж и прочую хрень, пример из разряда попроще

Вот и весь сказ

18 декабря 2014 в 23:05

"RxB" wrote:
Как будто кто-то знает о разнице между 5.2 и 5.3++ пыхами

дык никто и не догадывается даже к чему ты это вообще сказал

18 декабря 2014 в 23:57
Аватар пользователя Inj Inj 0

"drupby" wrote:
А зачем объект ноды передавать по ссылке?

дык, что бы заполненное поле ноды сохранилось нужно либо тянуть ноду ссылкой, либо потом ретурн делать, нет?

На звание гуру не претендую, всегда готов учиться дальше, так что выслушаю все замечания. Будет полезно и мне, и создателю топа.

19 декабря 2014 в 0:02

"Inj" wrote:
дык, что бы заполненное поле ноды сохранилось нужно либо тянуть ноду ссылкой, либо потом ретурн делать, нет?

ну дык объект как бы и без передачи по ссылке изменится (http://php.net/manual/ru/language.oop5.references.php и вот пример http://codepad.org/HN5kTkVc), а во-вторых hook_node_insert не для того чтобы объект ноды менять

а по теме топика, так в документации по api практически такой же пример и приведен https://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_insert/7, только запрос минимально подправить

19 декабря 2014 в 0:28
Аватар пользователя Inj Inj 0

"drupby" wrote:
ну дык объект как бы и без передачи по ссылке изменится

а можно чуток подробнее, плз? Хоть в какую сторону гуглить чтобы про это почитать. Почему измениться? Дело с объектом, друпалом, версией пхп или ещё чего? Мне б только направление..

"drupby" wrote:
во-вторых hook_node_insert не для того чтобы объект ноды менять

про это, каюсь, даж не вчитывался. Вопрос стоял как применить, а подобрать нужный, думаю автор сможет и сам

19 декабря 2014 в 0:20