Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Как закрыть поле CCK от индексации?

Как закрыть поле CCK от индексации?
, by

Здравствуйте, Иван.

Подскажите, пожалуйста, в вопросе индексации роботами некоторых материалов на сайте.

 

Возникла необходимость создать поле: "подробнее" для содержимого : "товар", но это поле будет скрыто для пользователей, как для зарегистрированных, так и для анонимных. Это поле будет видеть только администратор!

 

В этом поле будут ссылки, некоторый текст, который не должен попасть в индексацию, некоторые подсказки администратору. Как в таком случае  закрыть доступ всем роботам и запретить это поле индексировать? Спасибо за помощь!

1 answer
votes: 596
Answer

Здравствуйте, первое что приходит на ум установить модуль fields permissions и выводить это полем запрещенным к просмотру другим пользователям, НО это плохо скажется на кеширование, каждой роле нужен будет свой кеш. Если сайту не нужно кеширование, то этот путь подойдет. И кажется еще блоки перестают кешироваться при включения модуля, что самое печальное.

Лучше переопределить шаблон поля и в нем сделать проверку, например вот такой шаблон поля fields_example,
field--field_example.tpl.php:

<?php
   global $user;
   if(in_array('administrator', $user->roles)){ //при условие что роль administrator есть
?>


<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
}
?>

 Если просто нужно админу показывать поле то проверять можно $user->uid == 1.