Как реализовать? Как так настроить CCK с views?

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

Аватар пользователя digital_sword digital_sword 23 февраля 2009 в 12:12

Данные со стороннего скрипта попадают в CCK поле field_firm. Причем эти данные - число. Каждому числу соостветствует страница на сайте. Например: 0010 - страница /an/expert. 0011 - страница /an/ufa. и т.п. Все соответствия известны.

Дальше создаю в views представление. Одно из полей - field_firm. Надо, чтобы показывались не 0010, а ссылка на соответствующую числу ноду, an/expert . Как-то можно сделать?

Комментарии

Аватар пользователя digital_sword digital_sword 23 февраля 2009 в 13:06

Юзал поиск. Не нашел достаточно подробных объяснений.
Смотрю исходный код страницы с представлением:

<th class="views-field views-field-field-firms-nid-1">Предприятие</th>

Смотрю в настройках представления Theme: Information. Для поля предприятие views-view-field.tpl.php выделено жирным, остальные нежирным. Что изменять? Что редактировать?
Можете подробнее?

"fairwind" wrote:
Добавить в ноду сылку на соответствующую ноду, и выводить ее.

Такие ноды формируются скриптом в большом количестве. И с разными кодами. Как я могу добавить в ноду с кодом 0010 ссылку an/expert, а в ноду с кодом 0011 an/ufa? Заколебусь редактировать

Аватар пользователя penexe penexe 23 февраля 2009 в 13:41

на примере моего вида

  • views-view-field.tpl.php - шаблон для всех полей во всех видах
  • views-view-field--title.tpl.php - шаблон поля title во всех видах
  • views-view-field--og-my.tpl.php - шаблон всех полей вида og_my
  • views-view-field--og-my--title.tpl.php - шаблон поля title для вида og_my
  • views-view-field--default.tpl.php - шаблон для всех полей видов с дефолтным отображением
  • views-view-field--default--title.tpl.php - шаблон для поля title для видов с дефолтным отображением
  • views-view-field--og-my--default.tpl.php - шаблон всех полей вида og_my для дефолтного отображения
  • views-view-field--og-my--default--title.tpl.php - шаблон для поля title вида og_my для дефолтного отображения

создаете файл с нужным именем, копируеш туда код по ссылке рядом с эти списком, модифицируешь как надо, жмешь Rescan template files, нужный файл должен подсветится. сохраняешь вид и радуешься
вам наверно такой код надо использовать

<?php
$data = $row->{$field->field_alias};
if($data == '0010') {
  print l(t('wow!'),'an/expert');
} elseif ($data == '0011') {
  print l(t('wow!'),'an/ufa');
}
?>
Аватар пользователя digital_sword digital_sword 23 февраля 2009 в 16:21

wow! Все работает! Спасибо!

$data = $row->{$field->field_alias};

Это переопределение текстового поля в ссылочное, или что?
$row - ?
$data - это строковая переменная-значение для моего поля целиком?
Материал на эту тему в каком разделе документации читать? (не о темизации, а значении полей и т.п.)


И еще: мне к полю как можно рядом приписать значение другого CCK поля, например, fiels_adres?

Аватар пользователя digital_sword digital_sword 23 февраля 2009 в 17:39

"penexe" wrote:
print_r($row);
тут все данные для поля, хоть что выводите

А как этим пользоваться, чтобы здесь же содержимое другого поля вывести, например fiels_adres?

"penexe" wrote:
http://views-help.doc.logrus.com/admin/advanced_help/views[/quote]
англоязычная. На api.drupal такого нет? (Не для views, а для стандартных переменных)

Аватар пользователя penexe penexe 23 февраля 2009 в 17:59

добавляешь в тот файл
<?php drupal_set_message('

'.print_r($row,1).'

');?>
переходишь на страницу с видом, появятся чтото вроде этого

stdClass Object
(
    [nid] => 3
    [node_data_field_image_field_image_fid] => 6
    [node_data_field_image_field_image_list] => 0
    [node_data_field_image_field_image_data] => a:0:{}
    [node_data_field_image_nid] => 3
    [node_type] => group
    [node_title] => Футбольный клуб!!!
    [og_og_description] => Говорим тут о футболе и болеем за наших!!!
    [og_og_selective] => 1
)

например $row->og_og_description выведет "Говорим тут о футболе и болеем за наших!!!"
а $row->node_data_field_image_field_image_fid — 6
если я ничего не путаю то так можно выводить в одной ячейке таблицы данные из нескольких полей, а столбцы можно скрыть путем не включения в отображения этих полей

Аватар пользователя digital_sword digital_sword 23 февраля 2009 в 20:18

Все работает! Спасибо за очень подробный пример.
А все-таки где в API искать доки по l(), t(), print_r() и т.д.? А то хочу разделить одно поле на другое, пишу bcdiv(), а мне ошибка