Посоветуйте модуль

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

Аватар пользователя Jeremic Jeremic 31 мая 2006 в 18:50

Всем, привет!

Я новичок в CMS, но решил сразу же начать с Drupal! Потому как слышал хорошие отзывы :).
Я не сомневаюсь что Drupal такое сможет сделать, да и разными путями, проблема не в том что он может, а в том что я знаю.

Стоит простая задача:
есть каталог товаров (просто каталог - цен нет) Несколько видов товаров и у каждого товара есть несколько атрибутов.
Например: Телевизор | Большой | 7 кг | 2005 года
или
Молоко | жидкость | ГОСТ 12.1 | не кислое | белое

Хотелось бы узнать каким модулем это можно и лучше будет сделать в Drupal 4.7.
И как в таком модуле организовать свой вывод, т.е. изменить (настроить свой) формат вывода.

Заранее, спасибо!

Комментарии

Аватар пользователя Natalie Natalie 31 мая 2006 в 22:06

Если нужны категории - например, кликаем на "жидкость" и получаем все виды жидкости, то поможет таксономия (она вообще существует для классификации). Если нужны отдельные заполняемые поля - например, размер - то не обойтись без модулей, создающих новые типы контента - CCK или Flexinode. (имейте в виду, что CCK пока еще не совсем доделан).

Аватар пользователя smallGhost smallGhost 2 июня 2006 в 12:00

Что-то я не могу понять что flexinode позволяет делать?
Мне нужен каталог: Наименование : Фото : Краткое описание : Полное описание : Цена : Кол-во и т.д. Каталог должен иметь структурированную форму, т.е. есть группы товара, в группах подгруппы, в подгруппах ещё подгруппы и т.д., а потом товары.
Какой модуль тогда мне лучше всего использовать?

Аватар пользователя Jeremic Jeremic 1 июня 2006 в 19:00

Спасибо за внимание. Я рассмотрел эти модули, они бузусловно полезны! Но видно я не до конца описал задачу:
Есть каталог товаров (без цен и не нужна возможность заказа товаров через инет, просто каталог)

Марка | Год выпуска | Cостояние | Наработка |
---------------------------------------------
M1 | 1995 | удовл | 75% |
M2 | 1998 | хорошее | 55% |
N1 | 2005 | отличное | 25% |
W2 | 2006 | новое | 0% |

по сути это таблица. Хочется, чтобы заказчик не возился там с таблицами в редакторе, а работал в рамках данных таблице.
Запомнил 5 колонок и на выходе сгенерировалась новая таблица. Захотел удалить, изменить или отредактировать - пжл.
Подскажите, пожалуйста какой модуль наиболее подходит под эту задачу.

Спасибо всем, кто отликнулся!

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 2 июня 2006 в 15:57

Flexinode (или аналогичный модуль CCK) позволяют создавать новые типы материалов, а View предоставляет возможности различным образом выводить информацию на экран.

Аватар пользователя Jeremic Jeremic 9 июня 2006 в 9:10

Здрасти!
Просмотрел модули таксономии, taxonomy_dhtml, модуль views все поустанаваливал, потыкал (конечно сразу все не получилось :)),
но пришел к выводу, что я явно не понимаю как и чем сделать что мне нужно...
Еще раз поразмышляем на тему создания каталога:
Есть меню: меню1, меню2, меню3. Пусть меню1 имеет название "Оборудование". При нажатии на пункт "Оборудование" появляется
страницы с оборудованием. Страница представляет собой таблицу (со своими стилями и формой предстваления) в которой оборудование
разделяется на следующие типы: Тип1, Тип2, Тип3. И теперь уже у каждого типа идут конкретные названия оборудования. Причем,
некоторые из них могут быть ссылками на детальное описнаие и фото.
Получается следующее: ну явно напрашивается категоризация оборудования по принципу:

Оборудование (нажали) ТАБЛИЦА
-Тип1
--Модель11
--Модель12
-Тип2
--Модель21
--Модель22
-Тип3
--Модель31

Но проблема в том, что "Оборудование" - это пункт меню. А Тип и Модель - это категоризация по контенту (внутри страницы).
И модель11 может представлять собой 5 столбцов! Название - Характеристика - Срок годности - ... и некоторые из них могут
иметь ссылки на более детальное описание!

Я не понимаю, какими модулями это все категоризовать,потому как конечный лист иерархии является строка в 5 столбцов!!!

И если можно, то хотелось еще узнать как эти данные вывести так как мне надо, т.е. чтобы данные были раскиданы по таблице
с нужной мне цветовой гаммой и типами border'ов.

