EN
GR RU

Properties for Sale in Cyprus - Page 15

Explore these stunning seaside properties in Cyprus, offering the ultimate coastal lifestyle. Whether you’re looking for a modern apartment with breathtaking sea views or a spacious villa just steps from the beach, Cyprus has something to suit every preference. Each property combines exceptional design, prime locations, and easy access to local amenities, ensuring you can enjoy both comfort and convenience. Make your coastal dream home a reality today by securing one of these unique properties. Home › Properties for Sale in Cyprus › Page 15 document.addEventListener("DOMContentLoaded", function () { try { const pageUrl = location.href.split('#')[0]; const base = location.origin; const pageTitle = document.title || ""; const pageDesc = (document.querySelector('meta[name="description"]')?.content || "").trim(); // Πάρε τις κάρτες (νέο DOM) ή fallback (παλιό DOM) let cards = document.querySelectorAll(".result-card"); if (!cards || cards.length === 0) cards = document.querySelectorAll(".re_prop .col-xs-4"); const seen = new Set(); const itemList = []; cards.forEach((card, index) => { // ---- URL (ανθεκτικό: αγνοεί anchors, #myToggle, javascript:) let href = null; const links = Array.from(card.querySelectorAll('a[href]')); // δώσε προτεραιότητα σε a.hcaption, μετά σε h2>a, μετά στα υπόλοιπα links.sort((a, b) => { const aw = a.matches('a.hcaption') ? 0 : a.closest('h2') ? 1 : 2; const bw = b.matches('a.hcaption') ? 0 : b.closest('h2') ? 1 : 2; return aw - bw; }); for (const a of links) { const h = (a.getAttribute('href') || '').trim(); if (!h) continue; if (h[0] === '#') continue; // αγνόησε anchors (#myToggle κ.λπ.) if (/^javascript:/i.test(h)) continue; // αγνόησε javascript: if (/#myToggle/i.test(h)) continue; // αγνόησε ρητά #myToggle href = new URL(h, base).href; // absolute URL break; } // ---- τίτλος const h2 = card.querySelector("h2.prop-title, h2.prop-title-fixer, h2"); const name = (h2?.textContent || "").trim(); // ---- εικόνα const imgEl = card.querySelector("img"); let image = imgEl ? (imgEl.getAttribute("data-src") || imgEl.getAttribute("data-lazy") || imgEl.getAttribute("src")) : null; if (image) image = new URL(image, base).href; // ---- τιμή ως κείμενο (προαιρετικό) const priceText = (card.querySelector("p.prop-title-fixer")?.textContent || "") .replace(/\s+/g," ").trim(); if (href && name && !seen.has(href)) { seen.add(href); const li = { "@type": "ListItem", "position": index + 1, "url": href, "name": name }; if (image) li.image = image; if (priceText) li.description = priceText; itemList.push(li); } }); // JSON-LD (CollectionPage + ItemList) const graph = [ { "@type":"CollectionPage", "@id": pageUrl + "#webpage", "url": pageUrl, "name": pageTitle, "description": pageDesc }, { "@type":"ItemList", "@id": pageUrl + "#itemlist", "url": pageUrl, "name": pageTitle, "description": pageDesc, "numberOfItems": itemList.length, "itemListElement": itemList } ]; const s = document.createElement("script"); s.type = "application/ld+json"; s.text = JSON.stringify({ "@context":"https://schema.org", "@graph": graph }); document.head.appendChild(s); } catch(e) {} }); (function() { try { const currentUrl = window.location.href.split('#')[0]; const baseUrl = window.location.origin; const pageTitle = document.title; // Διορθωμένο: Αφαιρεί τον αριθμό στο τέλος του URL (π.χ. /2 ή /3) const categoryUrl = currentUrl.replace(/\/(\d+)$/, ''); const breadcrumbData = { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Home", "item": baseUrl }, { "@type": "ListItem", "position": 2, "name": "Properties for Sale in Cyprus", "item": categoryUrl } ] }; // Διορθωμένο: Ελέγχει αν το URL τελειώνει σε /αριθμό if (/\/(\d+)$/.test(currentUrl)) { breadcrumbData.itemListElement.push({ "@type": "ListItem", "position": 3, "name": pageTitle, "item": currentUrl }); } const script = document.createElement('script'); script.type = 'application/ld+json'; script.text = JSON.stringify(breadcrumbData); document.head.appendChild(script); } catch (e) {} })(); ...read more