Drupal 6 / Views2 Grid style: целые ячейки ссылаются на узлы - PullRequest
1 голос
/ 11 мая 2010

На моем сайте в Drupal я создал страницу Users с помощью модуля Views, который представляет собой просто красиво оформленную сетку (таблицу HTML) пользователей. Я отображаю несколько полей для каждого из них, и имя, и изображение профиля настроены для ссылки на пользовательский узел.

Как лучше всего изменить его так, чтобы вся ячейка (HTML td) ссылалась на пользовательский узел? РЕДАКТИРОВАТЬ: Меня не интересует добавление тегов HTML-ссылок, а доступ к URL-адресу каждой страницы профиля.

Я рассмотрел изменение темы представления (переопределяя вывод в стиле, например views-view-grid - users.tpl.php), но не вижу элегантного способа получить URL-адрес пользовательского узла ,

РЕДАКТИРОВАТЬ: я реализовал временное решение в javascript, которое просматривает HTML каждой ячейки, извлекает URL первой ссылки и использует его, но нет ли лучшего способа сделать это с помощью переменных Drupal?

Спасибо за вашу помощь.

Ответы [ 4 ]

1 голос
/ 25 мая 2010

ОК. Я нашел лучший (супер простой) способ извлечения URL-адреса профиля, а также преодолел несколько проблем со всем решением блочной ссылки (приписанным espais), которые, как я думал, стоило документировать. Итак, вот полное решение моей первоначальной проблемы:

1) Добавьте пользовательский файл шаблона для переопределения views-view-fields.tpl.php (см. http://views -help.doc.logrus.com / help / views / using-theme - спасибо на баррапонто за полезную ссылку). В этом пользовательском файле вы должны обернуть весь код в ссылку и добавить div с четкими исправлениями непосредственно перед концом, чтобы растянуть ссылку на всю высоту контейнера.

<a class="td-link" href="user/<?php print $row->uid; ?>">
...
<div class="clear-fix"></div>
</a>

2) Теперь вам нужно избавиться от любых других ссылок внутри каждого элемента сетки, поскольку вам не разрешено вложить HTML-ссылки (это приводит к действительно странному поведению). Первое, что нужно сделать, это отредактировать View и убедиться, что ни в одном из полей не помечено «связать это поле с его пользователем». Затем, если вы хотите включить поле изображения профиля, вам нужно добавить небольшой модуль исправления, потому что по умолчанию нет способа остановить это поле как ссылку! Вы можете получить модуль из этого комментария: http://drupal.org/node/720772#comment-2757536

3) Наконец, CSS. Добавьте следующее в style.css вашей темы:

a.td-link {
    display: block;
    color: #000;
    text-decoration: none;
    border: 1px solid #E9EFF3;
}
a.td-link:HOVER {border-color: #85b3d4;}
a.td-link label {cursor: pointer;}
div.clear-fix {clear: both;}

Это удаляет форматирование ссылки из текста (поскольку мы хотим, чтобы весь блок выглядел как ссылка, а не только текст) и растягивает ссылку, чтобы заполнить контейнер. Это также делает изображение курсора непротиворечивым и добавляет приятный эффект границы, когда вы наводите курсор мыши на блок. Помните, что вы также можете добавить собственный класс CSS в свой View, что значительно упрощает выбор элементов для стилизации в вашем коде CSS.

1 голос
/ 11 мая 2010

Как на счет этого ... JavaScript не нужен

В вашем столе:

<td><a href="..." class="td_link">the link</a></td>
...

В вашем файле CSS:

.td_link {
   display: block; 
   width: 100%;
}

Таким образом, в основном все, что вам нужно сделать, это добавить класс к вашей ссылке и небольшой фрагмент CSS.

0 голосов
/ 19 мая 2010

Спаис и Скотт-Рейнен правы. но вместо того, чтобы размещать каждое поле под несколькими элементами , каждый из которых имеет стиль css, чтобы превратить их в блоки (которые могут иметь поля и отступы), почему бы не использовать один элемент ?

если все предназначено для ссылки на одно и то же место, вы можете поместить все это вместе в один элемент , хотя каждый элемент должен быть встроенным элементом ( вместо ). Вы можете сделать это, изменив шаблон строки: check http://views -help.doc.logrus.com / help / views / using-theme

в вашем случае скопируйте шаблоны из модуля представлений в папку вашей темы и соответственно переименуйте ее, как говорится в представлении «Тема: информация». убедитесь, что не выводится

или

или какой-либо другой элемент блока. если вам нужно разбить строки, используйте
.

0 голосов
/ 11 мая 2010

Важно различать реальные ссылки с тегами и произвольными элементами, на которые вы можете щелкнуть. Даже если вы не заботитесь о семантике, вы должны заботиться о том, чтобы ваши посетители не использовали JavaScript, особенно поисковые системы.

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

...