Всем спасиба! Помогите пожалуйста.

З.Ы. Перелистывал форумы, но так и не нашел четкого и конечного решения, которое помогло бы мне.
З.З.Ы. Если не понятно описал, то могу дать ссылку.

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 9 июня 2006 в 10:15

Абстрагируйтесь сначала от того, какими модулями что делается. Представьте себе детально иерархию категорий. Что-то типа вашего:
-Тип1
—Модель11
--- Параметр1
--- Параметр2
--- Параметр3
--- Параметр4
--- Параметр5
—Модель12
-Тип2
—Модель21
—Модель22
-Тип3
—Модель31

Когда структура станет окончательно понятной, смоделируйте ее средствами taxonomy (может быть category удобнее, не знаю - спросите Natalie :-)), т.е. создайте соответствующие словари и термины в них.

Теперь создайте формы представления (виды, views) для разных типов и моделей с помощью модуля Views. Каждый параметр - колонка в табличной форме представления. (Кстати, 5 колонок - это совсем немного. У меня на http://novostroyka-ru.ru/ , к примеру, в таблице по 14-15 колонок и это совсем не предел).

Затем постройте систему меню штатными средствами Drupal (при желании оформите меню с помощью nice_menu или ext_menu). Я полагаю, что система меню будет в общем аналогична той структуре, которую вы создали на первом шаге.

На десерт - доработать "хлебные крошки" (навигационое меню) с помощью taxonomy_breadcrumb, чтобы они помогали пользователю четко понимать, на каком уровне иерархии он сейчас находится.

Аватар пользователя Jeremic Jeremic 9 июня 2006 в 12:32

Спасибо, vadbars. Я обдумаю. А это что перварил за время пока не проверял форум.

Просмотрел кучу форумов и прочитал кучу всяких постов. В голове - каша. Некоторое осознование того, что хочу и как сделал бы, если бы писал руками.
Создать некоторое представление (виртуальное) - n столбцов. Множество связок по n значений хранится где то в БД и не имеет физического адреса типа node/number (т.е. что типа понятия таксономии, которое не является материалом).

Затем, с создаю node/5->equipment которая генерит таблицу (со своей стилистикой) из вот этих вот выше описанных связок по n значений.

Блин, задача вообще стандартная. Самописные сайты так и делаются. Таблица (оборудование) в ней хравнится описание. есил что то сложное то таблицы стараются приводить к нормальной форме. И потом уже на нужной старнице делается
Select что_надо from нужная_таблица, еще одна нужная таблица. А затем это отображается.

Неужели на такое простое решение трубется куча модулей???
Буду благодарен как за совет по модули так и по тому (возможно это будет проще) как встроить свой код в ноду и откуда выдергивать
данные (из служебных таблиц Друпала)

Спасиба!

Аватар пользователя Jeremic Jeremic 9 июня 2006 в 13:46

Ладно, давайте рассмотрим простой пункт меню (по-моему как у Вас на сайте, поэтому. думаю Вы мне поможете). На приведенном
сайте, я нажал на недвижимость http://novostroyka-ru.ru/realty - это в общем то что мне надо (для одного из пунктов меню).
Хочу научиться.
Иерархия
-ТИП1
--Продукт1
--Продукт2
--Продукт3

Все. Каждый из продуктов у меня имеет, допустим 2 атрибута (атрибут1, атрибут2). На выходе я хочу получить следующую таблицу
ПРОДУКТ ---- Атрибут1 ---- Атрибут2
П1 ф1 ф2
П2 а1 а2
Если я правильно понял, Вы предлагаете сделать так:
-ТИП1
--Продукт1
----ф1
----а1
--Продукт2
----ф2
----а2
а потом все это выводить с помощью модуля views. Так?

З.Ы. Как было бы хорошо, если бы Продукт1 был бы "контейнером" так сказать [Продукт1 - ф1 - а1]

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 9 июня 2006 в 14:42

Если я вас понял, то вы можете реализовать это так: 1) создать (taxonomy) словарь "ТИПы", в нем термин "типы продукции" и зададим возможные значения этого термина "самолет, вертолет, танк, ракета"; 2) создать тип материалов (например, с помощью модуля CCK), который представляет собой набор полей ф1, a1 (к примеру, "вес, ширина, высота, длина, описание"). Назовем его для ясности, скажем, "product"; 3) указать, что созданный вами словарь относится к (действует для) вашего нового типа материалов.
Теперь при создании нового материала этого типа ("вертолет Черная акула"), на странице редактирования вы получите список полей (вес, длина и т.п.) плюс возможность (или обязанность) указать, к какому из типов продукции его отнести (к "вертолетам" или к танкам, самолетам...).

