Перенос поля в ссылку условно в представлениях


Я совсем новичок в 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');
    }

?>

Вот мои настройки. Я установил скрытую ссылку, потому что не хочу, чтобы она выводилась, пока я не позвоню позже. Надеюсь, вы сможете мне помочь:

Views settings

Configure field client link

Configure field client logo

 2
Author: chap, 2015-04-28

4 answers

К сожалению, я не знаю простого способа сделать это.

Позвольте мне быть более конкретным - вы привели пример представлений, в котором вы показываете, что можете Rewrite вывод, есть некоторые tokens, которыми вы можете заменить значения. Вы также показываете некоторые пользовательские php, которые вы бы написали в wordpress.

Ну, для того, чтобы сделать это в Drupal; насколько я знаю, вы также должны использовать come custom php. Представления предназначены для создания простых списков (считывания запросов SQL) в качестве выходных данных. Условные значения, такие как это по сути, выходит за рамки пользовательского интерфейса базовых представлений.

Таким образом, вы либо используете PHP-модуль Views, создаете файл шаблона views и функцию препроцессора, либо используете модуль, упомянутый @Patrickryan.

 0
Author: tenken, 2015-04-28 01:12:08

Существует легкий модуль, который позволяет прикреплять пользовательскую ссылку к любому изображению с помощью настройки форматирования изображений: Форматирование ссылок на изображения

Он автоматически определит любое поле ссылки и сделает возможным установить эту ссылку для изображения.

Обычно я просто иду по этому пути вместо того, чтобы иметь дело с маркерами или изменениями шаблона каждый раз, когда я хочу связать изображение.

 1
Author: Patrick Ryan, 2015-04-28 01:10:09

Я надеюсь, что у вас есть отдельное поле для логотипа (например: client_logo) и поле ссылки (например: client_link) в вашем типе контента. Теперь установите и включите модуль Представления условных .

Перейдите к своему представлению, добавьте любые поля, которые вы хотите, включая client_logo и client_link в разделе ПОЛЯ. Исключите оба этих поля из отображения (отредактируйте свое поле и поставьте галочку Исключить из отображения). Установите для параметра "Форматирование" значение "URL, как обычный текст" в поле ссылки (field_client_link)

Согласно для приведенных выше рекомендаций по модулю выполните следующие действия 1. Нажмите "ДОБАВИТЬ" рядом с полями. Прокрутите вниз до "Просмотры: Условные просмотры", которые, вероятно, находятся в нижней части списка.

  1. Установите "Если это поле..." в поле ссылки (в данном примере field_client_link)
  2. Установите для "Является..." значение "НЕ ПУСТО"
  3. Затем добавьте вывод, используя html-теги и маркеры (вы можете найти маркеры в разделе "ПЕРЕМЕННЫЕ ЗАМЕНЫ")

Для этого примера в разделе "Затем выведите это..."

<a href='[field_client_link]'>[field_client_logo]</a>

И в разделе "В противном случае выведите это..."

[field_client_logo]

Примечание: Вам не нужно включать тег для печати логотипа, потому что [field_client_logo] уже включен с помощью тега в представлении Drupal.

 0
Author: ErangaJ, 2015-04-28 07:35:49

Итак, я некоторое время играл с этим и, наконец, нашел решение, которое возможно только с представлениями (хотя в моем примере я использую модуль ссылки на сущности). Я подумал, что опубликую это здесь, так как мне потребовалась целая вечность, чтобы разобраться, и я надеюсь, что смогу избавить кого-то от лишних хлопот. В конце концов, это не так уж и сложно.

Цель здесь состоит в том, чтобы иметь представление, в котором перечислены все логотипы клиентов, и если у этого клиента есть связанный проект, перейдите по ссылке на него, в противном случае не делайте этого.

Шаг 1 - это чтобы получить модуль ссылки на сущность.

Шаг 2 - добавить поле ссылки на сущность в тип контента клиента с помощью виджета автозаполнения. Вы захотите настроить таргетинг на определенный тип контента. В моем случае я нацелился на проект. Убедитесь, что вы установили максимум 1 запись для этого поля/

Шаг 3 - это редактирование содержимого вашего клиента и добавление ссылок на проекты в только что созданное поле.

Шаг 4 настройте свой вид. Вы захотите получить только что созданное поле ссылки на сущность и настроил его. Вам нужно исключить его из отображения, и вы выбираете идентификатор сущности в параметре форматирования полей.

Settings for entity reference field

Шаг 5. Далее вам нужно переписать выходные данные поля ссылки на сущность. Вы захотите использовать узел формата / + [replacement_token], чтобы получить действительный URL-адрес. Важно отметить, что вам нужно перейти на вкладку Поведение без результатов и установить флажок скрыть перезапись, если она пуста. Поскольку мы скрыли наше поле сущности от отображения, теперь оно будет переписано только в том случае, если кто-то добавил ссылка на проект в типе контента клиента.

Rewrite results settings for entity reference field

Шаг 6. Теперь нам нужно отредактировать настройки поля логотипа. Важно отметить, что порядок полей должен быть полем ссылки на сущность, за которым следует поле логотипа.

Views base settings

Шаг 7. В настройках поля логотипа перейдите к переписыванию результатов и проверьте вывод этого поля в виде ссылки. В пути ссылки мы можем использовать маркеры замены, и мы хотим использовать поле, которое мы только что переписали на шаге 5. В моем случае я переписал [проекты field_related_client_проектов]. Раньше это был просто идентификатор сущности. например, 768 или что-то в этом роде. Однако теперь этот заменяющий токен является node/nodeid, поэтому его можно использовать в качестве ссылки

Rewrite results for logo

Шаг 8. Снимите флажок скрыть перезапись, если он пуст.

 0
Author: chap, 2015-05-12 02:23:49