Как сделать алфавитную сортировку ?

Аватар пользователя мишка мишка 21 августа 2005 в 16:40

Всем привет. Мой первый пост на вашем форуме, сильно не бить Smile

Мы пытаемся сделать энциклопедию аквариумных рыб на базе друпаля. Все работает замечательно, сделали категории по размеру рыб, солености воды, происхождению, систематике и т.п.

Мы хотим:
[list=1][*]Добавить поле "Латинское название" (куда ? как словарь с буквами латинского алфавита как термины ?).
[*]Как можно потом автоматически вывести список [b]линков[/b] на статьи про рыб, латинское название которых начинается с буквы 'А' ?[/list]

Комментарии

Аватар пользователя мишка мишка 21 августа 2005 в 17:09

Извиняюсь что сам отвечаю на свой вопрос - нашел два модуля на официальном сайте друпаля: indexpage и nodelist. К сожалению они делают алфавитную сортировку только по заголовку статьи.. Я же хочу сделать подобную сортировку и по латинскому названию и по русскому и еще по паре полей...

Аватар пользователя Nick Nick 22 августа 2005 в 20:48

Может быть сделать словарей в таксономии с буквами и использовать taxonomy_menu ?

Аватар пользователя мишка мишка 23 августа 2005 в 11:15

Это не автоматически.. Автор статьи должен будет присоединять ее к подходящему термину в словаре (к букве). Оба модуля которые я назвал работают автоматически - представляют список линков на статьи в алфавитном порядке их (статей) названий.

А если такого модуля не существует - как бы вы начали писать его ? Надо на самом деле две вещи: [list=1][*]Дополнительное поле (поля) типа input field в http://host.com/drupal/ru/node/number/edit
Это поле при построении http://host.com/drupal/ru/node/number будет вставлятся прямо в тело статьи с каким то заголовком
Кстати, почему в Друпале нет input fields ? Когда делаешь статью можно указать только заголовок, к каким терминам в таксономии относится и тело статьи..
[*]Модуль который будет выдавать список линков на статьи отсортированный в алфавитном порядке по этому полю[/list]

Аватар пользователя Nick Nick 25 августа 2005 в 1:49

Нуу.. тогда можно написать модуль, который автотматически будет добавлять node в какой-нибудь term таксономии, исходя из title.

Для гибкости, соответствие устанавливать через regex. Например, сделать чтобы в настройках задавался regex, который приментяется к title, и node добавляется в term с именем, который является конкатинацией match массива Smile
Но... Это уже расширение функциональности Wink ... но.. imho очень интересный модуль будет ))

Аватар пользователя edhel edhel 23 августа 2005 в 21:26

Чтобы всякие разные поля добавлять - это лучше было flexinode использовать. А чтобы сортировать или выводить по первой букве... без программирования хз как.

Аватар пользователя мишка мишка 24 августа 2005 в 8:22

А можно без flexinode ? И с программированием ? Flexinode посмотрел, не понравилось. Конечно это здорово что можно самому делать nodes но допустим модуль таксономии его не поддерживает..

Как я добавляю поле в node из типа story ? Делаю копию story.module и правлю его ? Или же каким то макаром расширяю node.module ? Мне надо добавить два-три поля из типа input field. Нужно ведь и в базе данных добавить поля соответсвующие.. Есть где то tutorial по созданию новых модулей ?

Аватар пользователя edhel edhel 24 августа 2005 в 8:44

1) Новые типы нодов можно самому создавать с помощью специально оформленных модулей на PHP.
2) Таксономия без проблем работает с flexinode.
3) Чтобы добавить свой тип, нужно создать таблицу в БД для хранения дополнительных полей и в модуле понаделать функций со специальными именами, которые будут обрабатывать чтение, удаление и т.п. нодов вашего типа.
4) Про создание модулей почитать здесь: http://drupal.org/node/508, справочник по функциям и хукам здесь: http://drupaldocs.org/

Аватар пользователя мишка мишка 24 августа 2005 в 8:50

Огромное спасибо. А нет нигде примера модуля который допустим расширяет стандартный нод каким нибудь полем ? Ведь это должна быть достаточно распространенная задача..

Аватар пользователя мишка мишка 24 августа 2005 в 16:23

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

Аватар пользователя edhel edhel 25 августа 2005 в 5:42

Шаблоны я и для старого flexinode как-то делаю... но идея хорошая. В принципе было бы неплохо для нодов любых типов через админку создавать шаблон. Так сделано, к примеру, в eZ Publish.

Кстати я тут для flexinode навоял несколько новых типов полей: отношение (у меня, к примеру, у нода "заказ" можно выбрать "товар", на который оформляется заказ), динамически генерируемый список (как и dropdown menu, но список генерируется указанной callback-функцией), динамически генерируемые radio-бутоны, чекбокс с фиксированным значением (disabled), доступный для изменения только админу.

Подумывал еще хакнуть flexinode, чтобы можно было в настройках указывать название, под которым бы поле заносилось в $node. А не как сейчас $node->flexinode_11 %P