А с помощью Views вы создаете табличную форму представления всех ваших продуктов:
ТЕХНИКА - ВЕС - ДЛИНА - ШИРИНА - ВЫСОТА - ОПИСАНИЕ
Чер.акула - 1000 - 200 - 100 - 250 - "Красивый, но страшный вертолет"
Белая.акула - 1000 - 500 - 750 - 250 - "Красивый, но не страшный вертолет"
Синяя.акула - 10 - 20 - 10 - 25 - "Некрасивый, но маленький вертолетик"

Аватар пользователя Jeremic Jeremic 9 июня 2006 в 16:34

Да, думаю, что это то, что нужно. Но неполучается увидеть это! Sad
Все сделал как в примере с техникой. Все нормально. Создаю view а таблица не получается, вместо этого просто список
ТИПЫ
-вертолет (2)
-Танк (1)
Наверное я не правильно поля задал. Поля пробовал по разному создавать:
а. Вкладка fileds->add Terms for ТИПы
б. Вкладка fileds->add Terms и в label писал названия столбцы данных типа product (number. weight, text)

Везде и в странице и блоке выстаивл Table view, но таблица никак не получается.
Что не так? Объясните пжл, что вы имели в виду когда говорили в предыдущем посте
>>Теперь создайте формы представления (виды, views) для разных типов и моделей с помощью модуля Views.
>>Каждый параметр - колонка в табличной форме представления.

З.Ы. Блок в меню управление/блоки - активирован (не забыл).
З.З.Ы. Читал примеры на wikidrupallers про view. Тяжело разобраться.

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 9 июня 2006 в 19:32

Создали ли вы новый тип материалов (в модуле CCK или Flexinode)? По вашему описанию похоже, что нет. Создайте, иначе вам будут доступны только поля taxonomy.

Процедура создания табличного вида в модуле Views примерно такая:
- В разделе "Basic Information" заполняем поля Name и Decription.
- В разделе "Page" (Страница) ставим галочку на "Provide Page View" (Страничный вид), пишем URL (адрес), по которому будет видна наша страница с таблицей. "ViewType" (Тип вида) выбираем, естественно, "Table View". Зполняем Title (Заголовок), ставим галку на "Use Pager" (если будет много строк в таблице, то таблица разобьется на несколько страниц).
- В разделе "Fields" выбираем последовательно поля из созданного нами типа материалов. У меня это что-то вроде "Текст: Район (field_rayon)", т.е. текстовое поле "Район" имеет название field_rayon. После добавления поля можно написать, как оно будет называться в таблице (label), будет ли возможность сортировать таблицу по данному полю и сортировка по умолчанию (увыбание и возрастание).
Еще можно добавить в таблицу поля других типов, например "Материал: Заголовок" (Node: Title). Оно удобно тем, что там можно поставить опцию "With updated mark" и все новые строки будут помечаться словом или значком "New!". Если нужно, добавьте поля "Время размещения" или "обновления", "Автор" и т.п. Если нужна ссылка на категорию ("танки", "вертолеты") - добавьте поле "Taxonomy: Terms for ...".
- В разделе "Filters" рекомендуется добавить фильтр "Node: Published"-"Equals"-"Published", чтобы показывать только разрешенные к публикации материалы. В моем случае добавлен еще фильтр "Taxonomy: Terms for"-"Is One Of"-"Долевка/Вторичка", т.е. показывать только материалы из определенных категорий (у вас, наверное, будут "вертолеты").

Все, делаете Save и эта таблица становится доступной по тому URL, который ей назначили выше.
Там еще мноджество настроек и доп.возможностей, но вам нужно разобраться с основным пока. Блоки с таблицей делаются аналогично (в разделе Block).

Аватар пользователя Jeremic Jeremic 10 июня 2006 в 6:43

Я все делал как Вы говорили. И я создал(flexinode) новый тип материала. Назвал его product. Он состоит из 3 полей (пока)
и созданный словарь ТИПы я указал, что он моего типа ПРОДУКТ
и создал пару нодов типа ПРОДУКТ(привязал их к вертолету и самолету).
Но в разделе FIELDS у меня тока
Node:Title
Node:Create/Update time
Node:Type
еще пару с node
Taxonomy:All terms
Taxonomy:Terms for ТИПы
Taxonomy:Term
и т.д.
Очень странно, но у меня нету вообще таких частных полей. Все какие то общие. Что делать?

Аватар пользователя Jeremic Jeremic 10 июня 2006 в 11:17

