ورود

View Full Version : سوال: طراحی بخش جستجو بر اساس فیلتر های انتخابی کاربر



alibahman47
پنج شنبه 08 تیر 1396, 10:15 صبح
درود ,

میخوام بخش جستجو پیشرفته بر اساس فیلتر های انتخابی کاربر رو طراحی کنم :
نمونه مثال
(https://www.digikala.com/Search/Category-mobile-phone?brand[0]=22)و به صورت Ajax .

لطفا اگه نمونه کدی برای Asp.net Mvc سراغ دارید معرفی کنید ؟

و در صورت امکان میشه یه توضیح تیوری بدید که به چه صورت میشه این کار رو کرد ؟
1 - چطوری باید با هر انتخاب کاربر کوری تغییر میکنه ؟
2 - برای انجام این کار بنظرتون اگه برای هر مورد فیلتر یک پارامتر ورودی در اکشن مربوط ایجاد کنم و با تیک خوردن یک مورد مقدار رو به صورت JQuery Ajax به سمت اکشن بفرستم و کوری دوباره صورت بگیره و مقدار برگشت داده بشه - این روش خوبه ؟


بنده تا اینجای کار یک صفحه رو طراحی کردم که اگه عنوان یک گروه رو بصورت پارامتر در آدرس بار اضافه کنیم محصولات مرتبط رو به نشون میده و به صورت پیجر ایجکسی در میاره .
بنده تا حالا طراحی فیلتر ها رو انجام ندادم , دوستان اگه بشه یه خورده راهنمایی کنید خیلی ممنون میشم که بدونم کار رو چطوری شروع کنم .

parvizwpf
پنج شنبه 08 تیر 1396, 15:48 عصر
https://www.codeproject.com/Articles/1046102/MVC-pagination-filtering-and-sorting-inside-partia

alibahman47
جمعه 09 تیر 1396, 10:08 صبح
https://www.codeproject.com/Articles/1046102/MVC-pagination-filtering-and-sorting-inside-partia


ممنون :قلب:

دیجیت کالا از روش انتقال با Query String استفاده میکنه :
Adress Bar این صفحه رو ببینید (https://www.digikala.com/Search/Category-mobile-phone?attribute%5BA136%5D%5B0%5D=197&attribute%5BA136%5D%5B1%5D=198&attribute%5BA136%5D%5B2%5D=196&attribute%5BA20172%5D%5B0%5D=25104&attribute%5BA20172%5D%5B1%5D=24933&attribute%5BA20172%5D%5B2%5D=24926&attribute%5BA20172%5D%5B3%5D=24936&attribute%5BA183%5D%5B0%5D=260&attribute%5BA183%5D%5B1%5D=27674&attribute%5BA183%5D%5B2%5D=11914&attribute%5BA183%5D%5B3%5D=255&brand%5B0%5D=22&brand%5B1%5D=20&sortby=4&type%5B0%5D=1314)
که البته ظاهرش جالب نیست .




بنظرتون کدنویسی مثل دیجیت کالا برای Seo بد نیست ؟

parvizwpf
جمعه 09 تیر 1396, 14:10 عصر
شرمنده اطلاعاتم در زمینه سئو خوب نیست

moslem.hady
شنبه 10 تیر 1396, 07:31 صبح
بنظرتون کدنویسی مثل دیجیت کالا برای Seo بد نیست ؟
نه هیچ بدی ای نداره. کوئری استرینگ هم باشه بهتره. البته قبلا با # جدا میکرد.

alibahman47
دوشنبه 12 تیر 1396, 09:56 صبح
فیلتر رو برای قیمت و برند و رنگ و موجود بودن و نبودن و گارانتی که موارد مشابه برای همه محصولات اند انجام دادم و بدرستی کار میکنه .
ولی برای جزییات مربوط به هر محصول مثلا برای لپ تاپ : بر اساس رم و Cpu و.... نتونستم انجامش بدم .
بنده جزییات هر محصول رو بصورت یک سطر در یک جدول جدا ذخیره کردم .

1 - جزییات مربوط به هر دسته بندی :
http://s9.picofile.com/file/8299463300/table.jpg
2 - مقادیر برای یک محصول :

Click here to view the original image of 831x72px.
http://s9.picofile.com/file/8299463484/table2.jpg
هدفم ازین شیوه ذخیره اطلاعات این بود که به جای اینگه برای ذخیره جزییات یک محصول مثلا اگر حتی تا 20 مورد هم باشه فقط یک سطر در جدول ذخیره میشه
اگه بنظرتون فیلتر گذاری با این شیوه ذخیره جزییات هر محصول ممکن نیست لطفا بهم بگید !

منظور از جزییات مثلا برای لپ تاپ : رم و گرافیک و سی پی یو و هاد و ...

و در قسمتی از کد ها نیاز هست که روی یک سطر حلقه Foreach رو بزنم که ستون به ستون جلو بره -
برای اینکه حلقه foreach علاوه بر چک کردن سطر به سطر تک به تک ستون ها رو هم چک کنه به چه شکل باید کدش رو نوشت ؟
http://s9.picofile.com/file/8299464400/row.jpg
در ورودی حلقه دوم باید چه کدی بنویسم که بتونه ستون ها رو انتخاب کنه ؟

moslem.hady
دوشنبه 12 تیر 1396, 16:29 عصر
ساختار جدولتون اصلا مناسب نیست.
ببیند من این کار رو کردم. که منطقش هم از روی CMS های مطرح برداشتم.
یه جدول داریم برای لیست مشخصه هایی که یک دسته بندی از محصولات میگیره (اگه فقط 1 دسته دارید، دیگه groupID نمیخواد). اسم جدول SpecificationAttribute:
145676
حالا این مشخصه 3 حالت داره (من 3 حالت گرفتم) که با فیلد FieldType مشخص میشه. یا یه تکست هست که کاربر وارد میکنه (مثل وزن)، یا یه سری مقادیر پیش فرض داره که کاربر باید یکی رو انتخاب کنه(مثل میزان حافظه کش، مقادیر 1mb,2mb,... ) یا از مقادیر مشخص شده میتونه چندتا رو انتخاب کنه. مثل کاربری: اداری، بازی، مولتی مدیا. اسم جدول SpecificationAttributeOption:
145679
مثلا توی عکس بالا، برای SpecificationAtributeID شماره 6 که توی جدول SpecificationAttribute هست سری پردازنده، مقادیر Core i7, core i5 و... رو داریم.
من برای مقادیری که تکست هستند و نیازی به option ندارم هم یه رکورد اینجا ذخیره میکنم. مثل ردیف 25 (اسپیکر) که کار چندان مناسبی نیست و میشه یکم بهینه تر بشه.


حالا موقعی که میخوام ذخیره کنم، توی یه جدول دیگه، میگم مثلا برای این کالا، برای فلان مشخصه، مقدار (مقادیر) فلان انتخاب شده اند. اسم جدول ProductSpecification:

145680
مثلا اینجا گفتم، توی ردیف 39، محصول کد 10576، مقدار برای SpecAttrID (از جدول SpecificationAttribute) کد 6 میشه SpecAttrOptionID (از جدول SpecificationAttributeOption) مقدار 29
حالا من یه کاری اینجا کردم اینه که مقدار و عنوان اون مشخصه رو هم ذخیره کردم که اشتباهه. دلیل من 2تا چیز بود . اولی اینکه برای مقادیر متنی، نمیدونستم چیکار باید بکنم. و دوم اینکه میخواستم لودش سریعتر بشه و نخواد جوین کنم با اون 2 جدول.
شما میتونید خودتون بهینه تر کنید. من چون عجله داشتم، فرصت تفسیر نداشتم!!

حالا موقع جستجوی پیشرفته، از جدول SpecificationAttribute، اونایی که فیلد UseInSearch ترو هست، رو میارم اینجا نشون میدم. و با یه سری توابع، کوئری سرچ رو درست میکنم. در تصویر زیر، قیمت بر اساس کمترین و بیشترین قیمت این دسته بندی میاد، برندها هم توی یه جدول دیگه ذخیره هستند.
145682

این پست فقط برای توضیح نحوه جدول بندی و ذخیره اطلاعات بود.
(این عکسهایی که پایین ضمیمه شدن اشتباه هستند. نتونستم پاک کنم :-| )