feat: add canonical URL handling and entity quality checks
- Implemented canonical URL strategies for city-specific domains and entities. - Added helper functions for domain and city resolution. - Created tests for canonical URL generation and domain resolution. - Introduced entity quality checks for doctors and clinics to ensure meaningful content. - Developed unique introductory texts for listing pages to avoid duplicate content. - Established robots.txt policies for listing pages to manage indexing based on user filters. - Enhanced specialty content with dynamic introductions and FAQs to improve SEO.
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
import TextLoading from "@/app/component/loading/Text";
|
||||
import React from "react";
|
||||
|
||||
function ContentDetail({ head, children }) {
|
||||
// عنوان بخشها h2 است؛ فقط نام خود کلینیک h1 میگیرد (as="h1"). کلاسها یکسان — بدون تغییر بصری.
|
||||
function ContentDetail({ head, children, as: Heading = "h2" }) {
|
||||
return (
|
||||
<div className="my-[24px]">
|
||||
<TextLoading width={200} height={20}>
|
||||
<h1 className="text-[#3B3B3B] text-[20px] font-bold">{head}</h1>
|
||||
<Heading className="text-[#3B3B3B] text-[20px] font-bold">{head}</Heading>
|
||||
</TextLoading>
|
||||
<div className="mt-[16px]">{children}</div>
|
||||
</div>
|
||||
|
||||
@@ -9,7 +9,7 @@ function About({ data }) {
|
||||
return (
|
||||
<div className="opacity-page transition-all duration-500">
|
||||
<Images data={data} />
|
||||
<ContentDetail head={data.title}>
|
||||
<ContentDetail head={data.title} as="h1">
|
||||
<TextDetail data={data} />
|
||||
</ContentDetail>
|
||||
<ContentDetail head="بیمه های طرف قرارداد">
|
||||
|
||||
@@ -6,10 +6,11 @@ import About from "./components/about";
|
||||
import Contact from "./components/contact";
|
||||
import Doctors from "./components/doctors";
|
||||
import Tabs from "@/app/component/Tabs";
|
||||
import Pageguide from "@/app/component/Pageguide";
|
||||
|
||||
const listTab = ["درباره کلینیک", "اطلاعات تماس", "پزشک ها"];
|
||||
|
||||
function ClinicPage({ data, doctors,slug ,pages}) {
|
||||
function ClinicPage({ data, doctors, slug, pages, origin }) {
|
||||
const [value, setValue] = useState(0);
|
||||
const handleChange = (_, newValue) => setValue(newValue);
|
||||
|
||||
@@ -22,6 +23,16 @@ function ClinicPage({ data, doctors,slug ,pages}) {
|
||||
|
||||
return (
|
||||
<div className="pt-[40px] sm:pt-[70px] md:pt-[100px] lg:pt-[136px] mt-[40px] padding-responsive">
|
||||
<div className="mb-[20px]">
|
||||
<Pageguide
|
||||
origin={origin}
|
||||
list={[
|
||||
{ name: "خانه", href: "/" },
|
||||
{ name: "کلینیک ها", href: "/clinics" },
|
||||
{ name: data?.title },
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<Tabs
|
||||
style={{
|
||||
".MuiTabs-indicator": {
|
||||
|
||||
Reference in New Issue
Block a user