Сегодня новый день... Всем привет! И снова разбираюсь с Друпал :).
Мне кажется что проблема с взаимодействием flexinode и view, возможно где то не выставил какую то опция.
Попробовал использовать CCK - то во view сразу появились поля из созданного мне типа. НО CCK для новичка
по сложнее будет, да и flexinode по надежней (обкатанней) так сказать. Поэтому, хотелось бы все таки понять в чем дело.

Аватар пользователя Jeremic Jeremic 10 июня 2006 в 14:19

Блин, создал таксономию
ТИПЫ
-вертолеты
-танки
-самолеты
создал новый тип материала с помощью ССК. Добавил в категорию ТИПЫ/танки 2 танка.
Настроил View, добавил поля filed_name и field_description. Пробовал устанавливать
и отключать фильтр по категории танки, но все равно при отображении страницы выдает
warning: Invalid argument supplied for foreach() in ...\www\modules\views\views.module on line 1372.
Т.е. нет содержимого для отображения таблицы. Что такое, в чем причина?

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 10 июня 2006 в 19:38

Это сообщение выдается иногда (array вроде-бы пустой). Обычно можно игнорировать, поскольку это не error (ошибка), а warning (предупреждение).

А список танков-то выдает?

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 10 июня 2006 в 21:03

Т.е. у вас созданы 2 материала типа "product", относящихся к категории "танки"?
Оба материала опубликованы (стоят галочки "опубликовать")?

Аватар пользователя Jeremic Jeremic 11 июня 2006 в 6:47

Да, у меня создано 2 материала типа "продукция". Каждый материал приктреплен к категории ТИПы->танки. В настройках
публикации у меня стоит галочка опубликовано, но я снял галку на отображать наглавной странице. Указав адрес node/53, я заходя
на эту страницу прекрасно наблюдаю описания (данные в созданных мною полях) моего танка. Но когда вкл view,
то он говорит..., собственно, что в пред посте описано.

З.Ы. Я просто уже не зна в чем прикол, потому как уже так хорошо с Вами разобрали эту тему, что просто... Sad

Аватар пользователя Jeremic Jeremic 11 июня 2006 в 8:54

Блин, вообще... Я все снес!! Поставил все заново. И что? Ну все сработало :).
Vadbars спасибо Вам большое! За помощь и терпение!!!
Так, мы теперь умеем создавать таблицы. Но это лишь певрое. У меня есть еще такие вопросы:
1. Созданные нами ноды (танки) они видны по адресу например node/50, node/51. Как сделать чтобы они были не видны.
Т.е. как бы отключить их, потому как мы предоставлеям "глобальное" просматривание через страницу с помощью view.
Через не опубликовано? Это никак не отразится в дальнейшем?
2. Можно ли организовать на странице просмотр view+дополнительный текст (поля шапка и подвал не подойдут - текста много
и он темизирован). Из вариантов, можно попробовать с помощью блоков и расположить их с весами по порядку.
А есть еще варианты (важна возможность темизации)?
3. Темизация (материалы есть, попробую по разбираться). Но за любые подсказки буду ОЧЕНЬ благодарен
4. На вашем сайте http://novostroyka-ru.ru/realty например поля АДРЕС являются ссылками. Как вы из делали?
Добавлялм поле ссылка в ССК? Мне это очень нужно, так как мне бы надо чтобы не все "адреса" имели ноду. Т.е.
у которой есть описание, то название ссылка. А которое не имеет - то просто текст. Как бы завсети такую опцию, которая
указывала, что это нода или нет. Как вариант можно завести еще одно поле, в котором прописывать когда надо адрес ссылки.
Выскажите пожалуйста свое мнение.
Очень благодарю!

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 11 июня 2006 в 14:35

1. Чем вам так не угодило наличие адреса у материалов? Вы можете, действительно, убрать их с публикации (не забудьте только выключить фильтр в View по критерию публикации). Можете заменить /node/123 на что-нибудь вроде /abracadabra/123, "чтоб никто не догадался" (это делается в "Общих настройках сайта").
Но зачем? "Доктор, скажите, я жить буду? - А смысл?" Smile

