--- import { getImage } from 'astro:assets'; import { getCollection, type CollectionEntry } from 'astro:content'; import CarCard from '../../components/CarCard.astro'; import CarGallery from '../../components/CarGallery.astro'; import ContactButtons from '../../components/ContactButtons.astro'; import Footer from '../../components/Footer.astro'; import Header from '../../components/Header.astro'; import JsonLd from '../../components/JsonLd.astro'; import SpecStrip from '../../components/SpecStrip.astro'; import { lt } from '../../i18n/lt'; import { EMAIL, PHONE_DISPLAY } from '../../lib/contact'; import { excerpt, formatEngineSize, formatMileage, formatPower, formatPrice } from '../../lib/format'; import { vehicleJsonLd } from '../../lib/jsonLd'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { site } from '../../site'; export async function getStaticPaths() { const cars = await getCollection('cars'); return cars.map((car) => ({ params: { slug: car.slug }, props: { car } })); } const { car } = Astro.props as { car: CollectionEntry<'cars'> }; const allCars = await getCollection('cars'); const similarCars = allCars.filter((item) => item.id !== car.id && !item.data.sold).slice(0, 3); const { Content } = await car.render(); const carName = `${car.data.make} ${car.data.model}`; const title = `${car.data.year} ${car.data.make} ${car.data.model} — ${formatPrice(car.data.price)} — Juozas Auto`; const ogTitle = `${car.data.year} ${car.data.make} ${car.data.model} — ${formatPrice(car.data.price)}`; const description = excerpt(car.body); const canonicalPath = `/automobiliai/${car.slug}`; const canonicalUrl = new URL(canonicalPath, site.url).toString(); const ogImage = await getImage({ src: car.data.photos[0], width: 1200, height: 630, format: 'jpg' }); const ogImageUrl = new URL(ogImage.src, site.url).toString(); const specs = [ [lt.labels.year, String(car.data.year)], [lt.labels.mileage, formatMileage(car.data.mileage)], [lt.labels.fuel, car.data.fuel], [lt.labels.gearbox, car.data.transmission], [lt.labels.bodyType, car.data.bodyType], [lt.labels.color, car.data.color], car.data.drivetrain ? [lt.labels.drivetrain, car.data.drivetrain] : null, car.data.power ? [lt.labels.power, formatPower(car.data.power)] : null, car.data.engineSize ? [lt.labels.engineSize, formatEngineSize(car.data.engineSize)] : null, car.data.firstRegistration ? [lt.labels.firstRegistration, car.data.firstRegistration] : null, car.data.vin ? [lt.labels.vin, car.data.vin] : null, ].filter(Boolean) as [string, string][]; const jsonLd = vehicleJsonLd({ car: car.data, canonicalUrl, imageUrl: ogImageUrl }); ---

{lt.sections.description}

{lt.sections.specs}

{specs.map(([label, value]) => (
{label}
{value}
))}

{lt.sections.location}

{car.data.city}

Apžiūra derinama telefonu. Tikslus adresas pateikiamas susitarus dėl laiko.

{similarCars.length > 0 && (

{lt.sections.similar}

{similarCars.map((item) => )}
)}