Всем, доброго времени суток.
Вопрос такой: как ограничить количество создаваемых нод с определенным полем?
Про node limit читал, но в нем нельзя выбирать количество нод по определенным полям.
Буду благодарен за помощь.
в hook_node_validate делайте запрос с count и выставляйте ошибку если что не так.
строк 50 если логика не сложная
Я так понимаю, что этот хук будет выполняться уже при добавлении узла, а можно ли сделать так, чтоб узел было добавить невозможно (чтобы ссылка на добавление стала неактивной)?
* С помощью hook_menu_alter переопределить access callback для нужной ссылки, в ней добавить требуемое условие, в случае если проходит запускать родительский callback.
* С помощью hook_node_access, проверять $op = create в случае если проходит делать return NODE_ACCESS_IGNORE; если нет return NODE_ACCESS_DENY;
Два варианта, какой правильный неуверен:
* С помощью hook_menu_alter переопределить access callback для нужной ссылки, в ней добавить требуемое условие, в случае если проходит запускать родительский callback.
* С помощью hook_node_access, проверять $op = create в случае если проходит делать return NODE_ACCESS_IGNORE; если нет return NODE_ACCESS_DENY;
Комментарии
в hook_node_validate делайте запрос с count и выставляйте ошибку если что не так.
строк 50 если логика не сложная.
Спасибо, попробую. А готовых модулей нет?
А может и есть, но я о них не знаю.
Я так понимаю, что этот хук будет выполняться уже при добавлении узла, а можно ли сделать так, чтоб узел было добавить невозможно (чтобы ссылка на добавление стала неактивной)?
Два варианта, какой правильный неуверен:
* С помощью hook_menu_alter переопределить access callback для нужной ссылки, в ней добавить требуемое условие, в случае если проходит запускать родительский callback.
* С помощью hook_node_access, проверять $op = create в случае если проходит делать return NODE_ACCESS_IGNORE; если нет return NODE_ACCESS_DENY;
Второй выглядит более правильным
И да кстати, в качестве проверки крайне рекомендую использовать $query = new EntityFieldQuery;
Спасибо, буду пробовать.