2. Оформлением сопроводительного текста я особенно не занимался, но гляжу на это дело оптимистично, поскольку можно поставить шапке и подвалу тип форматирования "Full HTML" и изукрасить текст так, как вам нужно.
Кроме того, проскакивало сообщение, что можно объединять несколько видов (views) на одной странице (поищите, кажется, на drupal.org). Посмотрите также модуль insert_view (http://drupal.org/project/insert_view) - он позволяет вставлять виды в тело страницы. Т.е. вы можете пойти обратным путем - создать нужную вам страницу с оформленным текстом, а потом навтыкать туда таблиц, созданных во Views.

Разберетесь с этим модулем - напишите здесь. Всем интересно и полезно, вам - почет и уважение Smile

4. Поле "Адрес" является ссылкой поскольку оно - типа "Terms for ...".
На самом деле это слабое место (создание ссылок из любого поля), но можно воспользоваться "темизацией" полей CCK (см. /modules/cck/theme, там это описано, правда по-английски).

Кстати, из всех типов полей в CCK я пользуюсь только типом "текстовое поле". Пока этого хватало, за исключением потребности в типе "изображение" (с закачкой файла на сервер, изменением размера картинки и миниатюры (thumbmnail)).

Аватар пользователя Jeremic Jeremic 13 июня 2006 в 19:59

Спасибо за советы. Попробую поразбираться. Вы говорили:
>>На самом деле это слабое место (создание ссылок из любого поля), но можно воспользоваться “темизацией” полей CCK
Я хотел у Вас спросить следующее: Что позволяет делать темизация? Я просто думал, что она облдает лишь механизмом
придавать данным "дизайнерское" обрамление (раскрашивать, просто говоря). А она может еще и функциональность менять?
Т.е. из какого текста я захочу (по определенному критерию выбора) могу сделать ссылку, а могу и нет?
Как то пока не понимаю мощи темизации... Объясните пжл.

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 13 июня 2006 в 22:52

Да, оформление полей в CCK очень гибкое и довольно удобное. Прочитайте об этом по-русски здесь - http://wiki.drupallers.ru/Perevody/Modul'CCK/Temizacija/Readmetxt Это перевод файла /modules/cck/theme/readme.txt

Суть в том, что вы можете получить значение любого CCK-поля как переменную $field_имяполя[0]['view']. Например, вы создали поле $field_russkojepole. Теперь вы можете вывести это значение в шаблоне материала как <?php print $field_russkojepole[0]['view']; ?>.
А что мешает вам вывести его как ссылку? Вроде такой, например: <a href="http://microsoft.com/" title="Привет, дядя Билл!"><?php print $field_russkojepole[0]['view']; ?></a>

Аватар пользователя Jeremic Jeremic 14 июня 2006 в 19:10

Здравствуйте. Хочется сделать так, чтобы в вертолет1 имел описание (т.е. у него была ссылка на страницу где он представлен),
а вертолет2 - нет. Попробовал создать в ССК полу Web Url (Text Field with URL validation). Views генерит таблицу и оно
выглядит как простой текст (ну как и сказано), а я так недеялся)). Тогда я попробовал переписать функцию представления вида
function phptemplate_views_view_viewvertolet($view, $type, $nodes)
{
...
$cell['data'] = "Вертолеты";
/* попробовал просто текст для начала. Т.к. в любой момент можно $value добавить */
}
Если туда пишу всякие там то работает без проблем. А вот якорь вообще никак не всопринимает!!!! Что делать?

Таксномия Terms for (как у Вас на http://novostroyka-ru.ru/realty ) мне не подходит. Так как не все термины в
таксономии у меня имеют свою собственную ноду.

Вот не зна как решить проблему. В голове одна мысль, т.к. категории являются материалом (в отличии от таксономии), то
возможно там можно будет как то указать что у этого термина нету ноды.
Посоветуйте пожалуйста.

P.S. якори профильтрует, поэтому словами.

Аватар пользователя Jeremic Jeremic 14 июня 2006 в 19:18

Здравствуйте. Хочется сделать так, чтобы в вертолет1 имел описание (т.е. у него была ссылка на страницу где он представлен),
а вертолет2 - нет. Попробовал создать в ССК полу Web Url (Text Field with URL validation). Views генерит таблицу и оно
выглядит как простой текст (ну как и сказано), а я так недеялся)). Тогда я попробовал переписать функцию представления вида

<?php
function phptemplate_views_view_viewvertolet($view, $type, $nodes)
{
...
$cell['data'] = "<a href=\"node/22\">Вертолеты</a>";
/* попробовал просто текст для начала. Т.к. в любой момент можно $value добавить */
}
?>

Если туда пишу всякие там то работает без проблем. А вот якорь вообще никак не всопринимает!!!! Что делать?

Таксномия Terms for (как у Вас на http://novostroyka-ru.ru/realty ) мне не подходит. Так как не все термины в
таксономии у меня имеют свою собственную ноду.

Вот не зна как решить проблему. В голове одна мысль, т.к. категории являются материалом (в отличии от таксономии), то
возможно там можно будет как то указать что у этого термина нету ноды.
Посоветуйте пожалуйста.