From 948914e88fa6849ec3be1cd88113dc7febeda577 Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Thu, 22 Aug 2024 14:16:57 +0700 Subject: update template detail product --- src/pages/_app.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pages') diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx index bcb41dd6..f52aa5f7 100644 --- a/src/pages/_app.jsx +++ b/src/pages/_app.jsx @@ -85,7 +85,7 @@ function MyApp({ Component, pageProps: { session, ...pageProps } }) { return ( - + {animateLoader && ( Date: Thu, 3 Oct 2024 16:47:37 +0700 Subject: product varian --- src/pages/api/shop/variant-detail.js | 2 +- src/pages/shop/product/variant/[slug].jsx | 7 ------- 2 files changed, 1 insertion(+), 8 deletions(-) (limited to 'src/pages') diff --git a/src/pages/api/shop/variant-detail.js b/src/pages/api/shop/variant-detail.js index 08ce75b8..160ec979 100644 --- a/src/pages/api/shop/variant-detail.js +++ b/src/pages/api/shop/variant-detail.js @@ -1,4 +1,4 @@ -import { productMappingSolr, variantsMappingSolr } from '@/utils/solrMapping' +import { variantsMappingSolr } from '@/utils/solrMapping' import axios from 'axios' export default async function handler(req, res) { diff --git a/src/pages/shop/product/variant/[slug].jsx b/src/pages/shop/product/variant/[slug].jsx index 42f38774..2c0dd64b 100644 --- a/src/pages/shop/product/variant/[slug].jsx +++ b/src/pages/shop/product/variant/[slug].jsx @@ -32,16 +32,9 @@ export async function getServerSideProps(context) { tier ); let product = response.data; - // let product = await variantApi({ id: getIdFromSlug(slug), headers: { Token: authToken } }) if (product?.length == 1) { product = product[0]; - /* const regexHtmlTags = /(<([^>]+)>)/gi - const regexHtmlTagsExceptP = /<\/?(?!p\b)[^>]*>/g - product.description = product.description - .replace(regexHtmlTagsExceptP, ' ') - .replace(regexHtmlTags, ' ') - .trim()*/ } else { product = null; } -- cgit v1.2.3 From c8fef0308a258c27338b80a9b19e187fa68403ca Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Thu, 24 Oct 2024 08:50:18 +0700 Subject: delete console log --- src/pages/my/address/[id]/edit.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pages') diff --git a/src/pages/my/address/[id]/edit.jsx b/src/pages/my/address/[id]/edit.jsx index c126b290..19d7af41 100644 --- a/src/pages/my/address/[id]/edit.jsx +++ b/src/pages/my/address/[id]/edit.jsx @@ -46,6 +46,6 @@ export async function getServerSideProps(context) { subDistrict: '', business_name: '', }; - console.log('ini default',defaultValues); + // console.log('ini default',defaultValues); return { props: { id, defaultValues } }; } -- cgit v1.2.3 From f0d03727f69a84daff484ea9a7944d9c29daa5c3 Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Thu, 24 Oct 2024 15:02:04 +0700 Subject: done page category brand --- src/pages/api/shop/search.js | 9 ++++-- src/pages/api/shop/url-category_brand.js | 17 +++++++++++ src/pages/shop/find/[slug].jsx | 51 ++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 src/pages/api/shop/url-category_brand.js create mode 100644 src/pages/shop/find/[slug].jsx (limited to 'src/pages') 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 ( + + {query && } + + ); +} -- cgit v1.2.3 From 2657955cb4dc4cbe703d77bb43a6394a8ee98f74 Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Thu, 24 Oct 2024 16:27:54 +0700 Subject: add seo --- src/pages/shop/find/[slug].jsx | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/pages') diff --git a/src/pages/shop/find/[slug].jsx b/src/pages/shop/find/[slug].jsx index 4666add5..50797153 100644 --- a/src/pages/shop/find/[slug].jsx +++ b/src/pages/shop/find/[slug].jsx @@ -3,6 +3,8 @@ import { useRouter } from 'next/router'; import { useEffect, useState } from 'react'; import Seo from '@/core/components/Seo'; import dynamic from 'next/dynamic'; +import { get } from 'lodash-contrib'; +import { getIdFromSlug, getNameFromSlug } from '@/core/utils/slug'; const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout') @@ -18,6 +20,7 @@ export default function FindPage() { const [result, setResult] = useState(null); const [query, setQuery] = useState(null); + const slug = getNameFromSlug( route.query.slug) +' '+ getIdFromSlug( route.query.slug) const getUrls = async (url) => { try { let response = await axios( @@ -38,13 +41,24 @@ export default function FindPage() { if (result) { let fq = `category_parent_ids:${result.category_id_i} AND manufacture_id_i:${result.brand_id_i}`; setQuery({ - fq : fq + fq: fq, }); } }, [result]); return ( + {query && } ); -- cgit v1.2.3 From bb2fc00e1f399be919d7b777dd0ae17edd6b2a2e Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Fri, 25 Oct 2024 10:04:34 +0700 Subject: sitemap categories brand --- src/pages/api/shop/url-category_brand.js | 7 +++-- src/pages/shop/find/[slug].jsx | 3 +- src/pages/sitemap/categories-brand.xml.js | 35 ++++++++++++++++++++++ src/pages/sitemap/categories-brand/[page].js | 43 ++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 src/pages/sitemap/categories-brand.xml.js create mode 100644 src/pages/sitemap/categories-brand/[page].js (limited to 'src/pages') diff --git a/src/pages/api/shop/url-category_brand.js b/src/pages/api/shop/url-category_brand.js index cfcc7d73..160aa166 100644 --- a/src/pages/api/shop/url-category_brand.js +++ b/src/pages/api/shop/url-category_brand.js @@ -1,9 +1,12 @@ import axios from 'axios'; export default async function handler(req, res) { - const { url = '' } = req.query; + const { url = '', page = 1, limit = 30 } = req.query; + + let offset = (page - 1) * limit; - const params = [`q.op=AND`, `q=url_s:"${url}"`, `indent=true`]; + const params = [`q.op=AND`, `q=${url ? `"${url}"` : '*'}`, `indent=true`, `rows=${limit}`, `start=${offset}`]; + try { let result = await axios( process.env.SOLR_HOST + diff --git a/src/pages/shop/find/[slug].jsx b/src/pages/shop/find/[slug].jsx index 50797153..85e780ff 100644 --- a/src/pages/shop/find/[slug].jsx +++ b/src/pages/shop/find/[slug].jsx @@ -16,11 +16,12 @@ const ProductSearch = dynamic(() => const BASE_URL = 'https://indoteknik.com'; export default function FindPage() { const route = useRouter(); + const qSlug = route?.query?.slug || null; const url = BASE_URL + route.asPath; const [result, setResult] = useState(null); const [query, setQuery] = useState(null); - const slug = getNameFromSlug( route.query.slug) +' '+ getIdFromSlug( route.query.slug) + const slug = qSlug ? getNameFromSlug(route?.query?.slug) +' '+ getIdFromSlug(route?.query?.slug) : ''; const getUrls = async (url) => { try { let response = await axios( diff --git a/src/pages/sitemap/categories-brand.xml.js b/src/pages/sitemap/categories-brand.xml.js new file mode 100644 index 00000000..b23363e9 --- /dev/null +++ b/src/pages/sitemap/categories-brand.xml.js @@ -0,0 +1,35 @@ +import productSearchApi from '@/lib/product/api/productSearchApi' +import { create } from 'xmlbuilder' +import _ from 'lodash-contrib' +import axios from 'axios' + +export async function getServerSideProps({ res }) { + const baseUrl = process.env.SELF_HOST + '/sitemap/categories-brand' + const limit = 500 + const categories = await axios( + `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/url-category_brand?limit=${limit}` + ) + const pageCount = Math.ceil(categories.data.response.numFound / limit) + const pages = Array.from({ length: pageCount }, (_, i) => i + 1) + const sitemapIndex = create('sitemapindex', { encoding: 'UTF-8' }).att( + 'xmlns', + 'http://www.sitemaps.org/schemas/sitemap/0.9' + ) + + const date = new Date() + pages.forEach((page) => { + const sitemap = sitemapIndex.ele('sitemap') + sitemap.ele('loc', `${baseUrl}/${page}.xml`) + sitemap.ele('lastmod', date.toISOString().slice(0, 10)) + }) + + res.setHeader('Content-Type', 'text/xml') + res.write(sitemapIndex.end()) + res.end() + + return { props: {} } +} + +export default function SitemapProducts() { + return null +} diff --git a/src/pages/sitemap/categories-brand/[page].js b/src/pages/sitemap/categories-brand/[page].js new file mode 100644 index 00000000..6b55e426 --- /dev/null +++ b/src/pages/sitemap/categories-brand/[page].js @@ -0,0 +1,43 @@ + +import productSearchApi from '@/lib/product/api/productSearchApi' +import { create } from 'xmlbuilder' +import _ from 'lodash-contrib' +import { createSlug } from '@/core/utils/slug' +import axios from 'axios' + +export async function getServerSideProps({ query, res }) { + const baseUrl = process.env.SELF_HOST + '/shop/product/' + const { page } = query + const limit = 500 + const categories = await axios( + `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/url-category_brand?limit=${limit}&page=${page.replace( + '.xml', + '' + )}` + ) + + const sitemap = create('urlset', { encoding: 'utf-8' }).att( + 'xmlns', + 'http://www.sitemaps.org/schemas/sitemap/0.9' + ) + + const date = new Date() + categories.data.response.docs.forEach((product) => { + const url = sitemap.ele('url') + const loc = product.url_s; + url.ele('loc', loc) + url.ele('lastmod', date.toISOString().slice(0, 10)) + url.ele('changefreq', 'daily') + url.ele('priority', '0.8') + }) + + res.setHeader('Content-Type', 'text/xml') + res.write(sitemap.end()) + res.end() + + return { props: {} } +} + +export default function SitemapProducts() { + return null +} -- cgit v1.2.3 From 16e46197ee2c9879ae8ef9a68d4ce67ae68843e3 Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Fri, 25 Oct 2024 10:24:24 +0700 Subject: seo title --- src/pages/shop/find/[slug].jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pages') diff --git a/src/pages/shop/find/[slug].jsx b/src/pages/shop/find/[slug].jsx index 85e780ff..e7b8bd48 100644 --- a/src/pages/shop/find/[slug].jsx +++ b/src/pages/shop/find/[slug].jsx @@ -50,7 +50,7 @@ export default function FindPage() { return ( Date: Mon, 28 Oct 2024 09:33:24 +0700 Subject: capitalizeEachWord --- src/pages/shop/find/[slug].jsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/pages') diff --git a/src/pages/shop/find/[slug].jsx b/src/pages/shop/find/[slug].jsx index e7b8bd48..7174a9fb 100644 --- a/src/pages/shop/find/[slug].jsx +++ b/src/pages/shop/find/[slug].jsx @@ -5,6 +5,7 @@ import Seo from '@/core/components/Seo'; import dynamic from 'next/dynamic'; import { get } from 'lodash-contrib'; import { getIdFromSlug, getNameFromSlug } from '@/core/utils/slug'; +import { capitalizeEachWord } from '../../../utils/capializeFIrstWord'; const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout') @@ -17,11 +18,13 @@ const BASE_URL = 'https://indoteknik.com'; export default function FindPage() { const route = useRouter(); const qSlug = route?.query?.slug || null; - const url = BASE_URL + route.asPath; + const url = BASE_URL + route.asPath.split('?')[0]; const [result, setResult] = useState(null); const [query, setQuery] = useState(null); - const slug = qSlug ? getNameFromSlug(route?.query?.slug) +' '+ getIdFromSlug(route?.query?.slug) : ''; + const __slug = qSlug ? getNameFromSlug(route?.query?.slug) +' '+ getIdFromSlug(route?.query?.slug) : ''; + const slug = capitalizeEachWord(__slug); + const getUrls = async (url) => { try { let response = await axios( @@ -50,7 +53,7 @@ export default function FindPage() { return ( Date: Mon, 28 Oct 2024 12:07:09 +0700 Subject: update informasi product varian --- src/pages/api/shop/search.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pages') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index bc1c014b..ace281f7 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -88,7 +88,7 @@ export default async function handler(req, res) { 'price_tier1_v2_f:[1 TO *]', ]; - if(fq){ + if (fq && source != 'similar') { filterQueries.push(fq); } const fq_ = filterQueries.join(' AND '); -- cgit v1.2.3 From 90b5b3f35e230f863b5bd7e44154497283759f03 Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Tue, 29 Oct 2024 14:19:42 +0700 Subject: CR meta title page category brand --- src/pages/shop/find/[slug].jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pages') diff --git a/src/pages/shop/find/[slug].jsx b/src/pages/shop/find/[slug].jsx index 7174a9fb..dc243b73 100644 --- a/src/pages/shop/find/[slug].jsx +++ b/src/pages/shop/find/[slug].jsx @@ -53,7 +53,7 @@ export default function FindPage() { return ( Date: Wed, 30 Oct 2024 10:03:28 +0700 Subject: page garansi resmi & pembayaran tempo --- src/pages/garansi-resmi.jsx | 13 +++++++++++++ src/pages/pembayaran-tempo.jsx | 13 +++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 src/pages/garansi-resmi.jsx create mode 100644 src/pages/pembayaran-tempo.jsx (limited to 'src/pages') diff --git a/src/pages/garansi-resmi.jsx b/src/pages/garansi-resmi.jsx new file mode 100644 index 00000000..7384a89d --- /dev/null +++ b/src/pages/garansi-resmi.jsx @@ -0,0 +1,13 @@ +import Seo from '@/core/components/Seo' +import BasicLayout from '@/core/components/layouts/BasicLayout' +import IframeContent from '@/lib/iframe/components/IframeContent' + +export default function GaransiResmi() { + return ( + + + + + + ) +} diff --git a/src/pages/pembayaran-tempo.jsx b/src/pages/pembayaran-tempo.jsx new file mode 100644 index 00000000..363e3099 --- /dev/null +++ b/src/pages/pembayaran-tempo.jsx @@ -0,0 +1,13 @@ +import Seo from '@/core/components/Seo' +import BasicLayout from '@/core/components/layouts/BasicLayout' +import IframeContent from '@/lib/iframe/components/IframeContent' + +export default function PembnayaranTempo() { + return ( + + + + + + ) +} -- cgit v1.2.3 From 4e48c548c9802046cf319873a9472149b32017be Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Fri, 1 Nov 2024 13:50:53 +0700 Subject: cr seo page find category brand --- src/pages/shop/find/[slug].jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/pages') diff --git a/src/pages/shop/find/[slug].jsx b/src/pages/shop/find/[slug].jsx index dc243b73..268b1e56 100644 --- a/src/pages/shop/find/[slug].jsx +++ b/src/pages/shop/find/[slug].jsx @@ -53,12 +53,12 @@ export default function FindPage() { return ( Date: Thu, 7 Nov 2024 15:23:42 +0700 Subject: update fetch data logic --- src/pages/api/shop/variant-detail.js | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'src/pages') diff --git a/src/pages/api/shop/variant-detail.js b/src/pages/api/shop/variant-detail.js index 08ce75b8..af3525b3 100644 --- a/src/pages/api/shop/variant-detail.js +++ b/src/pages/api/shop/variant-detail.js @@ -1,21 +1,28 @@ -import { productMappingSolr, variantsMappingSolr } from '@/utils/solrMapping' -import axios from 'axios' +import { productMappingSolr, variantsMappingSolr } from '@/utils/solrMapping'; +import axios from 'axios'; export default async function handler(req, res) { try { let productVariants = await axios( process.env.SOLR_HOST + `/solr/variants/select?q=id:${req.query.id}&q.op=OR&indent=true` - ) - let auth = req.query.auth === 'false' ? JSON.parse(req.query.auth) : req.query.auth + ); + let template_id = productVariants.data.response.docs[0].template_id_i; + let auth = + req.query.auth === 'false' ? JSON.parse(req.query.auth) : req.query.auth; let productTemplate = await axios( - process.env.SOLR_HOST + `/solr/product/select?q=id:${req.query.id}&q.op=OR&indent=true` - ) - let result = variantsMappingSolr(productTemplate.data.response.docs, productVariants.data.response.docs, auth || false) - - res.status(200).json(result) + process.env.SOLR_HOST + + `/solr/product/select?q=id:${template_id}&q.op=OR&indent=true` + ); + let result = variantsMappingSolr( + productTemplate.data.response.docs, + productVariants.data.response.docs, + auth || false + ); + + res.status(200).json(result); } catch (error) { - console.error('Error fetching data from Solr:', error) - res.status(500).json({ error: 'Internal Server Error' }) + console.error('Error fetching data from Solr:', error); + res.status(500).json({ error: 'Internal Server Error' }); } -} \ No newline at end of file +} -- cgit v1.2.3