Пошукова оптимізація і просування сайтів - blog archive створення дочірніх нод з батьківської

Створення дочірніх нод з батьківської Ноди

Знайшов два цікавих мануала на просторах мережі, на тему «Зв'язок« батько-дитина »за допомогою Node reference«, і боюся що загубиться, зроблю копію собі ... Ось перший з них.

На першому етапі ми користуємося модулем References (drupal.org/project/references). А саме - Node reference який в нього включений. Цей модуль пов'язує 2 різних типи нод (типу вмісту) один з одним. Причому один тип це до якого кріпиться (point) і тип який прикріплюється (offer).

Отже відкриваємо налаштування полів типу вмісту offer (прикріплюється) і дивимося:

C працею, але можна розгледіти поле Node reference. На computed поки не зва. Отже саме це поле нас прикріплює до «основному» типу вмісту (point). Тиснемо «Змінити». Ну тут у нас все вже налаштовано, тобто прикріплено до Будівлі (point).

Пошукова оптимізація і просування сайтів - blog archive створення дочірніх нод з батьківської

Тобто коли ми створюємо «Презентацію» (offer) в даний момент (/ node / add / offer).

Пошукова оптимізація і просування сайтів - blog archive створення дочірніх нод з батьківської

Ми зі списку будівель (на малюнку в самому низу) можемо вручну вибрати до чого прикріпитися. Весь «метод Жиліна» полягає в тому, щоб Будівля (point) вибиралося зі списку автоматично при створенні Презентації (offer).

Computed field (drupal.org/project/computed_field)

Цей модуль створює поле, яке дозволяє виконувати довільний php код під час відображення типу вмісту (node) і / або під час під час його збереження. У «методі Жиліна» ми використовує його двічі.

Ось на зображенні з працею але можна розгледіти наше поле на цій сторінці. Тиснемо «Змінити»

Тут у нас php код вставлений в поле Display Code (PHP) як на картинці. Цей код буде виконуватися завжди коли запрошено відображення типу вмісту (в нашому випадку - point).

$ Display_output = l ( 'СТВОРИТИ ПРЕЗЕНТАЦІЮ', 'node / add / offer /'. $ Entity-> nid, array ( 'query' => array ( 'destination' => 'node /'. $ Entity-> nid) ));

Собствено ось він. Він створює при отображентіі типу вмісту (point) «основний» посилання на створення типу вмісту «прикріплюється» (offer). На яку можна натиснути і потрапити на створення Ноди offer.

Пошукова оптимізація і просування сайтів - blog archive створення дочірніх нод з батьківської

А так же він передає в цьому посиланню свій nid (node ​​id).

Тобто вона виглядає приблизно так:

Де 70 це nid типу вмісту point.

Зберігаємо nid типу вмісту point в поле node refernce

Поле node reference ми вже створили вище.

Отже ми вже потрапили на сторінку де створюється offer. І грубо кажучи ми повинні цей nid зловити і впихнути в поле node reference.

Для цього ми скористаємося полем Computed field

Повернемося на / admin / structure / types / manage / offer / fields

Тепер в поле Computed field тиснемо «Змінити»

Пошукова оптимізація і просування сайтів - blog archive створення дочірніх нод з батьківської

В як ми бачимо в поле Computed Code (PHP) ми вставили наступний код.

$ This_uri = request_uri ();
$ Point_nid = explode ( "/", $ this_uri);
if (is_numeric ($ point_nid [5])) <
$ Entity-> field_display_point [$ langcode] [0] [ 'nid'] = $ point_nid [5];
> else <
>
$ Entity_field [0] [ 'value'] = '';

Тут я після else хотів вставити дебаг, але не встиг. У цьому коді ми беремо посилання яку передали з point типу / node / add / offer / 70? Destination = node / 70. І висмикуємо з нього nid (цифру 70). Далі ми прогамно вставляємо nid в поле node reference який ми вже створили. Цей код виконується під час збереження типу вмісту offer.

Отже зв'язку ми зробили і node reference під час відображення offer, сам покаже що даний offer пкрікріплен до point з якого був створений. Тепер треба щоб у всіх point отрисовать все offer які були з нього створені. Для цього скористаємося модулями views (drupal.org/project/views) і viewfield (drupal.org/project/viewfield)

Viewfield возволяет views вставляти в поля типу вмісту.

Створюємо views / admin / structure / views / add

І настройки у нас виглядають наступним чином.

Пошукова оптимізація і просування сайтів - blog archive створення дочірніх нод з батьківської

Тобто relationship у нас посилається на будівлю (point), а CONTEXTUAL FILTERS (Arguments в drupal 6) вказує на nid будівлі. Ну і в FIELDS вказуємо Тема, щоб було що відображати.

Далі переходимо на

Де створюємо поле типу views.

Ось його налаштування:

Тобто ми вказуємо назву views який був створений вище і в поле аргументс вказуємо token nid.

От і все. Тепер при відображенні типу вмісту point, повинні відмалювати посилання на на offer які прикріплені до нього.

Схожі статті