http://wm-monitoring.ru/ ')) {alert('Спасибо за то что установили нашу кнопку! =)');} else {alert('Очень жаль! =(');}"> http://wm-monitoring.ru/

Главная Новости

Скрываем ссылку за редиректом — Drupal 7

Опубликовано: 08.10.2017

Речь исключительно про Link field, для ссылок из контента существует модуль gotwo. Предпосылки могут быть разные, но задача скрыть ссылку — не такая редка вещь.

Дано: Drupal 7.8, тип содержимого с единственной ссылкой (link field).

Задача: сделать так, чтобы ссылка отображалась в виде /node/*nid*/goto, а при нажатии перекидывала посетителя на адрес, фактически содержащийся в ссылке (link url).

Потребуются: модули redirect , custom formatters , rules .


Скрипт продажи инфопродуктов и файлов на сайте с помощью партнеров и SMS оповещением SellFileMaster

Custom Formatters можно заменить на шаблон поля. Для примера field—field-url.tpl.php

<?php foreach ($items as $delta => $item) : ?&gt <a rel="nofollow" title="<?php print $element['#object']->field_url['und'][0]['title']; ?>" href="/node/<?php print $element['#object']->nid;?>/goto">LINK TEXT</a> <?php endforeach; ?>

Текст ссылки можно заменить на любое значение из $element[‘#object’], это все данные по текущему документу (node).

Custom formatter слегка удобнее использовать и оперативно редактировать. У меня получился такой код для link_field:

// Custom formatter for a link_field. $node = $variables['#object']; foreach (element_children($variables['#items']) as $delta) { $item = $variables['#items'][$delta]; $source = "Перейти по ссылке"; $destination = 'node/'.$node->nid.'/goto'; return l($source, $destination, array('html' => false, 'attributes'=>array('rel'=>'nofollow', 'title'=>'Перейти в по ссылке '.$node->title, 'class'=>array('my-link-field')))); }

Затем для нужного view mode меняем вывод нужной ссылки (Структура — Типы материалов — ВашТип — Управление отображением). Все, ссылку заготовили, но она пока ведет в никуда. Точнее, на ту же страницу, что и /node/*nid*, как любая ссылка на /node/*nid*/whatever.

Правило (Rule) настраиваем на событие «После редактирования существующего документа» и «После сохранения нового документа», чтобы не пропустить возможные изменения ссылки. Отфильтровываем условиями тип материала, если необходимо. Действие будет типа PHP code (модуль PHP нужно заранее включить). Код примерно такой, взят почти полностью из тестов, идущих с модулем Redirect.

Карта
rss