Compare commits
3 Commits
481c753371
...
main
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2378febe6f | ||
![]() |
c79b818302 | ||
![]() |
a8509416ae |
28
index.html
28
index.html
@@ -5,16 +5,19 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<!-- Google Tag Manager -->
|
||||
<script>(function (w, d, s, l, i) {
|
||||
w[l] = w[l] || []; w[l].push({
|
||||
'gtm.start':
|
||||
new Date().getTime(), event: 'gtm.js'
|
||||
}); var f = d.getElementsByTagName(s)[0],
|
||||
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
|
||||
'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
|
||||
})(window, document, 'script', 'dataLayer', 'GTM-5QH68BVJ');</script>
|
||||
<!-- End Google Tag Manager -->
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-CDVVNFY6MV"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag() { dataLayer.push(arguments); }
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-CDVVNFY6MV');
|
||||
</script>
|
||||
|
||||
<!-- Google AdSense -->
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5219367964457248"
|
||||
crossorigin="anonymous"></script>
|
||||
|
||||
<!-- Primary Meta Tags -->
|
||||
<title>Full Stack Developer Freelance Vue.js React Node.js | Killian Dalcin</title>
|
||||
@@ -238,11 +241,6 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Google Tag Manager (noscript) -->
|
||||
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5QH68BVJ" height="0" width="0"
|
||||
style="display:none;visibility:hidden"></iframe></noscript>
|
||||
<!-- End Google Tag Manager (noscript) -->
|
||||
|
||||
<div id="app"></div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
|
||||
|
1
public/ads.txt
Normal file
1
public/ads.txt
Normal file
@@ -0,0 +1 @@
|
||||
google.com, pub-5219367964457248, DIRECT, f08c47fec0942fa0
|
@@ -1,30 +1,5 @@
|
||||
# Robots.txt pour killiandalcin.fr
|
||||
# Optimisé pour un crawling Google efficace
|
||||
|
||||
# Googlebot
|
||||
User-agent: Googlebot
|
||||
Allow: /
|
||||
Crawl-delay: 0
|
||||
|
||||
# Bingbot
|
||||
User-agent: Bingbot
|
||||
Allow: /
|
||||
Crawl-delay: 1
|
||||
|
||||
# Tous les bots légitimes
|
||||
User-agent: *
|
||||
Allow: /
|
||||
Disallow: /api/
|
||||
Disallow: /admin/
|
||||
Disallow: /*.json$
|
||||
Disallow: /api/
|
||||
Disallow: /*?*
|
||||
Allow: /*.css$
|
||||
Allow: /*.js$
|
||||
Allow: /*.webp$
|
||||
Allow: /*.jpg$
|
||||
Allow: /*.png$
|
||||
Allow: /*.svg$
|
||||
Allow: /*.woff2$
|
||||
|
||||
# Sitemap
|
||||
Sitemap: https://killiandalcin.fr/sitemap.xml
|
@@ -3,52 +3,40 @@
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
|
||||
|
||||
<!-- Home Page - Maximum Priority -->
|
||||
<!-- Home Page -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
<!-- Fiverr Services Page - High Priority (Business Focus) -->
|
||||
<!-- Fiverr Services Page -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/fiverr</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.9</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
<!-- Projects Portfolio Page -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/projects</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
<!-- Contact Page -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/contact</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
<!-- About Page -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/about</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
<!-- Formation/Training Page -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/formation</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
<!-- Dynamic Project Detail Pages -->
|
||||
@@ -56,57 +44,43 @@
|
||||
<!-- Virtual Tour Project -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/project/virtual-tour</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.6</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
<!-- Xinko Discord Bot Project (Featured) -->
|
||||
<!-- Xinko Discord Bot Project -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/project/xinko</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
<!-- Image Manipulation NPM Package (Featured) -->
|
||||
<!-- Image Manipulation NPM Package -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/project/image-manipulation</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
<!-- Flowboard Project Management App (Featured) -->
|
||||
<!-- Flowboard Project Management App -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/project/flowboard</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
<!-- Primate Web Admin Project -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/project/primate-web-admin</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.6</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
<!-- Instagram Bot Project -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/project/instagram-bot</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.6</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
<!-- Crowdin Status Bot Project -->
|
||||
<url>
|
||||
<loc>https://killiandalcin.fr/project/crowdin-status-bot</loc>
|
||||
<lastmod>2025-01-14</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.6</priority>
|
||||
<lastmod>2025-07-07</lastmod>
|
||||
</url>
|
||||
|
||||
</urlset>
|
@@ -14,7 +14,7 @@ const navigation = computed(() => [
|
||||
{ name: t('nav.projects'), path: '/projects' },
|
||||
{ name: t('nav.about'), path: '/about' },
|
||||
{ name: t('nav.contact'), path: '/contact' },
|
||||
{ name: t('nav.formation'), path: '/formation' },
|
||||
// { name: t('nav.formation'), path: '/formation' },
|
||||
{ name: t('nav.fiverr'), path: '/fiverr' },
|
||||
])
|
||||
|
||||
|
@@ -1,7 +1,15 @@
|
||||
import { createRouter, createWebHistory } from 'vue-router'
|
||||
import { createRouter, createWebHistory, type RouteLocationNormalized } from 'vue-router'
|
||||
import { nextTick } from 'vue'
|
||||
import HomePage from '../views/HomePage.vue'
|
||||
|
||||
// Google Analytics gtag types
|
||||
declare global {
|
||||
interface Window {
|
||||
dataLayer: unknown[]
|
||||
gtag: (...args: unknown[]) => void
|
||||
}
|
||||
}
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHistory(import.meta.env.BASE_URL),
|
||||
routes: [
|
||||
@@ -94,9 +102,20 @@ router.beforeEach((to, from, next) => {
|
||||
next()
|
||||
})
|
||||
|
||||
// Additional scroll to top handler for better compatibility
|
||||
router.afterEach(() => {
|
||||
// Use nextTick to ensure the DOM is fully updated
|
||||
// Google Analytics page view tracking function
|
||||
const trackPageView = (route: RouteLocationNormalized) => {
|
||||
// Track page view with gtag
|
||||
if (window.gtag) {
|
||||
window.gtag('config', 'G-CDVVNFY6MV', {
|
||||
page_path: route.path,
|
||||
page_title: document.title,
|
||||
page_location: window.location.href
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Track page views on route changes
|
||||
router.afterEach((to) => {
|
||||
nextTick(() => {
|
||||
// Smooth scroll to top
|
||||
window.scrollTo({
|
||||
@@ -104,7 +123,16 @@ router.afterEach(() => {
|
||||
left: 0,
|
||||
behavior: 'smooth'
|
||||
})
|
||||
|
||||
// Track page view for GTM
|
||||
trackPageView(to)
|
||||
})
|
||||
})
|
||||
|
||||
// Track initial page load
|
||||
router.isReady().then(() => {
|
||||
// Track the initial route after router is ready
|
||||
trackPageView(router.currentRoute.value)
|
||||
})
|
||||
|
||||
export default router
|
||||
|
Reference in New Issue
Block a user