Kom i gang
Projektstruktur og en hurtig guide
Sådan er et cmsspot-site bedst sat sammen, hvad indholdstyperne er, hvordan du klarer en kontaktformular og mail, og hvor du finder SFTP-adgang hos de mest brugte webhoteller. Simply.com og one.com først.
Hurtig start i fem trin
- Opret en konto. Tilmeld dig med din mail. Du logger ind med et link, der er intet kodeord.
- Find din SFTP-adgang. Host, bruger, port og enten en nøgle eller et kodeord. Listen over webhoteller nederst på siden fortæller hvor du skal kigge.
- Forbind sitet. Onboardingen tager dig igennem det: tilføj serveren, og peg cmsspot på den mappe der indeholder hjemmesiden, ikke hele serveren. Forbindelsen testes før den gemmes.
- Sæt mapper op som faner. Sider og Artikler peger på deres mapper, og du tilføjer en fane til enhver anden mappe. Læg
index.phppå Sider som en ekstra fil, så forsiden ligger sammen med de andre. - Åbn en side og invitér kunden. Ret et felt, gem, og tjek den rigtige side. Invitér derefter kunden under Team members. Kunden får et login-link til netop det site.
Fem minutter for et site der allerede findes. Er sitet nyt, så byg det med strukturen herunder først.
Den anbefalede projektstruktur
/ hjemmesidens rod (peg cmsspot her)
index.php forsiden (lagt på Sider som ekstra fil)
sider/ én fil pr. side: om.php, ydelser.php, kontakt.php
artikler/ én fil pr. artikel, samme form som en side
team/ din egen indholdstype: én fil pr. person (bliver en fane)
cases/ en til: én fil pr. case (bliver en fane)
include/
header.php doctype til og med åbningen af <main>, plus menuen
footer.php lukningen af <main> til og med </html>
config.php mailindstillinger og alt hemmeligt (udelukket i cmsspot)
css/
style.css ét stylesheet
uploads/ billeder ejeren tilføjer (cmsspot uploader hertil)
img/ billeder der hører til designet
.htaccess pæne adresser og caching
robots.txt
sitemap.xml cmsspot kan bygge den igen
Intet af det er et krav. cmsspot læser enhver mappestruktur og lader dig koble mapper til faner under Settings. Men den her struktur giver den reneste redigering: hver fil i en mappe er ét element, fælles dele er includes, og hemmeligheder ligger i én fil du udelukker.
Indholdstyper: sider, artikler og dine egne
Sider
Én fil pr. side i sider/. Hver fil sætter $page_title og $page_desc øverst, inkluderer headeren, skriver sit indhold i <main> med en rigtig h1, h2-afsnit og p-afsnit, og inkluderer footeren. Nye sider oprettes fra mappens egen skabelon i cmsspot.
Artikler
Samme form som en side, i artikler/. Fanen Artikler viser dem, og kunden opretter nye på samme måde. Tilføj en datovariabel og Article-schema på siden hvis du vil have de strukturerede data.
Dine egne indholdstyper
Alt der er en liste af ens ting med en side hver: medarbejdere, cases, produkter, afdelinger, kurser. Lav en mappe, læg én fil pr. element i den med samme opmærkning, og tilføj mappen som fane under Settings → Folders. Kunden ser "Team" ved siden af "Sider" og retter hver person som en side. Det er cmsspots udgave af custom post types: en mappe er en type, en fil er et element.
Er elementerne små og hører hjemme på én side (tre ydelser, fem priser), så lav ikke en mappe. Skriv dem som en gentaget blok på siden med ens opmærkning, og kunden kan gøre den til en gruppe i cmsspot: tilføj, flyt rundt, fjern.
Kategorier
cmsspot har ingen kategorier eller tags. Det redigerer filer, og en fil bærer ikke en taksonomi. Skal artikler grupperes, er den enkle vej en mappe pr. gruppe, hver som sin egen fane, med en oversigtsside til hver der linker til artiklerne. Til en håndfuld artikler er en liste på én side nok. Har du brug for rigtige kategorier med arkivsider og filtrering, er det et tegn på at sitet vil have en blogmotor (på engelsk) frem for filer.
Forsiden
index.php ligger som regel i roden, ikke i sider/. Læg den på fanen Sider som en ekstra fil under Settings → Folders, så står den i listen sammen med de andre.
Kontaktformular, mail og SMTP
Et kontaktformular-plugin er på vej til cmsspot. Indtil da bygger du formularen på siden som almindelig PHP. Det er en kort fil, og den er din. Tre regler holder den sikker: validér på serveren, tilføj et honeypot-felt mod bots, og hold mailindstillingerne i en fil cmsspot ikke kan nå.
Læg indstillingerne i include/config.php, og tilføj include/config.php til de udelukkede filer når du forbinder sitet. Så henter, viser og redigerer cmsspot den aldrig, og en AI-assistent kan heller ikke se den.
<?php // include/config.php (udelukket i cmsspot)
return [
'mail_to' => 'hej@eksempel.dk',
'smtp_host' => 'smtp.eksempel.dk',
'smtp_user' => 'noreply@eksempel.dk',
'smtp_pass' => 'kodeordet fra din mailudbyder',
'smtp_port' => 587,
];
Selve formularsiden, i sider/kontakt.php. Den bruger PHPMailer til SMTP. Hent den fra GitHub og læg den i include/phpmailer/. Virker dit webhotels almindelige mail(), kan du springe PHPMailer over og kalde mail() i stedet.
<?php
$page_title = 'Kontakt os';
$page_desc = 'Ring, skriv eller kig forbi. Vi svarer inden for en arbejdsdag.';
$sent = false; $error = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$cfg = require __DIR__ . '/../include/config.php';
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$msg = trim($_POST['message'] ?? '');
if (($_POST['website'] ?? '') !== '') { // honeypot: bots udfylder det, mennesker ser det ikke
$sent = true; // lad som om det virkede, send intet
} elseif ($name === '' || !filter_var($email, FILTER_VALIDATE_EMAIL) || strlen($msg) < 10) {
$error = 'Udfyld dit navn, en gyldig mail og en besked.';
} else {
require __DIR__ . '/../include/phpmailer/PHPMailer.php';
require __DIR__ . '/../include/phpmailer/SMTP.php';
require __DIR__ . '/../include/phpmailer/Exception.php';
$m = new PHPMailer\PHPMailer\PHPMailer(true);
try {
$m->isSMTP(); $m->Host = $cfg['smtp_host']; $m->SMTPAuth = true;
$m->Username = $cfg['smtp_user']; $m->Password = $cfg['smtp_pass'];
$m->SMTPSecure = 'tls'; $m->Port = $cfg['smtp_port'];
$m->setFrom($cfg['smtp_user'], 'Hjemmesiden'); // fra din egen adresse, svar til den besøgende
$m->addAddress($cfg['mail_to']); $m->addReplyTo($email, $name);
$m->Subject = 'Besked fra hjemmesiden';
$m->Body = "Fra: $name <$email>\n\n$msg"; // ren tekst: intet den besøgende skrev, kan køre
$m->send(); $sent = true;
} catch (Exception $ex) { $error = 'Beskeden kunne ikke sendes. Ring til os i stedet.'; }
}
}
require __DIR__ . '/../include/header.php';
?>
<main>
<h1>Kontakt os</h1>
<p>Ring på <a href="tel:+4512345678">12 34 56 78</a> eller send en besked. Vi svarer inden for en arbejdsdag.</p>
<?php if ($sent): ?><p>Tak. Vi har fået din besked.</p><?php else: ?>
<?php if ($error): ?><p class="error"><?= htmlspecialchars($error) ?></p><?php endif; ?>
<form method="post">
<label>Navn <input name="name" required></label>
<label>Mail <input name="email" type="email" required></label>
<label>Besked <textarea name="message" required minlength="10"></textarea></label>
<div style="position:absolute;left:-10000px" aria-hidden="true"><label>Website <input name="website" tabindex="-1" autocomplete="off"></label></div>
<button type="submit">Send</button>
</form>
<?php endif; ?>
</main>
<?php require __DIR__ . '/../include/footer.php'; ?>
Teksterne på siden (overskriften, introen, tak-linjen) er almindelige felter i cmsspot. PHP'en omkring dem er låst, så kunden kan ikke ødelægge formularen. Får en formular spam alligevel, så tilføj en simpel begrænsning: én besked pr. adresse pr. minut, gemt i en lille fil uden for webroden.
SMTP-oplysningerne kommer fra din mailudbyder. Til Microsoft 365 og Google Workspace bruger du en app-adgangskode eller et SMTP-relay som deres dokumentation beskriver. Mange danske webhoteller har også en SMTP-server med i pakken, og adressen står i velkomstmailen.
Før du forbinder: en tjekliste
- Siderne sætter
$page_titleog$page_descsom almindelige strenge øverst. - Header og footer er includes, og menuen er en
<ul>inde i<nav>. - Hemmeligheder ligger i
include/config.phpeller uden for webroden og er udelukket i cmsspot. - Billeder har
width,heightogalt. - Du ved hvilke mapper der skal være faner.
Hele byggeguiden med skabeloner findes på AI og MCP, og den kan lægges ind i Claude, så sitet bliver bygget sådan fra starten.
Her finder du SFTP-adgang hos de mest brugte webhoteller
cmsspot forbinder over SFTP (port 22 hos de fleste) med en nøgle eller et kodeord. Almindelig FTP understøttes ikke, fordi den sender kodeordet ukrypteret. Alle webhotellerne herunder tilbyder SFTP. Hvor vi har tjekket webhotellets egen guide, går linket direkte til den. For de andre går linket til webhotellet, og noten siger hvad du skal søge efter i deres hjælpecenter.
| Webhotel | Her er SFTP-adgangen |
|---|---|
| Simply.com | SFTP kører gennem SSH: tilføj din offentlige nøgle under Webhotel → SSH-adgang i kontrolpanelet, og forbind til ssh.simply.com med dit FTP-brugernavn. Direkte guide. |
| one.com | Åbn Avancerede indstillinger i one.com-kontrolpanelet, og klik på SSH & FTP for at slå SFTP til og se host og brugernavn. Søg på "SSH" i hjælpecentret hvis feltet ikke er der. |
| DanDomain | Søg på "FTP" eller "SFTP" på supportsiderne. Adgangen vises på webhotellet i kundecentret. |
| Curanet | Søg på "SFTP" på supportsiderne. Curanets webhoteller understøtter SFTP på hostingkontoen. |
| Scannet | Søg på "SFTP" eller "SSH" på supportsiderne. |
| Hostinger | Opret en FTP-konto under FTP Accounts, og forbind med SFTP på port 22. SSH-nøgler ligger under SSH Access. Direkte guide. |
| IONOS | Opret en SFTP- eller SFTP+SSH-konto under Hosting → SFTP & SSH, eventuelt begrænset til én mappe. Direkte guide. |
| STRATO | Databases and Web space → SFTP & SSH, opret en adgang med en startmappe, og forbind på port 22. Direkte guide. |
| SiteGround | Søg på "SFTP" i hjælpecentret. SSH-nøgler styres i Site Tools under Devs → SSH Keys Manager. |
| Hetzner (webhosting) | Søg på "SFTP" i dokumentationen. SSH- og SFTP-adgang slås til pr. webhotel i konsoleH. |
| Bluehost | Søg på "SFTP" i hjælpecentret. SSH-adgang skal slås til på kontoen først. |
| GoDaddy | Søg på "SFTP" i hjælpecentret. SSH slås til under hostingkontoens indstillinger. |
| Namecheap | Søg på "SFTP" i deres knowledgebase. Delt hosting bruger en anden port end 22, og artiklen siger hvilken. |
| DreamHost | Søg på "SFTP" i hjælpecentret. Hver hostingbruger kan sættes til SFTP- eller shell-adgang. |
| Infomaniak | Søg på "SFTP" eller "SSH" på supportsiderne. Adgangen er pr. site under webhotellet. |
| OVHcloud | Hosting plans → din plan → FTP-SSH: slå SFTP til for FTP-brugeren, og forbind med samme bruger. Direkte guide. |
Tjekket oktober 2026. Webhoteller flytter deres hjælpesider, så er et link dødt, så søg på "SFTP" eller "SSH" i webhotellets hjælpecenter. Er dit webhotel ikke med og tilbyder SFTP, virker det på samme måde.
De to ting der oftest går galt
Den forkerte mappe. Peg cmsspot på hjemmesidens egen mappe (tit public_html, www eller htdocs), ikke kontoens hjemmemappe. cmsspot advarer hvis mappen ligner toppen af en server.
FTP i stedet for SFTP. Velkomstmailen fra mange webhoteller nævner almindelig FTP på port 21. Kig efter SFTP eller SSH på port 22. Det er som regel en separat indstilling eller en separat konto, som noterne ovenfor beskriver.
Kom i gang
Forbind dit første site
Opret en konto, tilføj serveren, åbn en side. Fem minutter fra start til den første gemte ændring.