Как изменить анкор ссылки не меняя url?

Главные вкладки

Аватар пользователя QuienSabe QuienSabe 22 декабря 2012 в 9:58

Добрый день, All!

Очень нужна помощь, проблема вроде элементарная, но не могу решить...
Суть такая. Я переписываю "Стиль вывода" views-view-table.tpl.php для модуля views. У меня есть два поля - одно ссылка, второе - картинка.
Если просто пишу:

print $row['field_img_slide_fid'];
print $row['field_link_slide_nid'];

Все отлично. Выводятся рядом картинка и ссылка. Но мне нужно чтобы картинка - вела по url-ссылки... Т.е. вместо анкора ссылки - выводить картинку.
Перепробовал кучу всего, но безуспешно... Если бы хоть получилось из ссылки извлечь непосредственно url - то через l() - сделал бы правильную ссылку, но тоже не получается.. Замкнутый круг просто((

И еще вопрос. В идеале мне нужно чтобы картинка ссылалась туда куда и ссылка только в том случае если ссылка не пустая. А если ссылка пустая - то ссылка назначенная картинке не менялась (в настройках views я сделаю чтобы картинка ссылалась на свой материал).

Условия я напишу, мне бы понять принцип.. Впечатление что я не знаю какой-то элементарной функции, типа обратной к l() - получить по ссылке ее составные части...

Буду очень благодарен за любые советы!

---
С уважением,
Даниил

Комментарии

Аватар пользователя OldWarrior OldWarrior 22 декабря 2012 в 10:22

Можно темизировать поля в отдельных шаблонах вывода. Ну, как там: field_field_img_slide_fid.tpl.php или что-то вроде. А уже в шаблоне вывода поля изменить вывод поля как вам угодно.

зы. Смотрите шаблоны вывода views, там есть штатный генератор шаблонов для всех использованных полей с описанием всех доступных переменных. URL поля должно быть отдельно где-то среди данных поля.

Аватар пользователя QuienSabe QuienSabe 22 декабря 2012 в 10:47

"OldWarrior" wrote:
Можно темизировать поля в отдельных шаблонах вывода. Ну, как там: field_field_img_slide_fid.tpl.php или что-то вроде. А уже в шаблоне вывода поля изменить вывод поля как вам угодно.

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

"OldWarrior" wrote:
зы. Смотрите шаблоны вывода views, там есть штатный генератор шаблонов для всех использованных полей с описанием всех доступных переменных. URL поля должно быть отдельно где-то среди данных поля.

С шаблонами вывода как я понимаю та же проблема - можно настроить отдельные поля, но присвоить одному полю URL другого у меня не получается... Тем более что это нужно сделать для множества полей которые выводятся всем скопом через views...

Неужели нет простой функции которая разбирает ссылку на URL и анкор?..

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

Аватар пользователя OldWarrior OldWarrior 22 декабря 2012 в 11:07

"QuienSabe" wrote:
Или я неправильно понял идею?

Правильно поняли, вообще-то. Ну используйте тогда шаблон "уровнем выше" - я уж не помню, какой там идёт (raw-..tpl.php?). Там доступны данные для всех полей. Одновременно.

Честно говоря - проблема в общем-то высосана из пальца. Не усложняйте и не химичьте. Копайте шаблоны views, используйте print_r или var_dump для переменных. Я знаю, что на каком-то уровне темизации вы получите доступ к данным всех полей ($fields?) - знаю, потому что сам делал это неоднократно.

И тогда используйте не цикл, а прямое обращение к нужным полям - в шаблоне.

Аватар пользователя OldWarrior OldWarrior 22 декабря 2012 в 11:32

ЗЫ. То, как вы сейчас делаете:

<?php
print $row['field_img_slide_fid']; 
?>

выведет уже содержимое поля как raw (ну, типа отрендеренный) контент. А вам же нужно получить исходные данные URL из массива поля. А это, как я писал выше - var_dump, только где, в каком шаблоне - не помню. Увы Smile

Аватар пользователя OldWarrior OldWarrior 22 декабря 2012 в 11:44

Ещё можно попробовать сформировать нужный вид поля непосредственно из views. Банально - выбирая заготовки-токены в качестве содержимого поля. Если не ошибаюсь, во views можно сначала объявить поле "откуда-берём-url" ('field_link_slide_nid'), а затем объявить поле "куда-вставляем-url" (т.е. изображение или 'field_img_slide_fid'), в котором использовать URL из ранее полученного поля ("Rewrite link" или как-то вроде того).

Аватар пользователя QuienSabe QuienSabe 23 декабря 2012 в 2:31

"OldWarrior" wrote:
А вам же нужно получить исходные данные URL из массива поля. А это, как я писал выше - var_dump, только где, в каком шаблоне - не помню. Увы :-)

К сожалению, как понял во всех шаблонах где можно получить все поля - они уже отрендерены в raw...

"OldWarrior" wrote:
Ещё можно попробовать сформировать нужный вид поля непосредственно из views. Банально - выбирая заготовки-токены в качестве содержимого поля. Если не ошибаюсь, во views можно сначала объявить поле "откуда-берём-url" ('field_link_slide_nid'), а затем объявить поле "куда-вставляем-url" (т.е. изображение или 'field_img_slide_fid'), в котором использовать URL из ранее полученного поля ("Rewrite link" или как-то вроде того).

Это я пробовал, но views вставляет в ссылку не url а всю ссылку целиком... что нарушает код html и конечно не работает.

В общем копаю в сторону вырезания url из ссылки с помощью регулярного выражения...