наверное легко, но голова пока что не очень работает в этом плане. мало опыта.
надо сделать каталог магазинов. у каждого магазина есть каталог товаров... если упрощённо: например на главной список магазинов. когда нажимаем на магазин - попадаем на старницу магазина. там показывается меню магазина. у всех меню однотипное: каталог товаров, контакты, о нас, карта и т.п.
ещё надо чтобы каталог товаров был общий. то есть чтобы можно было найти через поиск нужный товар, а в списке выбрать подходящий магазин с подходящей ценой... например, вбиваем в поиске "стартер bmw ..." , на что сайт выдаёт таблицу:
стартер... | магазин1 | цена
стартер2.. | магазин2 | цена
и так далее
в общем такой не сложный функционал. подскажите, пожалуйста, в каком направлении двигаться?
Комментарии
Наверное так же как магазин с магазином.
звучит очень логично.. вроде.. только всё равно немного запутанно.. прям как рекурсия)
продавать на самом сайте ничего не надо. то есть ubercart не нужен тут? или какой-нибудь drupal ecommerce?
можно ли это всё реализовать на Drupal + CCK + Views + Taxonomy.. и чтобы владелец магазина смог самостоятельно редактировать страницу своего магазина и каталога товаров?
или может стоит задействовать ubercart для упрощения?
а если, допустим, какой-то магазин захочет продавать товары онлайн. какой-то, а не все...
в общем я знаю как это вбить в google "каталог магазинов на drupal".. но google не выдаёт нормальных ответов.. самый дельный совет - установить magento.. надо попробовать сформулировать вопрос на английском
Главное не бесконечный цикл))
Да,вполне.
Словарь "Магазины"
Словарь "Раздел каталога"
К ноде типа "Товар" cck`ем приаттачить эти два поля со ссылками на словари.
Вьюсом всё это можно чудесно-расчудесно вывести. Им же сделать фильтр как с учётом магазинов,так и без.
Для усложнения? Если нужен магазин,с ценами,корзиной,заказами и т.д. - то конечно нужен магазин.
оо!! класс. спасибо. всё так просто. тогда получается так, если я правильно вас понял:
Словарь "Магазины" состоит из терминов:
----Магазин1
----Магазин2
----Магазин3
...
у типа Товары - 2 поля - Словарь "Магазины" и "Разделы каталога"
очень хорошо всё получается. только хочется ещё пару красивостей в этом же духе. в плане юзабилити:
) ему показываются только его магазины, то есть термины созданные этим юзером.. вот это очень важная фича. даже не знаю можно ли лучше придумать. может какой-нибудь Taxonomy Term Permissions подойдёт для решения этой задачи?
- допустим юзер создаёт термин Магазин1. Тогда этот термин должен принадлежать только ему. То есть никто кроме владельца термина не может его изменять и использовать.
- при создании ноды типа "Товар" юзер должен выбрать Магазин. вот тут самое интересное - в выпадающем списке (обычное дело для таксономии
тогда будет чёткое разделения прав принадлежности. вроде того что, вот такой то юзер управляет данными такого-то магазина.. а иначе как-то неудобно получится, если любой владелец магазина сможет добавлять товар в любой магазин. в общем-то это наверное как-то можно вьюсами отфильтровать при показе каталога, чтобы показывались только товары принадлежащие юзеру конкретного термина, но всё равно это будет неудобно при создании товара, когда придётся выбирать из 200 магазинов свой. искать там нужные термины в огромном списке совершенно ненужных чужих магазинов
вот такое тут нашёл - http://www.drupal.ru/node/81119 - может какие-то трюки оттуда использовать?
но мне больше нравится идея с правами на термины, если друпал такое умеет.. сейчас буду пробовать)
не легко, особенно если опыта мало.
попробуйте для начала просто каталог сделать
с каталогом вроде всё понятно. не вижу каких-то трудностей вообще.
а вот с правами доступа к терминам - это похоже проблема, потому что это не поддерживается.. ??
похоже надо смотреть в сторону node/entity references?
али есть другой выход? с терминами так красиво всё получается, но в код я лезть не хочу
вообще то есть модули для этого. но повторюсь, что задача не тривиальная и без кода возможно и не обойтись
посоветуйте наиболее подходящие, пожалуйста.
ну можно и покодить в принципе.. в друпале и это вроде красиво сделано.. но хотелось бы без кода конечно.
а почему вы говорите, что задача не тривиальная? какие тут подводные камни, или что тут вообще такого особенного? вы имеете в виду саму реализацию прав доступа к терминам?
я сейчас пробую с node reference замутить эту штуку
тогда уж user_reference
а вообще продумайте всю структуру сайта.
магазин - юзер
товары - ноды
каталог - таксономия
кабинет пользователя как витрина магазина
Чтобы не дать пользователям заливать товар в чужие магазины-можно создавать каждому пользователю термин при регистрации.
А при создании им ноды типа "товар" автоматом подставлять этот термин.
Может и правда както с помощью модулей можно..но я не люблю копаться в этих дебрях..мне проще(и приятнее)
написать свои граблисамому создать модуль,который всё это сделает.тааак.. в node reference я пока что не нашёл как сделать так, чтобы ограничивать список нодами магазинов текущего юзера при создании Товара.. это я так понимаю должно быть встроено в модуль.. но в references этого нету.. жааль
а на ум приходят такие варианты:
- Entity reference
- Relation
- и вот ещё думаю посмотреть viewfield
на счёт структуры кстати тоже интересно. хочется на самом деле всё с самого начала продумать, и только тогда делать.
ваша схема почти на 100 процентов подходит.. только получается, что если юзер хочет зарегистрировать второй магазин, то ему надо будет зарегистрировать под другим логином в системе, а надо чтобы один пользователь мог создать 2 магазина. и управлять ими
Это уже поинтереснее будет..тут думать придётся))
Если автоматически что-то делать хочешь-то покури хуки.
Ну и берись за написание модуля для Drupal ))
поэтому возьмите ручку и листок бумаге и нарисуйте структуру вашего сайта, а потом уже решайте что и чем будет. а потом уже хуки в руки и вперед(если не найдете нужного функционала(в чем сильно сомневаюсь)).
p.s. можно OG задействовать
Чёто последние дни все стихами говорят))
Сложный модуль.
коллеги. спасибо за консультацию. буду изучать вопрос дальше
из за обширного функционала) но у ТС пока нет четкого понимания задачи, отсюда и сложности с выбором инструментов
тут скоро песни писать начнешь)
нашёл вот такую штуку - http://www.drupal.ru/node/48410
расширение виджета node reference.. в принципе делать магазин нодой - мне подходит.. по крайней мере эти магазины уже показываются на общей openlayer карте.
виджет node reference - это что-то управляющее показом поля в node? там наверное можно и сделать этот хук, который будет фильтровать ноды по user_id?
да, я с самого начала не смог сформулировать то что мне нужно. точнее просто не знал к каким проблемам это приведёт.
вот пока что задача такая:
- каталог магазинов
- каталоги товаров
- привязка товара к магазину
- юзер может содержать несколько магазинов. создавать их, добавлять в них товары. один товар может быть сразу в нескольких магазинах
- ну и вот эта фича, чтобы при добавлении товара можно было выбрать из своих магазинов, куда товар добавиться (можно выбрать сразу несколько. потом этот товар можно снять из того магазина, в котором его нету, например.
- ещё нужна такая фишка, чтобы оставлять отзывы. в принципе для этого могут подойти комментарии? то есть любой юзер может оставить отзыв о магазине, например.
а если это делать не комментариями, то возникает такой вопрос:
допустим есть тип ноды - "Отзыв". любой юзер заходит на страницу магазина и нажимает кнопку "Оставить отзыв". система даёт форму (тема, содержание, оценка и больше ничего). надо так, чтобы отзыв прикреплялся к этому магазину, при чём юзер самостоятельно не выбирает название этого магазина из списка.. это же логично - зашёл на страницу магазина - оставил отзыв. выбирать магазин не нужно - и так уже на его страницу зашёл
у меня такое впечатление, что все эти "вкусности" уже давно придуманы или в модулях, или профессиональный друпалер может это сделать довольно быстро и просто, совсем не заморачиваясь, если какого-то такого юзабилити не хватает
потому что изначально мне подходит по логике структура сайта предложенная Chyvakoff (словари Магазины и Каталог товаров + товары нодами), но тут не хватает такой казалось бы простой фишки - магазин принадлежит только одному пользователю и добавлять туда ноды товаров может только он, а просматривать каталоги могут все кто хочет
стало быть надо или искать готовое решение в модулях, или делать эти самые хуки
ну тогда примерно так:
магазин(нода)->товар(нода)(через референс)
теперь вопрос, как собираетесь бороться с дублями? например в одном магазине гениратор, в другом генератор, в третьем Генератор
это все решается через аргументы
ага. получилось так.. хороший день!! .. люблю получать от друпала то что хочется без строчки кода)
получился такой наборчик модулей:
Node reference (из References), View reference,
добавил field type Node_Reference к ноде товара. во view создал reference с фильтром по типу ноды "Магазин" и контекстным фильтром по UID logged in. при создании товара показывает только магазины текущего пользователя (залогиненного).
Вот кстати подумал, раз всё так хорошо получается, что можно и действительно задействовать OG, чтобы добиться такого интересного функционала: помощник владельца магазина. второй юзер, который находится в одной группе пользователей с владельцем, который тоже может добавлять товары в его магазин. типа того.. думаете OG подойдёт? или лучше что попроще использовать?
накрутил я конечно тут, что проще sharepoint 2010 поставить походу)), но согласитесь функция довольно приятная и полезная. я про другой свой проект думаю, который будет посложней и автоматизация и разделение прав там будет посерьёзней
будет редактор контента. будет анализировать словари и товары на предмет "опечаток" (специальных или нет) и исправлять их. все эти действия записываются в журнал - так что можно будет и его проверить в случае необходимости). потом надо чтобы поиск умел такие ошибки различать.. поможет ли мне в этом apache solr интересно?
а что бы вы посоветовали в таком случае? вы мне кстати уже столько насоветовали. я честно говоря в восторге от знакомства с вами !!!
учитывайте специфику запчастей, а именно - магазины по сути продают запчасти с одними и теми же каталожными номерами и характеристиками. и отличия будут только в цене.
по сути можно распарсить какой нибудь текдок и сделать каталог, а продавец будет только назначать цену.
но как это сделать я пока не знаю)
ага. приму к сведению
у меня появился ещё один вопрос по теме, если вы не против.
вот вы мне объяснили, как сделать так, чтобы при создании товара в поле referenced node показывались только ноды принадлежащие текущему юзеру. теперь задачу надо чуть чуть усложнить:
если юзер - админ - тогда всё таки показывать там все ноды без фильтрации по UID
что я пока что нашёл. во views в контекстном фильтре, который я создал, есть некий EXCEPTION.. он там говорит, что если получит такой вот аргумент, тогда типа этот фильтр не будет задействован.. вроде похоже на то что мне надо.
потом в типе материала в поле node reference внизу есть аргументы для представления.. похоже это как раз там и передаётся этот аргумент.
вот только как этим пользоваться - пока не догнал. было бы хорошо через эти аргументы передавать во view роль текущего пользователя
по идее укажите там uid админа
да. это работает
НО, мой пытливый ум требует ответов
всё же. если я хочу сделать exception по user role.. похоже это надо какими-то другими средствами делать?
я себе это так представляю:
если user role = admin, тогда фильтр игнорируется
если user role = все другие, тогда применяется фильтр по content author id = logged uid
но это я так думаю, а как должен думать друпалер вьювер?
там же в контекстных фильтрах нашёл Критерии валидации. В общем-то похожее на то что мне надо, но у меня не получилось настроить. я делал так: всё тот же контекстный фильтр по author id ноды, берётся user id from logged in user, потом опускаюсь ниже - When the filter value IS available or a default is provided - Specify validation criteria - пользователь - Restrict user based on role - авторизованный пользователь .. это должно значить походу, что фильтр срабатывает только для авторизированных пользователей (не включая администратора я так понимаю)
а дальше я указал Action to take if filter value does not validate - display all results for specified field. это тоже для меня как-то размыто. я так понял, что типа, что делать, если фильтр не сработал, то значит показать все значения... какого-то там поля.
В общем это не сработало. а жаль. но зато с Exception по uid админа - работает. чего кстати мне пока что хватает, но по вопросу с ролями всё же хочется разобраться чтобы уже уметь. то есть вопрос остаётся таким: как "отключить/пропустить" фильтр, если role of logged in user = administrator
да. это работает
НО, мой пытливый ум требует ответов
всё же. если я хочу сделать exception по user role.. похоже это надо какими-то другими средствами делать?
я себе это так представляю:
если user role = admin, тогда фильтр игнорируется
если user role = все другие, тогда применяется фильтр по content author id = logged uid
но это я так думаю, а как должен думать друпалер вьювер?
там же в контекстных фильтрах нашёл Критерии валидации. В общем-то похожее на то что мне надо, но у меня не получилось настроить. я делал так: всё тот же контекстный фильтр по author id ноды, берётся user id from logged in user, потом опускаюсь ниже - When the filter value IS available or a default is provided - Specify validation criteria - пользователь - Restrict user based on role - авторизованный пользователь .. это должно значить походу, что фильтр срабатывает только для авторизированных пользователей (не включая администратора я так понимаю)
а дальше я указал Action to take if filter value does not validate - display all results for specified field. это тоже для меня как-то размыто. я так понял, что типа, что делать, если фильтр не сработал, то значит показать все значения... какого-то там поля.
В общем это не сработало. а жаль. но зато с Exception по uid админа - работает. чего кстати мне пока что хватает, но по вопросу с ролями всё же хочется разобраться чтобы уже уметь. то есть вопрос остаётся таким: как "отключить/пропустить" фильтр, если role of logged in user = administrator
все делается в настройках аргумента
в настройках аргумента все делается. можно если НЕ представлен аргумент показать все или при валидации показать все. смотрите как вам удобнее