Приветствую друзья.
Столкнулся с проблемой автоматического заполнения поля, при создании ноды. Есть: тип материала - фотография. При создании ноды этого типа, необходимо что бы поле порядковый номер фотографии заполнялось автоматически, и было уникальным в рамках всех полей этого типа. Например при создании ноды с фотографией, ей должен присвоиться номер 001-01, а при создании другой ноды уже 001-02 например. Т.е. все время должно подставляться уникальное значение в поле.
Есть ли готовое решение для такой задачи? Заранее благодарен за помощь!
Комментарии
А номер материала nid - не то?
UPD: наверное не то.
Может номера просто выводить, когда фотки выводятся?
Это можно с помощью views сделать... зачем хранить номера?
Необходимо организовать удобный поиск по фотографиям.
А как нумерация с удобным поиском связана?
На сайте 3500 фотографий моделей мебели. Человек звонит и говорит, сколько стоит модель MB 008-76. Как найти, что он хочет? Или этот же человек, записал номер модели, а через неделю пришел, и хочет ее снова посмотреть. Ему снова лопатить 3500 фоток?
Ну может быть вам поможет модуль https://www.drupal.org/project/auto_nodetitle
Не пользовался им, но вроде бы написано, что он именно этим и занимается - создаёт автоматические названия у нод.
Почитайте про модуль https://www.drupal.org/project/token и возможно вам станет понятно, что делать.
А для поиска https://www.drupal.org/project/views
ХулиGUN, подскажите как проще автоматом подтянуть в поле создаваемой ноды id-шник..?
А чем этот вариант не устраивает?
А какие тут лишние модули?
https://www.drupal.org/project/auto_nodetitle - этот?
Ну так, если автор не знает о том, что у нод есть уникальный ID - думаю этот модуль ему будет не лишним.
Или этот - https://www.drupal.org/project/views ?
Судя по всему, нужно что бы названия у материалов формировались автоматически и уникально. В таком случае, либо делать свой модуль, которые будет решать задачу, либо взять готовый.
Вот для этого конкретного случая, считаю что экономия на спичках. Поле title в таблице node - индексируется. И поиск по индексированному текстовому полю среди 3500 записей вряд-ли будет по скорости существенно отличаться от поиска по числовому полю (имею ввиду по ощущениям пользователя, ищущего на сайте).
Вообще наверное круто, когда ты на всё пишешь собственное супермегабыстроерешение и никогда не пользуешься готовыми. С этим не поспоришь. Но вот конкретная задача решается установкой трёх модулей, и не нужно писать ни одной строчки кода (а для ТС, написание даже нескольких строк, мне кажется это довольно не тривиальная задача).
На всякий случай проверил время выполнения запроса, на ~9000 записей в таблице node.
FROM `node`
WHERE `title` LIKE '%Адрес%'
LIMIT 0 , 30
Отображение строк 0 - 3 (4 всего, Запрос занял 0.0367 сек.)
FROM `node`
WHERE `nid` =2298
LIMIT 0 , 30
Отображение строк 0 - 0 (1 всего, Запрос занял 0.0003 сек.)
FROM `node`
WHERE `title` LIKE 'Автокредит'
LIMIT 0 , 30
Отображение строк 0 - 0 (1 всего, Запрос занял 0.0003 сек.)
Хм, похоже ХулиGUN прав. Скорость поиска неполного совпадения строки по текстовому полю, для мебельного магазина неприемлема - 0.0367 сек. С другой стороны, если искать по числовому полю, то скорость выполнения запроса вполне пригодная - 0.0003 сек.
Ну, против фактов не попрёшь.
Ребята. Спасибо что ответили и дали такого масштаба советы!
Видел этот модуль и буду его пробовать, просто думал что может есть что то подобное для обычного поля. Что касается привязки nid ноды, так тоже буду пробовать мудрить, но если придется писать код, могу просто не справиться, по этому сразу и спросил про готовое решение. Если подскажите краткий алгоритм организации вывода nid через views и организации поиска по нему, буду благодарен.
Оно тебе надо?
Заплати денег за работу кому-нибудь, и не грей голову. Всё равно ничего хорошего из этого в ближайшее время не получится.
А вообще, https://www.drupal.org/project/auto_nodetitle - этот модуль использует токены - это то, что содаёт вот этот модуль https://www.drupal.org/project/token.
Наверное когда ты установишь auto_nodetitle, в админке где-нибудь будет страница настройки с текстовым полем, в которое нужно будет прописать что-то вроде: "Супер шкаф - МТ[node:nid]", где [node:nid] - это заменитель, для идентификатора ноды. Во время сохранения ноды, вместо этого заменителя будет подставлен nid.
Для поиска, устанавливаешь модуль views, создаёшь новое представление. Настраиваешь нужный тебе вывод материалов, путь страницы на которой это всё будет показываться, фильтры (которые там же в настройка делаешь отображаемыми для пользователя). Фильтр делаешь по полю title материала. Поле можно сделать просто текстовым, или поле с автозаполнением.
Но для начала, почитай что-нибудь об этом, например тут https://www.google.ru/search?q=drupal+views+how+to&oq=drupal+views+how&a... или тут https://www.google.ru/search?q=drupal+views+how+to&oq=drupal+views+how&a...
У файла же есть id, вот его и используйте. В токенах он тоже есть, [fid] вроде.
В общем решилось так: тип материала - фотография. Одно фото - одна нода. Группировка происходит по словарям через раскрытые фильтры views. Возле каждой фотографии выводится уникальный nid. По нему ищет великолепно! И все работает. Так что задача решена! Но остался один непонятный момент. Если я хочу реализовать не просто подстановку nid к каждой фотке, а например MB-nid, как реализовать раскрытый фильтр так, что бы искало (фотку/модель) не просто по nid, т.е. по числу в форме поиска, а по связке MB-nid, т.е. например MB-10 или MB-36. Чувствую что реализуется просто, но понять не могу где... Если кто подскажет, буду благодарен! Но в целом вопрос решен, спасибо сообществу!
Русским по белому писал:
Поле title трогать нельзя! Вроде нашел решение...
Чего это вдруг?
Тупанул конкретно! Спасибо вам!!!
Решение, если нужно вывести именно в поле - viewsfield. Если нужно автоматом подставить значение в title то - Automatic Entity Label, т.к. auto nodetitle работает не стабильно!