diff options
| author | Mqdd <ahmadmiqdad27@gmail.com> | 2025-12-03 14:01:39 +0700 |
|---|---|---|
| committer | Mqdd <ahmadmiqdad27@gmail.com> | 2025-12-03 14:01:39 +0700 |
| commit | 3746587d5ecf639fb9ed75343aaf8f5b3d71812e (patch) | |
| tree | b26927360ea5665b5ad6398a1ced266a85b0bc86 /src | |
| parent | f15d2239818db77a624eb2287c5b1dcdb6427f5b (diff) | |
<Miqdad> Initial commit (done showing product based on keywords)
Diffstat (limited to 'src')
| -rw-r--r-- | src/pages/searchkey/[slug].jsx | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/pages/searchkey/[slug].jsx b/src/pages/searchkey/[slug].jsx new file mode 100644 index 00000000..f09520f4 --- /dev/null +++ b/src/pages/searchkey/[slug].jsx @@ -0,0 +1,89 @@ +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'; +import { capitalizeEachWord } from '../../utils/capializeFIrstWord'; + +const BasicLayout = dynamic(() => + import('@/core/components/layouts/BasicLayout') +); +const ProductSearch = dynamic(() => + import('@/lib/product/components/ProductSearch') +); + +// const BASE_URL = process.env.NEXT_PUBLIC_SELF_HOST; +const BASE_URL = 'https://indoteknik.com'; + +export default function KeywordPage() { + const router = useRouter(); + const [result, setResult] = useState(null); + const [query, setQuery] = useState(null); + + // Ambil slug dari URL dinamis + const keywordSlug = router?.query?.slug || ''; + const keyword = keywordSlug.replace(/-/g, ' ').toLowerCase(); + const url = BASE_URL + router.asPath.split('?')[0]; + const slugTitle = capitalizeEachWord(keyword); + + // Fetch info dari Solr index "url_category_brand" + const getUrls = async (url) => { + try { + const response = await axios( + `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/url-category_brand?url=${url}` + ); + const data = response?.data?.response?.docs[0] || null; + setResult(data); + console.log('[🔍 result from API]', data); // Tambahin ini + } catch (error) { + console.error('Error fetching data:', error); + } + }; + + // Panggil fetch setelah router siap + useEffect(() => { + if (router.isReady) { + getUrls(url); + } + }, [router.isReady]); + + // Jika Solr index ditemukan, siapkan parameter pencarian + useEffect(() => { + if (result) { + const fq = `category_parent_ids:${result.category_id_i} AND manufacture_id_i:${result.brand_id_i}`; + const q = keyword || '*:*'; // keyword dari URL + console.log('SOLR QUERY:', { q, fq }); + setQuery({ fq, q }); + } + }, [result, keyword]); + + if (!result) { + return ( + <BasicLayout> + <Seo title='Keyword tidak ditemukan' /> + <div className='container py-5'> + <h2>Produk tidak ditemukan berdasarkan keyword</h2> + </div> + </BasicLayout> + ); + } + + return ( + <BasicLayout> + <Seo + title={`Beli ${slugTitle} Original & Harga Terjangkau - indoteknik.com`} + description={`Beli ${slugTitle} Kirim Jakarta Surabaya Semarang Makassar Manado Denpasar Balikpapan Medan Palembang Lampung Bali Bandung Makassar Manado.`} + additionalMetaTags={[ + { + property: 'keywords', + content: `Beli ${slugTitle}, harga ${slugTitle}, ${slugTitle} murah, toko ${slugTitle}, ${slugTitle} jakarta, ${slugTitle} surabaya`, + }, + ]} + canonical={`${process.env.NEXT_PUBLIC_SELF_HOST}${ + router.asPath.split('?')[0] + }`} + /> + {query && <ProductSearch query={query} prefixUrl={`${router.asPath}`} />} + </BasicLayout> + ); +} |
