Перенос поля в ссылку условно в представлениях
Я совсем новичок в Drupal, но я уже несколько лет являюсь разработчиком. Я борюсь с тем, что должно быть очень простой задачей. Я создал поле "field_client_link", которое авторы могут использовать для ввода URL-адреса для типа контента портфолио о клиенте. Если автор ввел ссылку, я хочу завернуть в нее логотип клиента, в противном случае просто отобразите изображение. Я уверен, что это не так сложно, как мне кажется. В WordPress я бы просто написал что-то подобное и сделал с его помощью:
<?php
if (get_field('link')) {
echo '<a href="' . get_field('link') . '">' . get_field('image') . '</a>';
} else {
echo get_field('image');
}
?>
Вот мои настройки. Я установил скрытую ссылку, потому что не хочу, чтобы она выводилась, пока я не позвоню позже. Надеюсь, вы сможете мне помочь:
4 answers
К сожалению, я не знаю простого способа сделать это.
Позвольте мне быть более конкретным - вы привели пример представлений, в котором вы показываете, что можете Rewrite
вывод, есть некоторые tokens
, которыми вы можете заменить значения. Вы также показываете некоторые пользовательские php
, которые вы бы написали в wordpress.
Ну, для того, чтобы сделать это в Drupal; насколько я знаю, вы также должны использовать come custom php
. Представления предназначены для создания простых списков (считывания запросов SQL) в качестве выходных данных. Условные значения, такие как это по сути, выходит за рамки пользовательского интерфейса базовых представлений.
Таким образом, вы либо используете PHP-модуль Views, создаете файл шаблона views и функцию препроцессора, либо используете модуль, упомянутый @Patrickryan.
Существует легкий модуль, который позволяет прикреплять пользовательскую ссылку к любому изображению с помощью настройки форматирования изображений: Форматирование ссылок на изображения
Он автоматически определит любое поле ссылки и сделает возможным установить эту ссылку для изображения.
Обычно я просто иду по этому пути вместо того, чтобы иметь дело с маркерами или изменениями шаблона каждый раз, когда я хочу связать изображение.
Я надеюсь, что у вас есть отдельное поле для логотипа (например: client_logo) и поле ссылки (например: client_link) в вашем типе контента. Теперь установите и включите модуль Представления условных .
Перейдите к своему представлению, добавьте любые поля, которые вы хотите, включая client_logo и client_link в разделе ПОЛЯ. Исключите оба этих поля из отображения (отредактируйте свое поле и поставьте галочку Исключить из отображения). Установите для параметра "Форматирование" значение "URL, как обычный текст" в поле ссылки (field_client_link)
Согласно для приведенных выше рекомендаций по модулю выполните следующие действия 1. Нажмите "ДОБАВИТЬ" рядом с полями. Прокрутите вниз до "Просмотры: Условные просмотры", которые, вероятно, находятся в нижней части списка.
- Установите "Если это поле..." в поле ссылки (в данном примере field_client_link)
- Установите для "Является..." значение "НЕ ПУСТО"
- Затем добавьте вывод, используя html-теги и маркеры (вы можете найти маркеры в разделе "ПЕРЕМЕННЫЕ ЗАМЕНЫ")
Для этого примера в разделе "Затем выведите это..."
<a href='[field_client_link]'>[field_client_logo]</a>
И в разделе "В противном случае выведите это..."
[field_client_logo]
Примечание: Вам не нужно включать тег для печати логотипа, потому что [field_client_logo] уже включен с помощью тега в представлении Drupal.
Итак, я некоторое время играл с этим и, наконец, нашел решение, которое возможно только с представлениями (хотя в моем примере я использую модуль ссылки на сущности). Я подумал, что опубликую это здесь, так как мне потребовалась целая вечность, чтобы разобраться, и я надеюсь, что смогу избавить кого-то от лишних хлопот. В конце концов, это не так уж и сложно.
Цель здесь состоит в том, чтобы иметь представление, в котором перечислены все логотипы клиентов, и если у этого клиента есть связанный проект, перейдите по ссылке на него, в противном случае не делайте этого.
Шаг 1 - это чтобы получить модуль ссылки на сущность.
Шаг 2 - добавить поле ссылки на сущность в тип контента клиента с помощью виджета автозаполнения. Вы захотите настроить таргетинг на определенный тип контента. В моем случае я нацелился на проект. Убедитесь, что вы установили максимум 1 запись для этого поля/
Шаг 3 - это редактирование содержимого вашего клиента и добавление ссылок на проекты в только что созданное поле.
Шаг 4 настройте свой вид. Вы захотите получить только что созданное поле ссылки на сущность и настроил его. Вам нужно исключить его из отображения, и вы выбираете идентификатор сущности в параметре форматирования полей.
Шаг 5. Далее вам нужно переписать выходные данные поля ссылки на сущность. Вы захотите использовать узел формата / + [replacement_token], чтобы получить действительный URL-адрес. Важно отметить, что вам нужно перейти на вкладку Поведение без результатов и установить флажок скрыть перезапись, если она пуста. Поскольку мы скрыли наше поле сущности от отображения, теперь оно будет переписано только в том случае, если кто-то добавил ссылка на проект в типе контента клиента.
Шаг 6. Теперь нам нужно отредактировать настройки поля логотипа. Важно отметить, что порядок полей должен быть полем ссылки на сущность, за которым следует поле логотипа.
Шаг 7. В настройках поля логотипа перейдите к переписыванию результатов и проверьте вывод этого поля в виде ссылки. В пути ссылки мы можем использовать маркеры замены, и мы хотим использовать поле, которое мы только что переписали на шаге 5. В моем случае я переписал [проекты field_related_client_проектов]. Раньше это был просто идентификатор сущности. например, 768 или что-то в этом роде. Однако теперь этот заменяющий токен является node/nodeid, поэтому его можно использовать в качестве ссылки
Шаг 8. Снимите флажок скрыть перезапись, если он пуст.