diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-03-29 17:02:57 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-03-29 17:02:57 +0700 |
| commit | 72329fb20c3bc7703590b85bd0c42ea32e7cfe61 (patch) | |
| tree | a5ad3074010154cf6d105a81f1175da844c0a798 /src/pages | |
| parent | 0d42449cdd6e53cb8e98555660aefee81997a9d3 (diff) | |
SEO
Diffstat (limited to 'src/pages')
| -rw-r--r-- | src/pages/_document.jsx | 62 | ||||
| -rw-r--r-- | src/pages/about-us.jsx | 3 | ||||
| -rw-r--r-- | src/pages/activate.jsx | 2 | ||||
| -rw-r--r-- | src/pages/blog/[slug].jsx | 3 | ||||
| -rw-r--r-- | src/pages/blog/index.jsx | 3 | ||||
| -rw-r--r-- | src/pages/contact-us.jsx | 2 | ||||
| -rw-r--r-- | src/pages/faqs.jsx | 2 | ||||
| -rw-r--r-- | src/pages/index.jsx | 7 | ||||
| -rw-r--r-- | src/pages/login.jsx | 3 | ||||
| -rw-r--r-- | src/pages/register.jsx | 3 | ||||
| -rw-r--r-- | src/pages/shop/brands/[slug].jsx | 15 | ||||
| -rw-r--r-- | src/pages/shop/brands/index.jsx | 3 | ||||
| -rw-r--r-- | src/pages/shop/cart.jsx | 3 | ||||
| -rw-r--r-- | src/pages/shop/checkout/[status].jsx | 15 | ||||
| -rw-r--r-- | src/pages/shop/checkout/index.jsx | 29 | ||||
| -rw-r--r-- | src/pages/shop/product/[slug].jsx | 18 | ||||
| -rw-r--r-- | src/pages/shop/quotation/finish.jsx | 5 | ||||
| -rw-r--r-- | src/pages/shop/quotation/index.jsx | 29 | ||||
| -rw-r--r-- | src/pages/shop/search.jsx | 3 | ||||
| -rw-r--r-- | src/pages/video.jsx | 3 |
20 files changed, 178 insertions, 35 deletions
diff --git a/src/pages/_document.jsx b/src/pages/_document.jsx index bff2b1b2..ff205a38 100644 --- a/src/pages/_document.jsx +++ b/src/pages/_document.jsx @@ -1,9 +1,67 @@ import { Html, Head, Main, NextScript } from 'next/document' +import Script from 'next/script' -export default function Document() { +export default function MyDocument() { return ( <Html> - <Head /> + <Head> + <meta name='facebook-domain-verification' content='328wmjs7hcnz74rwsqzxvq50rmbtm2' /> + <Script + async + strategy='beforeInteractive' + src='https://www.googletagmanager.com/gtag/js?id=UA-10501937-1' + /> + + <Script + id='google-analytics-ua' + strategy='beforeInteractive' + dangerouslySetInnerHTML={{ + __html: ` + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + gtag('config', 'UA-10501937-1'); + ` + }} + /> + + <Script + async + strategy='beforeInteractive' + src='https://www.googletagmanager.com/gtag/js?id=G-G1W8MNZ11P' + /> + + <Script + id='google-analytics-ga' + strategy='beforeInteractive' + dangerouslySetInnerHTML={{ + __html: ` + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + gtag('config', 'G-G1W8MNZ11P'); + ` + }} + /> + + <Script + id='google-tag-manager' + strategy='afterInteractive' + dangerouslySetInnerHTML={{ + __html: ` + (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var + f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); + })(window,document,'script','dataLayer','GTM-PHRB7RP'); + ` + }} + /> + + <meta + name='google-site-verification' + content='uHuW_mZhjv_fUg3do-lV8Mo7R2vVjF4MPQhTXFP3jH4' + /> + </Head> <body> <Main /> <NextScript /> diff --git a/src/pages/about-us.jsx b/src/pages/about-us.jsx index 9c9c8baf..207f265d 100644 --- a/src/pages/about-us.jsx +++ b/src/pages/about-us.jsx @@ -1,9 +1,12 @@ +import Seo from '@/core/components/Seo' import BasicLayout from '@/core/components/layouts/BasicLayout' import PageContent from '@/lib/content/components/PageContent' export default function AboutUs() { return ( <BasicLayout> + <Seo title='Tentang Indoteknik.com' /> + <div className='container mx-auto p-4 md:p-0 my-0 md:my-10'> <PageContent path='/about-us' /> </div> diff --git a/src/pages/activate.jsx b/src/pages/activate.jsx index cbd10ac2..7f4b6056 100644 --- a/src/pages/activate.jsx +++ b/src/pages/activate.jsx @@ -1,9 +1,11 @@ +import Seo from '@/core/components/Seo' import SimpleFooter from '@/core/components/elements/Footer/SimpleFooter' import ActivateComponent from '@/lib/auth/components/Activate' export default function Activate() { return ( <> + <Seo title='Aktivasi Akun Indoteknik.com' /> <ActivateComponent /> <SimpleFooter /> </> diff --git a/src/pages/blog/[slug].jsx b/src/pages/blog/[slug].jsx index b85a83d2..257f9385 100644 --- a/src/pages/blog/[slug].jsx +++ b/src/pages/blog/[slug].jsx @@ -1,3 +1,4 @@ +import Seo from '@/core/components/Seo' import Link from '@/core/components/elements/Link/Link' import Spinner from '@/core/components/elements/Spinner/Spinner' import BasicLayout from '@/core/components/layouts/BasicLayout' @@ -36,6 +37,8 @@ export default function BlogDetail() { return ( <BasicLayout> + <Seo title={`${blog.data?.title} - Indoteknik.com`} /> + {blog.isLoading && ( <div className='flex justify-center my-6'> <Spinner className='w-6 text-gray_r-12/50 fill-gray_r-12' /> diff --git a/src/pages/blog/index.jsx b/src/pages/blog/index.jsx index 1ce5a482..c65fe07d 100644 --- a/src/pages/blog/index.jsx +++ b/src/pages/blog/index.jsx @@ -6,6 +6,7 @@ import useBlogs from '@/lib/blog/hooks/useBlogs' import { useRouter } from 'next/router' import Pagination from '@/core/components/elements/Pagination/Pagination' import Spinner from '@/core/components/elements/Spinner/Spinner' +import Seo from '@/core/components/Seo' export default function Blogs() { const router = useRouter() @@ -18,6 +19,8 @@ export default function Blogs() { return ( <BasicLayout> + <Seo title='Blogs Indoteknik.com' /> + {blogs.isLoading && ( <div className='flex justify-center my-6'> <Spinner className='w-6 text-gray_r-12/50 fill-gray_r-12' /> diff --git a/src/pages/contact-us.jsx b/src/pages/contact-us.jsx index 71f816db..adbf9439 100644 --- a/src/pages/contact-us.jsx +++ b/src/pages/contact-us.jsx @@ -1,9 +1,11 @@ +import Seo from '@/core/components/Seo' import BasicLayout from '@/core/components/layouts/BasicLayout' import PageContent from '@/lib/content/components/PageContent' export default function ContactUs() { return ( <BasicLayout> + <Seo title='Hubungi Indoteknik.com' /> <PageContent path='/contact-us' /> </BasicLayout> ) diff --git a/src/pages/faqs.jsx b/src/pages/faqs.jsx index ec7a4b47..e8ffb4e3 100644 --- a/src/pages/faqs.jsx +++ b/src/pages/faqs.jsx @@ -1,9 +1,11 @@ +import Seo from '@/core/components/Seo' import BasicLayout from '@/core/components/layouts/BasicLayout' import PageContent from '@/lib/content/components/PageContent' export default function ContactUs() { return ( <BasicLayout> + <Seo title='FAQS Indoteknik.com' /> <PageContent path='/faqs' /> </BasicLayout> ) diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 99f94ee1..1102cc1b 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -5,6 +5,7 @@ import MobileView from '@/core/components/views/MobileView' import DesktopView from '@/core/components/views/DesktopView' import { useRef } from 'react' import { NextSeo } from 'next-seo' +import Seo from '@/core/components/Seo' const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout')) @@ -35,18 +36,18 @@ export default function Home() { return ( <BasicLayout> - <NextSeo + <Seo title='Indoteknik.com: B2B Industrial Supply & Solution' description='Temukan pilihan produk B2B Industri & Alat Teknik untuk Perusahaan, UMKM & Pemerintah dengan lengkap, mudah dan transparan.' - canonical={process.env.NEXT_PUBLIC_SELF_HOST} additionalMetaTags={[ { - property: 'keywords', + name: 'keywords', content: 'indoteknik, indoteknik.com, toko teknik, toko perkakas, jual genset, jual fogging, jual krisbow, harga krisbow, harga alat safety, harga pompa air' } ]} /> + <DesktopView> <div className='container mx-auto'> <div className='flex h-[360px]' ref={wrapperRef} onLoad={handleOnLoad}> diff --git a/src/pages/login.jsx b/src/pages/login.jsx index bd7ec5c1..38174f84 100644 --- a/src/pages/login.jsx +++ b/src/pages/login.jsx @@ -1,3 +1,4 @@ +import Seo from '@/core/components/Seo' import SimpleFooter from '@/core/components/elements/Footer/SimpleFooter' import BasicLayout from '@/core/components/layouts/BasicLayout' import DesktopView from '@/core/components/views/DesktopView' @@ -7,6 +8,8 @@ import LoginComponent from '@/lib/auth/components/Login' export default function Login() { return ( <> + <Seo title='Login - Indoteknik.com' /> + <DesktopView> <BasicLayout> <LoginComponent /> diff --git a/src/pages/register.jsx b/src/pages/register.jsx index 7f5e9f2b..a2fbbf94 100644 --- a/src/pages/register.jsx +++ b/src/pages/register.jsx @@ -1,3 +1,4 @@ +import Seo from '@/core/components/Seo' import SimpleFooter from '@/core/components/elements/Footer/SimpleFooter' import BasicLayout from '@/core/components/layouts/BasicLayout' import DesktopView from '@/core/components/views/DesktopView' @@ -7,6 +8,8 @@ import RegisterComponent from '@/lib/auth/components/Register' export default function Register() { return ( <> + <Seo title='Register - Indoteknik.com' /> + <DesktopView> <BasicLayout> <RegisterComponent /> diff --git a/src/pages/shop/brands/[slug].jsx b/src/pages/shop/brands/[slug].jsx index 33f81fa2..9c5193ad 100644 --- a/src/pages/shop/brands/[slug].jsx +++ b/src/pages/shop/brands/[slug].jsx @@ -2,6 +2,7 @@ import dynamic from 'next/dynamic' import { getIdFromSlug, getNameFromSlug } from '@/core/utils/slug' import { useRouter } from 'next/router' import _ from 'lodash' +import Seo from '@/core/components/Seo' const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout')) const ProductSearch = dynamic(() => import('@/lib/product/components/ProductSearch')) @@ -10,8 +11,22 @@ const Brand = dynamic(() => import('@/lib/brand/components/Brand')) export default function BrandDetail() { const router = useRouter() const { slug = '' } = router.query + + const brandName = getNameFromSlug(slug) return ( <BasicLayout> + <Seo + title={`Distributor ${brandName} Indonesia Harga Official Indoteknik.com`} + description='B2B Marketplace MRO & Industri dengan Layanan Pembayaran Tempo, Faktur Pajak, Online Quotation, Garansi Resmi & Harga Kompetitif' + additionalMetaTags={[ + { + property: 'keywords', + content: + `Jual ${brandName}, beli ${brandName}, Distributor ${brandName} Indonesia, cari ${brandName}, produk ${brandName}, ${brandName} Indonesia, harga ${brandName}` + } + ]} + /> + <Brand id={getIdFromSlug(slug)} /> {!_.isEmpty(router.query) && ( <ProductSearch diff --git a/src/pages/shop/brands/index.jsx b/src/pages/shop/brands/index.jsx index 77fde173..8159c965 100644 --- a/src/pages/shop/brands/index.jsx +++ b/src/pages/shop/brands/index.jsx @@ -1,3 +1,4 @@ +import Seo from '@/core/components/Seo' import BasicLayout from '@/core/components/layouts/BasicLayout' import DesktopView from '@/core/components/views/DesktopView' import MobileView from '@/core/components/views/MobileView' @@ -6,6 +7,8 @@ import BrandsComponent from '@/lib/brand/components/Brands' export default function Brands() { return ( <BasicLayout> + <Seo title='Brands Indoteknik.com' /> + <MobileView> <BrandsComponent /> </MobileView> diff --git a/src/pages/shop/cart.jsx b/src/pages/shop/cart.jsx index 9566cfcb..e574f14d 100644 --- a/src/pages/shop/cart.jsx +++ b/src/pages/shop/cart.jsx @@ -1,3 +1,4 @@ +import Seo from '@/core/components/Seo' import BasicLayout from '@/core/components/layouts/BasicLayout' import DesktopView from '@/core/components/views/DesktopView' import MobileView from '@/core/components/views/MobileView' @@ -9,6 +10,8 @@ const CartComponent = dynamic(() => import('@/lib/cart/components/Cart')) export default function Cart() { return ( <> + <Seo title='Keranjang Belanja Indoteknik.com' /> + <MobileView> <AppLayout title='Keranjang' withFooter={false}> <CartComponent /> diff --git a/src/pages/shop/checkout/[status].jsx b/src/pages/shop/checkout/[status].jsx index bf184c0e..7c39718c 100644 --- a/src/pages/shop/checkout/[status].jsx +++ b/src/pages/shop/checkout/[status].jsx @@ -3,6 +3,7 @@ import IsAuth from '@/lib/auth/components/IsAuth' import FinishCheckoutComponent from '@/lib/checkout/components/FinishCheckout' import { useRouter } from 'next/router' import axios from 'axios' +import Seo from '@/core/components/Seo' export async function getServerSideProps(context) { const { order_id } = context.query @@ -18,10 +19,14 @@ export default function Finish() { const router = useRouter() return ( - <IsAuth> - <BasicLayout> - <FinishCheckoutComponent query={router.query || {}} /> - </BasicLayout> - </IsAuth> + <> + <Seo title='Checkout Indoteknik.com' /> + + <IsAuth> + <BasicLayout> + <FinishCheckoutComponent query={router.query || {}} /> + </BasicLayout> + </IsAuth> + </> ) } diff --git a/src/pages/shop/checkout/index.jsx b/src/pages/shop/checkout/index.jsx index 30d2c730..13fc7056 100644 --- a/src/pages/shop/checkout/index.jsx +++ b/src/pages/shop/checkout/index.jsx @@ -1,3 +1,4 @@ +import Seo from '@/core/components/Seo' import AppLayout from '@/core/components/layouts/AppLayout' import BasicLayout from '@/core/components/layouts/BasicLayout' import DesktopView from '@/core/components/views/DesktopView' @@ -7,18 +8,22 @@ import CheckoutComponent from '@/lib/checkout/components/Checkout' export default function Checkout() { return ( - <IsAuth> - <MobileView> - <AppLayout title='Checkout'> - <CheckoutComponent /> - </AppLayout> - </MobileView> + <> + <Seo title='Checkout Indoteknik.com' /> - <DesktopView> - <BasicLayout> - <CheckoutComponent /> - </BasicLayout> - </DesktopView> - </IsAuth> + <IsAuth> + <MobileView> + <AppLayout title='Checkout'> + <CheckoutComponent /> + </AppLayout> + </MobileView> + + <DesktopView> + <BasicLayout> + <CheckoutComponent /> + </BasicLayout> + </DesktopView> + </IsAuth> + </> ) } diff --git a/src/pages/shop/product/[slug].jsx b/src/pages/shop/product/[slug].jsx index e8084cbe..84b848f0 100644 --- a/src/pages/shop/product/[slug].jsx +++ b/src/pages/shop/product/[slug].jsx @@ -2,6 +2,7 @@ import Seo from '@/core/components/Seo' import { getIdFromSlug } from '@/core/utils/slug' import productApi from '@/lib/product/api/productApi' import dynamic from 'next/dynamic' +import { useRouter } from 'next/router' const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout')) const Product = dynamic(() => import('@/lib/product/components/Product/Product')) @@ -23,9 +24,24 @@ export async function getServerSideProps(context) { } export default function ProductDetail({ product }) { + const router = useRouter() return ( <BasicLayout> - <Seo title={product?.name} /> + <Seo + title={product?.name + ' - Indoteknik.com' || ''} + description='Temukan pilihan produk B2B Industri & Alat Teknik untuk Perusahaan, UMKM & Pemerintah dengan lengkap, mudah dan transparan.' + openGraph={{ + url: process.env.NEXT_PUBLIC_SELF_HOST + router.asPath, + image: product.image, + type: 'product' + }} + additionalMetaTags={[ + { + name: 'keywords', + content: `${product.name}, Harga ${product.name}, Beli ${product.name}, Spesifikasi ${product.name}` + } + ]} + /> <Product product={product} /> </BasicLayout> ) diff --git a/src/pages/shop/quotation/finish.jsx b/src/pages/shop/quotation/finish.jsx index 32638b62..52e03cf6 100644 --- a/src/pages/shop/quotation/finish.jsx +++ b/src/pages/shop/quotation/finish.jsx @@ -1,3 +1,4 @@ +import Seo from '@/core/components/Seo' import Link from '@/core/components/elements/Link/Link' import BasicLayout from '@/core/components/layouts/BasicLayout' import useAuth from '@/core/hooks/useAuth' @@ -10,6 +11,9 @@ export default function FinishQuotation() { const router = useRouter() const { id } = router.query return ( + <> + <Seo title='Quotation Indoteknik.com' /> + <IsAuth> <BasicLayout> <div className='mx-auto container'> @@ -39,5 +43,6 @@ export default function FinishQuotation() { </div> </BasicLayout> </IsAuth> + </> ) } diff --git a/src/pages/shop/quotation/index.jsx b/src/pages/shop/quotation/index.jsx index efb35db9..bd086b72 100644 --- a/src/pages/shop/quotation/index.jsx +++ b/src/pages/shop/quotation/index.jsx @@ -1,3 +1,4 @@ +import Seo from '@/core/components/Seo' import AppLayout from '@/core/components/layouts/AppLayout' import BasicLayout from '@/core/components/layouts/BasicLayout' import DesktopView from '@/core/components/views/DesktopView' @@ -7,18 +8,22 @@ import QuotationComponent from '@/lib/quotation/components/Quotation' export default function Quotation() { return ( - <IsAuth> - <MobileView> - <AppLayout title='Quotation'> - <QuotationComponent /> - </AppLayout> - </MobileView> + <> + <Seo title='Quotation Indoteknik.com' /> - <DesktopView> - <BasicLayout> - <QuotationComponent /> - </BasicLayout> - </DesktopView> - </IsAuth> + <IsAuth> + <MobileView> + <AppLayout title='Quotation'> + <QuotationComponent /> + </AppLayout> + </MobileView> + + <DesktopView> + <BasicLayout> + <QuotationComponent /> + </BasicLayout> + </DesktopView> + </IsAuth> + </> ) } diff --git a/src/pages/shop/search.jsx b/src/pages/shop/search.jsx index 345b715a..d21d72cd 100644 --- a/src/pages/shop/search.jsx +++ b/src/pages/shop/search.jsx @@ -1,6 +1,7 @@ import dynamic from 'next/dynamic' import { useRouter } from 'next/router' import _ from 'lodash-contrib' +import Seo from '@/core/components/Seo' const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout')) const ProductSearch = dynamic(() => import('@/lib/product/components/ProductSearch')) @@ -10,6 +11,8 @@ export default function Search() { return ( <BasicLayout> + <Seo title={`Cari produk ${router.query.q} di Indoteknik.com`} /> + {!_.isEmpty(router.query) && ( <ProductSearch query={router.query} diff --git a/src/pages/video.jsx b/src/pages/video.jsx index bfd4a126..7a2a5ecc 100644 --- a/src/pages/video.jsx +++ b/src/pages/video.jsx @@ -1,3 +1,4 @@ +import Seo from '@/core/components/Seo' import Pagination from '@/core/components/elements/Pagination/Pagination' import Spinner from '@/core/components/elements/Spinner/Spinner' import BasicLayout from '@/core/components/layouts/BasicLayout' @@ -16,6 +17,8 @@ export default function Video() { return ( <BasicLayout> + <Seo title='Kanal Video Indoteknik.com' /> + {video.isLoading && ( <div className='flex justify-center my-6'> <Spinner className='w-6 text-gray_r-12/50 fill-gray_r-12' /> |
