Довольно часто встаёт вопрос - как отсортировать ссылки меню модуля Book не по весу и названию, как идёт стандартно, а по дате добавления материала?
Главная проблема заключается в том, что эти ссылки являются самыми обычными пунктами меню, почему у нас есть только один значимый критерий сортировки - вес.
На основе этой информации можно использовать вот какие хитрости.
Создаём свой модуль, в него добавляем вот такой простенький код:
function MODULE-NAME_nodeapi
(&$node,
$op,
$teaser,
$page) {
switch ($op) {
case 'insert':
case 'update':
if (!empty($node-
>book['bid'])) {
// Добавляем в вес пункта дату создания ноды, чтобы отсортировать меню по возрастанию
$node-
>book['weight'] =
$node-
>created;
menu_link_save($node-
>book);
}
break;
}
}
Что мы здесь имеем? Просто при создании или обновлении ноды в вес соответствующего ей пункта меню запишется timestamp значение даты создания материала. Эта небольшая уловка даст нам возможность отсортировать меню по возрастанию даты добавленных материалов.
Имейте ввиду, что если у вас уже есть добавленные ноды, то придётся массово как-то обновлять в базе для них пункты меню (их веса). Если нод немного, достаточно их поочерёдно пересохранить - новый вес запишется. А для новых нод наше правило уже будет действовать.