Люди добрые, подскажите, ибо как в php дуб.
В модуле есть ссылка вида:
<?php
$element[$delta] = array('#markup' => l(t('Contact person by email'), 'email/' . $object_type . '/' .
$ids[0] . '/' . $instance['field_name']));?>
Сформировавшаяся ссылка получается такой: /email/node/nid/field_email_address
Эту ссылку необходимо переделать в файле модуля на такую: /colorbox/form/email_mail_page_form?destination=/email/node/9/field_email_address&width=600&height=300
- все статично, кроме ID ноды.
Пробовал прописать тупо вот так:
<?php
$element[$delta] = array('#markup' => l(t('Contact person by email'), 'colorbox/form/email_mail_page_form?destination=' . 'email/' . $object_type . '/' . $ids[0] . '/' . $instance['field_name'] . '&width=500&height=500'));
?>
Но тогда спецсимволы '&', '=' заменяются на вида '%3F' и т.п.
Также не пойму, как в этом коде добавить к ссылке class="colorbox-load"
Спасибо!
Комментарии
А версию друпала кто писать будет?
Не думал, что они отличаются. Drupal 7.9.
Пробовал еще знаки '=', '&' вывести без кавычек и обособить точками, но так вообще эррорит.
Да, без знания PHP тяжело. Спешу вас огорчить, чтобы править код в модулях нужно не знать не только PHP, но ещё и английский язык, иначе как же вы будете документацию читать? ))
Вот, к примеру комментарий (прошу заметить: на странице документации, описывающий функцию построения ссылок), который полностью отвечает на ваш вопрос, как добавить параметры и атрибуты к ссылке:
http://api.drupal.org/api/drupal/includes--common.inc/function/l/7#comme...
Подсказка: к исходному коду (тот, что вы написали - не пойдёт) добавьте третий параметр - массив. С элементами 'attributes' и 'query'. А в них атрибуты и параметры соответственно.
Удачи.
Я знаю, я знаю!!!
Пошел учить!
Спасибо в очередной раз!
И все-таки не могу додумать, что писать после этого:
<?php
l(t('Contact person by email'), 'colorbox/form/email_mail_page_form', array('query' =>
array('destination' => '/email/node/')))
?>
Получилась ссылка
/colorbox/form/email_mail_page_form?destination=/email/node/
, а вот как дальше задать ей 'nid', какую переменную (ту, что в первой части после array) задать для вывода 'field_email_address' и, главное, что именно прописывать для вывода амперсанда ('&') - не пойму.пардон.. прогнал.
&
если query - массив из больше чем 1-го элемента, амперсанд сам добавиться..
А 'nid' как бы выцепить? В оригинале он пишется в $path, а в массиве я его по-разному пробовал:
если подцепить его к '/email/node/', то выводится тупо текстом, а далее как начать писать, я не совсем понимаю.
Вероятно, есть еще переменные, кроме 'destination', 'attributes', 'fragment и 'query'.
Сделал так:
<?php
l(t('Contact person by email'), 'colorbox/form/email_mail_page_form', array('query' =>
array('destination' => '/email/node/'. $ids[0] .'/field_email_address')),
array('attributes' => array('class' => array('colorbox-load'))))
?>
Но почему-то выводится только ссылка, а класс не применяется. Если поменять местами 2 этих массива, то, наоборот - класс применяется, а ссылка - нет.
Эко вы скобок да массивов наворотили! Надо было записывать "в столбик", как в примере, ссылку на который я давал. Тогда бы вы увидели, где ошибка:
ваш вариант:
<?php
l(t('Contact person by email'), 'colorbox/form/email_mail_page_form',
array('query' =>
array('destination' => '/email/node/'. $ids[0] .'/field_email_address')
),
array('attributes' =>
array('class' => array('colorbox-load'))
)
)
?>
правильный вариант (не проверял, на вскидку):
<?php
l(t('Contact person by email'), 'colorbox/form/email_mail_page_form',
array('query' =>
array('destination' => '/email/node/'. $ids[0] .'/field_email_address'),
'attributes' =>
array('class' => 'colorbox-load')
)
);
?>
- теперь видите, что в вашем варианте не так? Целых два лишних array выбросил!
Теперь вижу, Спасибо! Про лишний array я догадывался и убирал его, но вот вынести еще за одни скобки один из массивов не догадался.
Но все равно больше не буду парить мозг знающим людям, т.к. худшее, что я мог ожидать, произошло - повалились ошибки а-ля Missing argument (аж целых 4). Видимо, на всплывающую страницу формы еще что-то передавать нужно было...
Поэтому придется таки потратить месяцы на азы php.
Еще раз всем огромное Спасибо за помощь!