# Centre Individual Page — Drupal Mapping

**Page route:** `/eye-hospital-in-<city>/<centre-slug>` — driven by `node--centre` content type with full view mode.

## Content type & taxonomy

### `node--centre` (existing — already drives `centre-cluster.html`)

Recommended fields for the individual view:

| Field | Type | Required | Notes |
|---|---|---|---|
| `name` (node title) | string | yes | "Sector 29, Gurugram" |
| `field_centre_photo` | image | yes | Cropped to ~663×563, top-anchored object-cover |
| `field_full_address` | text (long) | yes | "SCO Complex – 317, Sector – 29, Gurgaon, Haryana - 122009" |
| `field_phone_primary` | telephone | yes | "011 42504250" |
| `field_email` | email | yes | "infogurgaon@centreforsight.net" |
| `field_hours_text` | text | yes | "Available 7 days a week, from 9:00 am to 8:00 pm" |
| `field_about_intro` | text (long, formatted) | yes | First About paragraph |
| `field_about_specialities_intro` | text (long, formatted) | yes | Second About paragraph |
| `field_offered_specialities` | term reference (multivalue, `taxonomy_term--speciality`) | yes | Drives the Specialities tab strip |
| `field_practising_doctors` | node reference (multivalue, `node--doctor`) | yes | Drives the Eye Care Specialists row |
| `field_state` | term reference (`taxonomy_term--state`) | yes | Drives the More Centers In {state} row |
| `field_city` | term reference (`taxonomy_term--city`) | yes | Drives breadcrumb's middle crumb |
| `field_map_embed_url` | URL (long text) | yes | Full Google Maps iframe `src` |
| `field_faq_items` | paragraph reference (multivalue, `paragraph--faq_item`) | yes | Drives FAQ accordion |
| `field_slug` | string (or pathauto-derived) | yes | URL alias |

### `paragraph--faq_item` (new bundle)

| Field | Type | Notes |
|---|---|---|
| `field_question` | text | Summary text |
| `field_answer` | text (long, formatted) | Body text |

### `taxonomy_term--speciality` (existing)

For the speciality tab panels:

| Field | Type | Notes |
|---|---|---|
| `name` | string | Tab chip label, e.g. "LASIK Eye Surgery" |
| `field_speciality_panel_image` | image | Doctor/treatment photo for the panel |
| `field_speciality_description` | text (long, formatted) | Panel paragraph |

## Twig templates introduced

| Template | Replaces partial | Renders |
|---|---|---|
| `node--centre--full.html.twig` | `02-hero-banner.html` (and orchestrates the rest) | Whole-page render |
| `views-view-row--centre-specialities.html.twig` | `05-speciality-panel.html` | One chip + one panel per term in `field_offered_specialities` |
| `views-view-row--centre-doctors.html.twig` | (uses existing doctor-card row template) | One doctor card per `field_practising_doctors` reference |
| `views-view-row--centres-by-region.html.twig` | (uses existing centre-card row template) | One centre card per sibling `node--centre` in same state |
| `paragraph--faq_item.html.twig` | One `<details>` block in `10-faq.html` | One accordion item per `field_faq_items` |
| `webform--centre-callback.html.twig` | Hero callback form in `02-hero-banner.html` | Hero +91 + phone + Request a Callback CTA |

The breadcrumb (`01-breadcrumb.html`) uses Drupal's `easy_breadcrumb` block. The bottom callback form (`11-callback-form.html`) reuses the existing `webform--homepage-callback.html.twig` from prior pages.

## Field-by-section mapping

### Section 4 — Hero banner

| HTML element | Field |
|---|---|
| `<h1>` heading | `node.title` |
| Address line | `node.field_full_address` |
| Phone line + `tel:` | `node.field_phone_primary` |
| Right card `<img src>` | `node.field_centre_photo` rendered with image style `centre_hero` |
| Hero callback form | Webform `centre-callback` — fields `phone`. Hidden `centre_id`= `node.id()` |

### Section 5 — About

| HTML element | Field |
|---|---|
| `<h2>` "About {centre_name}" | Static "About " + `node.title` |
| 1st `<p>` | `node.field_about_intro` |
| 2nd `<p>` | `node.field_about_specialities_intro` |

### Section 6 — Specialities tabs + panels

Views block `view-centre-specialities`:
- Filter: current node's `field_offered_specialities` reference
- Row template renders both the chip and the panel (paired via `data-speciality` attribute matching the term slug)
- First row gets `data-active="true"` on chip + visible panel; rest get `data-active="false"` + `hidden`
- Per row: term `name` → chip label, term `field_speciality_panel_image` → panel image, term `field_speciality_description` → panel text

### Section 7 — Map

Single field render: `node.field_map_embed_url` injected as the `src` of the `<iframe>`.

### Section 8 — Address strip

Same fields as hero — re-rendered with icon decoration. `node.field_email` adds the email line in the middle card; `node.field_hours_text` populates the right card.

### Section 9 — Eye Care Specialists

Views block `view-centre-doctors`:
- Filter: current node's `field_practising_doctors` reference
- Row template: existing `views-view-row--doctor-card.html.twig` (already used on `eye-specialists.html`, `index.html`, `cataract.html`)
- Pagination: 4 rows visible by default, "Load More" reveals next 4 (Drupal Views pager via AJAX)

### Section 10 — More Centers

Views block `view-centres-by-region`:
- Filter: same `field_state` as current node, exclude self
- Row template: existing `views-view-row--centre-card.html.twig` (already used on `centre-cluster.html`)
- Limit: 5 (or however many fit naturally in 3+2 grid)

### Section 11 — FAQ

Render `node.field_faq_items` directly as a paragraph reference list. Each `paragraph--faq_item.html.twig` outputs one `<details>` block.

### Section 12 — Callback form

Webform `homepage-callback` (existing — same as on blogs, specialities, doctor-individual, etc.).

## URL alias pattern

`/eye-hospital-in-[node:field_city:slug]/[node:field_slug]` — generated by Pathauto.

The breadcrumb's middle crumb links to `/eye-hospital-in-[city]` (the city/cluster page). Confirm this is the desired parent URL.

## Existing pages that link to centre individual

- `centre-cluster.html` — every centre card's "Book an Appointment" link should point to `/eye-hospital-in-<city>/<centre-slug>` (or `/eye-hospital-in-<city>/<centre-slug>#hero-callback` to scroll to the embedded form).
- `index.html` — homepage centre cards (in the "Locate a Centre" section, if rendered).
- Doctor profile pages (`/doctor/<slug>`) — the practising-centres list could link out to centre individual pages.
