Добрый день, All!
Очень нужна помощь, проблема вроде элементарная, но не могу решить...
Суть такая. Я переписываю "Стиль вывода" views-view-table.tpl.php для модуля views. У меня есть два поля - одно ссылка, второе - картинка.
Если просто пишу:
Все отлично. Выводятся рядом картинка и ссылка. Но мне нужно чтобы картинка - вела по url-ссылки... Т.е. вместо анкора ссылки - выводить картинку.
Перепробовал кучу всего, но безуспешно... Если бы хоть получилось из ссылки извлечь непосредственно url - то через l() - сделал бы правильную ссылку, но тоже не получается.. Замкнутый круг просто((
И еще вопрос. В идеале мне нужно чтобы картинка ссылалась туда куда и ссылка только в том случае если ссылка не пустая. А если ссылка пустая - то ссылка назначенная картинке не менялась (в настройках views я сделаю чтобы картинка ссылалась на свой материал).
Условия я напишу, мне бы понять принцип.. Впечатление что я не знаю какой-то элементарной функции, типа обратной к l() - получить по ссылке ее составные части...
Буду очень благодарен за любые советы!
---
С уважением,
Даниил
Комментарии
Можно темизировать поля в отдельных шаблонах вывода. Ну, как там: field_field_img_slide_fid.tpl.php или что-то вроде. А уже в шаблоне вывода поля изменить вывод поля как вам угодно.
зы. Смотрите шаблоны вывода views, там есть штатный генератор шаблонов для всех использованных полей с описанием всех доступных переменных. URL поля должно быть отдельно где-то среди данных поля.
Не представляю как можно в шаблонах полей обменять значениями анкоры двух ссылок... Может я не прав, но если докопаться до непосредственного вывода ссылок, то они окажутся в разных пространствах видимости и поменять значения местами не получится... Или я неправильно понял идею?
С шаблонами вывода как я понимаю та же проблема - можно настроить отдельные поля, но присвоить одному полю URL другого у меня не получается... Тем более что это нужно сделать для множества полей которые выводятся всем скопом через views...
Неужели нет простой функции которая разбирает ссылку на URL и анкор?..
Уже думаю в сторону регулярных выражений чтобы отделить одно от другого, но это же бред.. Наверняка в поле анкор и url хранятся отдельно, а мне придется их сливать вместе, а потом разделять рег. выражениями... (((
Правильно поняли, вообще-то. Ну используйте тогда шаблон "уровнем выше" - я уж не помню, какой там идёт (raw-..tpl.php?). Там доступны данные для всех полей. Одновременно.
Честно говоря - проблема в общем-то высосана из пальца. Не усложняйте и не химичьте. Копайте шаблоны views, используйте print_r или var_dump для переменных. Я знаю, что на каком-то уровне темизации вы получите доступ к данным всех полей ($fields?) - знаю, потому что сам делал это неоднократно.
И тогда используйте не цикл, а прямое обращение к нужным полям - в шаблоне.
ЗЫ. То, как вы сейчас делаете:
<?php
print $row['field_img_slide_fid'];
?>
выведет уже содержимое поля как raw (ну, типа отрендеренный) контент. А вам же нужно получить исходные данные URL из массива поля. А это, как я писал выше - var_dump, только где, в каком шаблоне - не помню. Увы
Ещё можно попробовать сформировать нужный вид поля непосредственно из views. Банально - выбирая заготовки-токены в качестве содержимого поля. Если не ошибаюсь, во views можно сначала объявить поле "откуда-берём-url" ('field_link_slide_nid'), а затем объявить поле "куда-вставляем-url" (т.е. изображение или 'field_img_slide_fid'), в котором использовать URL из ранее полученного поля ("Rewrite link" или как-то вроде того).
К сожалению, как понял во всех шаблонах где можно получить все поля - они уже отрендерены в raw...
Это я пробовал, но views вставляет в ссылку не url а всю ссылку целиком... что нарушает код html и конечно не работает.
В общем копаю в сторону вырезания url из ссылки с помощью регулярного выражения...