ВопросПоле select list со своими значениями в каждой ноде

Необходимо создать поле text select list в типе материала с пустыми значениями, а чтобы значения потом можно было добавлять в каждой ноде свои. Есть ли модуль для данной задачи? Искал, не нашел.

Комментарии

Аватар пользователя Truman
Truman написал:

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

Если же значения "в каждой ноде свои" выбираются просто из словаря, то это просто создаёт словарь таксономии и используете поле "Термин таксономии" (или как там оно называется. не помню).

14.03.2013 00:53
Аватар пользователя Tony
Tony написал:

Спасибо! Но все гораздо проще. Теперь я понял, что надо создавать множественное текстовое поле (значения вносятся отвязные типа, например, длинны: 2 м., 5 м. 7 м. и т. д.), а в форматере ставить ему select list, чтобы потом посетители просматривая доступные значения из списка этого поля каждой ноды, делали сравнения нод по имеющимся значениям. Но пока нашел только Text list formatter, но он делает форматер HTML list (ul, ol), или через запятую, а подобный форматер, только select list пока не нашел. Есть подобный модуль, но он для восьмерки, а у меня семерка.

14.03.2013 01:41
Аватар пользователя Tony
Tony написал:

Вопрос снят. Сделал множественное текстовое поле и темизацию поля.
Вместо:

  <div class="field-items"<?php print $content_attributes; ?>>
    <?php foreach ($items as $delta => $item): ?>
      <div class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>><?php print render($item); ?></div>
    <?php endforeach; ?>
  </div>

Сделал:

  <select class="field-items"<?php print $content_attributes; ?>>
    <?php foreach ($items as $delta => $item): ?>
      <option class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>><?php print render($item); ?></option>
    <?php endforeach; ?>
  </select>

И на выходе получил select list со значениями множественного текстового поля в каждом option.

15.03.2013 02:20
Аватар пользователя Tony
Tony написал:

А если у нас во множественном текстовом поле введено только одно значение, тогда нам select list не нужен, тогда нужно оставить вывод по умолчанию. Для этого в шаблоне поля вместе вышеприведенного кода пишем условие if else:

<?php
 if ($element['#items']['0']['value']==0): {
?>
<div class="<?php print $classes; ?>"<?php print $attributes; ?>>
  <?php if (!$label_hidden): ?>
    <div class="field-label"<?php print $title_attributes; ?>><?php print $label ?>:&nbsp;</div>
  <?php endif; ?>
  <div class="field-items"<?php print $content_attributes; ?>>
    <?php foreach ($items as $delta => $item): ?>
      <div class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>><?php print render($item); ?></div>
    <?php endforeach; ?>
  </div>
</div>
<?php
 } else: {
?>
<div class="<?php print $classes; ?>"<?php print $attributes; ?>>
  <?php if (!$label_hidden): ?>
    <div class="field-label"<?php print $title_attributes; ?>><?php print $label ?>:&nbsp;</div>
  <?php endif; ?>
  <select class="field-items"<?php print $content_attributes; ?>>
    <?php foreach ($items as $delta => $item): ?> 
      <option class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>><?php print render($item); ?></option>
    <?php endforeach; ?>
  </select>
</div>
<?php
 } endif;
?>
15.03.2013 03:29
Аватар пользователя Tony
Tony написал:

Упс. Если поле типа integer, то:

if ($element['#items']['0']['value']==0):

А если поле типа text, то:

 if ($element['#items']['0']['value']==1):

..почему то..

15.03.2013 03:40
Аватар пользователя Tony
Tony написал:

Дошло наконец. Если значение введено одно, то надо использовать count($items) == 1), тогда:

<div class="<?php print $classes; ?>"<?php print $attributes; ?>>
	<?php if (!$label_hidden): ?>
		<div class="field-label"<?php print $title_attributes; ?>><?php print $label ?>:&nbsp;</div>
	<?php endif; ?>
<?php if (count($items) == 1) { ?>
	<div class="field-items"<?php print $content_attributes; ?>>
		<?php print render($items[0]); ?>
	</div>
<?php } else { ?>
	<select class="field-items"<?php print $content_attributes; ?>>
		<?php foreach ($items as $delta => $item): ?> 
			<option class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>><?php print render($item); ?></option>
		<?php endforeach; ?>
	</select>
<?php } ?>
</div>
15.03.2013 07:03
Аватар пользователя Spleshka
Spleshka написал:

Спасибо, что делитесь своими мыслями. Многим это будет интересно почитать.

15.03.2013 15:57

Комментировать