Поле - ссылка и не ссылка одновременно....

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

Аватар пользователя QuienSabe QuienSabe 26 декабря 2012 в 19:45

Добрый вечер! Всех с наступающими!

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

Поясню задачу. У меня театральный сайт, на нем множество спектаклей. При создании акции пользователь может выбрать спектакль к которому относится акция, а может просто ввести название акции (не связанной со спектаклем).
Если акция связана со спектаклем - в ней должна быть ссылка на акционный спектакль. Если нет - ссылки быть не должно.

Сейчас я использую автодополняемое поле которое позволяет очень просто создать ссылку на спектакль просто начав вводить его название. Причем можно ввести любой текст, даже не относящийся к спектаклю. Но при попытке сохранить запись - вылетает ошибка "found no valid post with that title.". У меня уже написан код в шаблоне вывода который определяет является ли поле ссылкой или нет, и в зависимости от этого правильно все выводит. Но проблема в этой проверке которая не дает сохранить запись.. ((

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

Очень надеюсь на помощь... Завтра утром сдаю проект(

Комментарии

Аватар пользователя K0r5hun K0r5hun 27 декабря 2012 в 0:57

"QuienSabe" wrote:
При создании акции пользователь может выбрать спектакль к которому относится акция, а может просто ввести название акции (не связанной со спектаклем).
Если акция связана со спектаклем - в ней должна быть ссылка на акционный спектакль. Если нет - ссылки быть не должно.

Предполагаю, что Акция - это отдельная нода. Возникает вопрос: зачем 2 раза вводить название акции?
Будет у Акции необязательное поле "Спектакль", тип выбора например Select list. Выбрано - спектакль привязан, пустое - значит акция без спектакля. Для названия акции есть другое поле.
И никаких трудностей.

Если хочешь более сложный вариант - то скорее всего придётся писать свой модуль:
1 вариант) Добавь для своего поля автокомплит и необходимые проверки/заполнения
http://drupal.org/node/274729
http://www.appnovation.com/how-implement-drupal-ajax-autocomplete

2 вариант) Вызови hook_form_alter и поменяй в твоей вызываемой форме функцию validate со стандартной на свою
Файл: /cck/modules/nodereference/nodereference.module, line 727
function nodereference_autocomplete_validate($element, &$form_state)
http://drupal.stackexchange.com/questions/7889/alter-a-forms-values-on-s...

Ну это направление так сказать Smile

-------
Небольшой видеоролик про "Завтра уже сдавать"
Deadline could be final and could be not...
Deadline is the line you go along not the one you cross
http://www.youtube.com/watch?v=wOPuvTMndIs

Аватар пользователя QuienSabe QuienSabe 27 декабря 2012 в 11:40

Спасибо Огромное!))) Буду разбираться)

"K0r5hun" wrote:
Будет у Акции необязательное поле "Спектакль", тип выбора например Select list. Выбрано - спектакль привязан, пустое - значит акция без спектакля. Для названия акции есть другое поле.

Да, все так, но у меня спектаклей много (не только текущие, но и все старые) поэтому выбирать из списка неудобно. А вот когда начинаю вводить название - список очень красиво автодополняется.. Классная фишка) не хочется от нее избавляться)