Доброго времени суток!
При создании полей посредством модуля CCK обнаружил, что при типе поля "текст", "текстовая строка" и при выборе возможности задавать более одного значения, каждая следующая строка после первой содержит заголовок поля, скрытый с помощью свойства CSS visibility: hidden, что, как правило, ведет к бану поисковыми системами.
При выборе типа отображения в админке "Выше" получается совсем неэстетично.
Мои попытки изменить отображение как с помощью настроек в админке, в том числе с помощью модуля Contemplate, так и с помощью ковыряния файла content-field.tpl.php (в PHP дуб) закончились провалом.
Примеры того, что мне нужно:
1. В идеале, чтобы, если поле имеет одно значение, то все (и заголовок, и содержимое поля) отображалось в одну линию, но если значений несколько, чтобы заголовок поля отображался в одной строке, а следующими строками с форматированием ненумерованного списка html (теги <ul><li>
) отображалось содержимое.
2. Если 1 вариант не получится, то чтобы содержимое отображалось просто форматированным ненумерованным списком вне зависимости от кол-ва значений.
Код шаблона content-field.tpl.php, отвечающий за вывод полей:
// $Id: content-field.tpl.php,v 1.1.2.6 2009/09/11 09:20:37 markuspetrux Exp $
/**
* file content-field.tpl.php
* Default theme implementation to display the value of a field.
*
* Available variables:
* - $node: The node object.
* - $field: The field array.
* - $items: An array of values for each item in the field array.
* - $teaser: Whether this is displayed as a teaser.
* - $page: Whether this is displayed as a page.
* - $field_name: The field name.
* - $field_type: The field type.
* - $field_name_css: The css-compatible field name.
* - $field_type_css: The css-compatible field type.
* - $label: The item label.
* - $label_display: Position of label display, inline, above, or hidden.
* - $field_empty: Whether the field has any valid value.
*
* Each $item in $items contains:
* - 'view' - the themed view for that item
*
* see template_preprocess_content_field()
*/
?>
<?php if (!$field_empty) : ?>
<div class="field field-type-<?php print $field_type_css ?> field-<?php print $field_name_css ?>">
<?php if ($label_display == 'above') : ?>
<div class="field-label"><?php print t($label) ?>: </div>
<?php endif;?>
<div class="field-items">
<?php $count = 1;
foreach ($items as $delta => $item) :
if (!$item['empty']) : ?>
<div class="field-item <?php print ($count % 2 ? 'odd' : 'even') ?>">
<?php if ($label_display == 'inline') { ?>
<div class="field-label-inline<?php print($delta ? '' : '-first')?>">
<?php print t($label) ?>: </div>
<?php } ?>
<?php print $item['view'] ?>
</div>
<?php $count++;
endif;
endforeach;?>
</div>
</div>
<?php endif; ?>
Проблема в том, что я не могу определить, какая переменная отвечает за кол-во значений полей, и вообще не получается отделить содержимое от заголовка поля (чтобы несколько строк содержимого отображались независимо от того, что заголовок только один).
Буду премного благодарен за помощь!
Комментарии
Думаю, что волноваться по поводу бана из-за такой ерунды не стоит... Яндекс просто не будет учитывать этот текст, как буд-то его нет....
по существу - можно просто закаментировать эти строчки
<?php if ($label_display == 'inline') { ?>
<div class="field-label-inline<?php print($delta ? '' : '-first')?>">
<?php print t($label) ?>: </div>
<?php } ?>
Iegova, спасибо! Я уже сам плюнул.
Но, если просто закомментировать указанные строки, то заголовка вообще не будет, я так понимаю?..