답변:
다음을 사용하여 필드 테마 시도 할 수 field.tpl.php
또는 theme_field()
.
예를 들어 (사용 field.tpl.php
) :
field.tpl.php
"modules / field / theme"에서 테마 디렉토리로 복사field--field-channel.tpl.php
이것이 작동하는 빠른 / 더러운 예제로 field--field-channel.tpl.php
다음과 같이 보일 수 있습니다.
<div class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
<?php if (!$label_hidden) : ?>
<div class="field-label"<?php print $title_attributes; ?>><?php print $label ?>: </div>
<?php endif; ?>
<div class="field-items"<?php print $content_attributes; ?>>
<?php foreach ($items as $delta => $item) : ?>
<div style="display:inline;" class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>>
<?php
print render($item);
// Add comma if not last item
if ($delta < (count($items) - 1)) {
print ',';
}
?>
</div>
<?php endforeach; ?>
</div>
</div>
.tpl 파일을 사용하여 여러 가지 방법으로이 작업을 수행 할 수 있지만 이는 하나의 옵션 일뿐입니다. 스타일 대신 클래스를 DIV에 추가하고 인라인 스타일을 사용하는 대신 스타일 시트를 변경하는 것이 좋습니다.
이제 텍스트 포맷터 모듈을 Drupal 7에서 사용할 수 있으며 사용자 정의 테마 작업없이이를 수행 할 수 있습니다.
theme_field
접근 방식을 사용하는 한 가지 방법이 있습니다 ( template.php
파일에 추가 ).
/**
* Implements theme_field()
*
* Make field items a comma separated unordered list
*/
function THEMENAME_field__NAME_OF_FIELD__NAME_OF_CONTENT_TYPE($variables) {
$output = '';
// Render the label, if it's not hidden.
if (!$variables['label_hidden']) {
$output .= '<div class="field-label"' . $variables['title_attributes'] . '>' . $variables['label'] . ': </div>';
}
// Render the items as a comma separated inline list
$output .= '<ul class="field-items"' . $variables['content_attributes'] . '>';
for ($i=0; $i < count($variables['items']); $i++) {
$output .= '<li>'. drupal_render($variables['items'][$i]);
$output .= ($i == count($variables['items'])-1) ? '</li>' : ', </li>';
}
$output .= '</ul>';
return $output;
}
CSS에서만 쉽게 할 수 있습니다.
.field-type-taxonomy-term-reference. 필드 항목 .field-item { 디스플레이 : 인라인 블록; * 디스플레이 : 인라인; * 줌 : 1; } .field-type-taxonomy-term-reference.field-items.field-item : after { 내용 : ","; } .field-type-taxonomy-term-reference.field-items.field-item : 마지막-자식 : 후 { 내용 : ""; }
content: ", \00a0"
: stackoverflow.com/a/5467676/724176
<?php
if ($node->taxonomy) {
foreach($node->taxonomy as $term) {
if ($term->vid == 3) { // the id of the vocabulary
$my_terms[] = l(
t($term->name),
'taxonomy/term/' . $term->tid
);
}
}
}
if ($my_terms) { ?>
<div class="clear-block">
<div class="terms">
<?php print implode(", ", $my_terms); ?>
</div>
</div>
<?php } ?>
구분 기호 및 랩퍼에 대해서도 훨씬 쉬운 분류법 모듈러 모듈을 사용하십시오. http://drupal.org/project/taxonomy_formatter
프로젝트 페이지에서 자세한 내용 :
분류 항목에 대한 사용자 정의 포맷터를 제공하기 위해 작성된 작은 모듈입니다. 기본 포맷터는 둘 다 div로 싸인 용어를 출력합니다. 이 모듈은 요소 유형, 랩퍼 유형, 둘 다에 대한 클래스, 사용 된 구분 기호 및 페이지에 링크되는지 여부를 지정할 수있는 새 포맷터를 추가합니다. 이것은 훨씬 더 사용자 정의 가능한 레이아웃 옵션을 제공합니다.