РІШЕНО Як вивести вміст поля ноди в блок

Всім привіт! Допоможіть, будь ласка, вивести вміст поля ноди у блоці. Саме програмно! Потрібно одержати вміст поля field_email. Якщо не складно, напишіть докладно, тому що PHP у Drupal для мене, поки що, темний ліс(

Коментарі

Ні, поле створено у типі матеріалу. Якщо так, то теж хуки? Блок знаходиться при цій ноді ... поруч висить.

якщо на сторінці ноди, то можна так у блоці.

якщо на сторінці ноди, то можна так у блоці.

На жаль, блок взагалі не виводиться. За межами php пишу текст.. а він все одно:(

якщо на сторінці ноди, то можна так у блоці.

в блок пхати php код не варто - краще все ж таки в hook_page_alter поле перемістити з ноди в потрібний регіон

якщо на сторінці ноди, то можна так у блоці.

в блок пхати php код не варто - краще все ж таки в hook_page_alter поле перемістити з ноди в потрібний регіон

Хуки я ще повивчаю, дякую. Але мені після того, як отримаю, треба обробляти якось. Не просто вивести, а за певним правилом. Хоча це, напевно, можна в окремий файл і підключити 0_о

Блок вже якось створений або ви хочете створити абсолютно новий блок? У першому випадку потрібний hook_block_view_alter. У ньому наступний код delta == 'delta') < // замінити на потрібну delta if (arg(0) == 'node' &&isnumeric(arg(1))) $node = menu_get_object(); $field = field_get_items('node', $node, 'field_email'); $field_item = reset($field); $email = $field_item['email']; // для випадку, якщо тип поля email, йому є модуль $email = $field_item['value']; // для випадку, якщо тип поля просто текст if (is_array ($data['content']) $data['content']['email'] = array ( '#type' => 'Markup', '#markup' => $email // тут можна обернути в будь-які html теги (3)); > else $data['content'] = .$email; // контент може бути готовим html рядком. > > ?> Для випадку, якщо створюєте новий блок через адмінку Можливі дрібні помилки, але загалом код так має виглядати.

Не просто вивести, а за певним правилом. Хоча це, напевно, можна в окремий файл і підключити 0_о

Не треба підключати файли. для першого випадку створюєте модуль, і вся логіка в модулі, для другого випадку логіку можна писати прямо в коді блоку. Якщо логіка дуже складна, краще створити свій модуль і там програмно через хуки визначити блок (це якщо потрібен кастомний блок).

Блок вже якось створений або ви хочете створити апослеолютно новий блок? У першому випадку потрібний hook_block_view_alter. У ньому наступний код delta == 'delta') < // замінити на потрібну delta if (arg(0) == 'node' &&isnumeric(arg(1))) $node = menu_get_object(); $field = field_get_items('node', $node, 'field_email'); $field_item = reset($field); $email = $field_item['email']; // для випадку, якщо тип поля email, йому є модуль $email = $field_item['value']; // для випадку, якщо тип поля просто текст if (is_array ($data['content']) $data['content']['email'] = array ( '#type' => 'markup', '#markup' =>$email // тут можна обернути в будь-які html теги ); > .$email;// контент може бути готовим html рядком. але загалом код так має виглядати.

Не просто вивести, а за певним правилом. Хоча це, напевно, можна в окремий файл і підключити 0_о

Не требаніякі файли не підключати. для першого випадку створюєте модуль, і вся логіка в модулі, для другого випадку логіку можна писати прямо в коді блоку. Якщо логіка дуже складна, краще створити свій модуль і там програмно через хуки визначити блок (це якщо потрібен кастомний блок).

Блок уже створено через адмінку. Спробував другим способом, але все одно блок не виводить.

Напевно, все те, що я хочу, можна і в блок запхати, тому що поки я ще якось розберуся зі створенням модуля. + точного уявлення цього фільтра немає.. Ввечері спробую першим способом, але тоді мені буде набагато складніше все це уявляти.. :(