summaryrefslogtreecommitdiff
path: root/src/pages
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2024-10-24 15:02:04 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2024-10-24 15:02:04 +0700
commitf0d03727f69a84daff484ea9a7944d9c29daa5c3 (patch)
tree117471e270f70f713806a2de13cef726a6112a88 /src/pages
parentbaf62d2196ca0d168ab370c07feb5b2415dcf19b (diff)
done page category brand
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/api/shop/search.js9
-rw-r--r--src/pages/api/shop/url-category_brand.js17
-rw-r--r--src/pages/shop/find/[slug].jsx51
3 files changed, 74 insertions, 3 deletions
diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js
index 49a5fe69..bc1c014b 100644
--- a/src/pages/api/shop/search.js
+++ b/src/pages/api/shop/search.js
@@ -88,7 +88,10 @@ export default async function handler(req, res) {
'price_tier1_v2_f:[1 TO *]',
];
- const fq_ = filterQueries.join('AND ');
+ if(fq){
+ filterQueries.push(fq);
+ }
+ const fq_ = filterQueries.join(' AND ');
let offset = (page - 1) * limit;
let parameter = [
@@ -106,7 +109,7 @@ export default async function handler(req, res) {
: formattedQuery
}`,
`defType=edismax`,
- 'qf=name_s description_clean_t category_name manufacture_name_s variants_code_t variants_name_t category_id_ids default_code_s',
+ 'qf=name_s description_clean_t category_name manufacture_name_s variants_code_t variants_name_t category_id_ids default_code_s manufacture_id_i category_id_i ',
`start=${parseInt(offset)}`,
`rows=${limit}`,
`sort=${paramOrderBy}`,
@@ -149,7 +152,7 @@ export default async function handler(req, res) {
if (stock) parameter.push(`fq=stock_total_f:{1 TO *}`);
// Single fq in url params
- if (typeof fq === 'string') parameter.push(`fq=${encodeURIComponent(fq)}`);
+ // if (typeof fq === 'string') parameter.push(`fq=${encodeURIComponent(fq)}`);
// Multi fq in url params
if (Array.isArray(fq))
parameter = parameter.concat(
diff --git a/src/pages/api/shop/url-category_brand.js b/src/pages/api/shop/url-category_brand.js
new file mode 100644
index 00000000..cfcc7d73
--- /dev/null
+++ b/src/pages/api/shop/url-category_brand.js
@@ -0,0 +1,17 @@
+import axios from 'axios';
+
+export default async function handler(req, res) {
+ const { url = '' } = req.query;
+
+ const params = [`q.op=AND`, `q=url_s:"${url}"`, `indent=true`];
+ try {
+ let result = await axios(
+ process.env.SOLR_HOST +
+ `/solr/url_category_brand/select?` +
+ params.join('&')
+ );
+ res.status(200).json(result.data);
+ } catch (error) {
+ res.status(500).json({ error: 'Internal Server Error' });
+ }
+}
diff --git a/src/pages/shop/find/[slug].jsx b/src/pages/shop/find/[slug].jsx
new file mode 100644
index 00000000..4666add5
--- /dev/null
+++ b/src/pages/shop/find/[slug].jsx
@@ -0,0 +1,51 @@
+import axios from 'axios';
+import { useRouter } from 'next/router';
+import { useEffect, useState } from 'react';
+import Seo from '@/core/components/Seo';
+import dynamic from 'next/dynamic';
+
+const BasicLayout = dynamic(() =>
+ import('@/core/components/layouts/BasicLayout')
+);
+const ProductSearch = dynamic(() =>
+ import('@/lib/product/components/ProductSearch')
+);
+
+const BASE_URL = 'https://indoteknik.com';
+export default function FindPage() {
+ const route = useRouter();
+ const url = BASE_URL + route.asPath;
+ const [result, setResult] = useState(null);
+ const [query, setQuery] = useState(null);
+
+ const getUrls = async (url) => {
+ try {
+ let response = await axios(
+ `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/url-category_brand?url=${url}`
+ );
+ let result = response?.data?.response?.docs[0] || null;
+ setResult(result);
+ } catch (error) {
+ console.error('Error fetching data:', error);
+ }
+ };
+
+ useEffect(() => {
+ getUrls(url);
+ }, []);
+
+ useEffect(() => {
+ if (result) {
+ let fq = `category_parent_ids:${result.category_id_i} AND manufacture_id_i:${result.brand_id_i}`;
+ setQuery({
+ fq : fq
+ });
+ }
+ }, [result]);
+
+ return (
+ <BasicLayout>
+ {query && <ProductSearch query={query} prefixUrl={`${route.asPath}`} />}
+ </BasicLayout>
+ );
+}