Language GR
EN RU

Ακίνητα προς πώληση Λάρνακα

Τα έτοιμα προς κατοίκηση ακίνητα στη Λάρνακα ξεδιπλώνονται σαν μια ψιθυριστή υπόσχεση αβίαστης κομψότητας, όπου η αρχιτεκτονική δεξιοτεχνία συναντά την αμεσότητα της απόλαυσης. Οι λουσμένοι από τον ήλιο εσωτερικοί χώροι, πλαισιωμένοι από μοναδική χειροτεχνία, αποπνέουν αύρα διακριτικής πολυτέλειας, με κάθε χώρο να αποτελεί καμβά εκλέπτυνσης. Η συμφωνία του μαρμάρου κάτω από τα πόδια, του γυαλιού που χαϊδεύεται από το πρωινό φως και της θαλασσινής αύρας που απλώνει σιωπή, συνθέτει ένα ακίνητο ηρεμίας και κύρους. Φωλιασμένα στις πιο περιζήτητες γωνιές της Λάρνακας, αυτά τα διαμερίσματα και σπίτια δεν προσφέρουν απλώς στέγη, αλλά μια επιμελημένη εμπειρία ύπαρξης, όπου ο παλμός της πόλης και η γαλήνη της ακτής συνδυάζονται σε τέλεια αρμονία. 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) {} }); ...διαβάστε περισσότερα