Создание надежного кода для полей, в седьмом Друпале

Главные вкладки

Аватар пользователя restyler restyler 26 августа 2011 в 12:34

Это перевод моего блогпоста Writing robust code that uses fields, in Drupal 7

В семерке изменился способ прямого доступа к полям (cck в друпале 6.x). В шестерке мы пишем:

<?php
$field_val = $node->field_yourfield[0]['value'];
?>

В семерке уже надо писать:

<?php
$field_val = $node->field_yourfield[LANGUAGE_NONE][0]['value'];
?>
(во всяком случае, так рекомендуют писать официальные доки).
То есть, у нас появилось разделение значений поля по языкам.

Я уж не знаю, насколько это упростило создание кода, который хорошо работает с несколькими языками (сложных мультиязычных проектов в d7 я пока не делал) - надеюсь, упростило серьезно, но для "обычных" сайтов с одним активным языком этот подход добавляет некоторую головную боль разработчикам.

Проблема здесь в том, что надеяться на правильную работу константы LANGUAGE_NONE нельзя!

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

Прочитать статью: http://sidashin.ru/blog/safe-drupal7-fields-code

Комментарии

Аватар пользователя airstarh airstarh 21 июня 2012 в 15:35

Коллега, привет!

___

Коллега, на стринмце, где у вас сама статья расположена никак не получается оставить комментарий - там капча как-то нетак работает.
А ниже то, что я там пытался оставить.
___
Здорово написано!
А где можно подробнее почитать? На английском тоже подойдет.

А еще у вас ошибока в примере кода

$node = node_load(323);
$wrapper = entity_metadata_wrapper('node', $wrapper);

Все-таки там в параметрах $node надо указать.

Еше раз спасибо