Есть тип материала - "Изображение", в нем одноименное поле, куда пользователь может загрузить картинку.
Сперва ставилось цель, чтобы при загрузке изображения на нее накладывалась надпись типа "© имя (логин) пользователя"
В настройке пресета ImageCache добавил действие "наложение текста", в поле "Текст" которого включив поддержку ПХП написал примерно следующее:
<?php
$p1 = explode("/", $image->source);
$u1=user_load($p1[3]); // цифра 3 зависит от настроек пути у меня в этом месте UID.
return '© '.$u1->name;
?>
Все отлично работает, хотя вариант ИМХО скорее всего не самый лучший.
Однако возникла необходимость дать пользователю выбор ставить подпись или нет. В типе материала добавил поле (чекбокс) "ставить подпись" и... что с ним делать дальше не понимаю Догадываюсь, что в тексте пресета нужно как то загрузить $node (Node_load() ?) Но как это сделать зная только путь и имя картинки загруженной ImageField, всякие варианты записи перепробовал и ничего не грузится
Может кто нибудь подскажет как правильно? Тогда и имя пользователя и положение чекбокса можно будет от туда брать.
Ну и второй вопрос: В настройках пресета можно задать цвет надписи, возможно ли этот выбор каким либо образом тоже дать пользователю при загрузке изображения?
Комментарии
еще бы сделать что бы цвет на каждую фотку был свой
да еще хорошо бы что бы место куда текст прописывается тоже было по выбору
публикующего фотографию.
-----------
т.е. если код выше вствлю в пресет у меня будет капиарайт с мои ником ?
В чем разница с моим вторым вопросом - не понял.
Думаю, что это решаемо/нерешаемо - аналогично цвету.
Ну если в настройках пути поля "изображение" прописан [uid] в соответствующем месте (смотри коммент в коде), то работает.
Можно так - в зависимости от значения чекбокса в шаблоне нода выводить разные пресеты(один с вотермарком, другой - без).
Это понятно, но совсем неинтересно, больше похоже на заплатку, чем на решение.Действительно похоже это самое простое из разумных решений. Спасибо!
И если я правильно понимаю, то выбор цвета и месторасположение ватермарка пользователю дать не получается никак
Видимо именно таким образом и буду делать, только места на хостинге в 2 раза больше потребуется... жалко...
node_load не очень поможет, так как в момент создания материала еще грузить-то нечего, оно еще не node_save, а значит и _load -- что?.. Тут придется делать костыль. Ну или делать/искать модуль, который будет перехватывать соответствующий хук и делать нужное... В теории можно еще в сторону Rules дернуться, но я в свое время так и не сделал.
Спасибо! Как то я сразу не сообразил, что пресеты создаются при загрузке изображения, а не при нажатии на кнопку сохранить ноду. Тогда действительно тут только костыль поможет... поскольку пользователю не объяснишь, что нужно сперва чекбокс правильно поставить, а потом картинку загружать...
Еще бы кто нибудь рассказал (дал ссылку) как этими Rules пользоваться правильно, на русском языке, а то по английски читал с онлайн-переводчиком - нифига не понял
>Еще бы кто нибудь рассказал (дал ссылку) как этими Rules пользоваться правильно, на русском языке, а то по английски читал с онлайн-переводчиком - нифига не понял
Язык программирования типа, мышкой рисуешь процесс. Выбираешь событие, указываешь объект и т. д. Есть условия. В принципе, полезная вещ, но тормозит.