Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

A "CMS" for a one-page site? [closed]

I'm going to build a site for a client that consists of only one page. The page has only one div with editable content; the rest can be hard-coded in a template file.

The client wants CMS-like behavior: logging in on the site and editing that single piece of text (preferably inline). I usually build larger sites with Drupal, but that would be overkill for something simple like this.

Does anybody know of a good (open source) solution for a site like this?

like image 961
marcvangend Avatar asked Dec 31 '09 13:12

marcvangend


People also ask

What is closed source CMS?

What is a Closed Source CMS? Closed source CMSs are proprietary, which means that no one (other than internal developers) have access to the source code. All closed source CMSs cost money since they require paid upkeep to maintain. Or, to simplify the situation even further, closed source CMSs follow a business model.

What headless CMS means?

A headless CMS, also known as headless software or headless system, is any type of back-end content management system where the content repository, the “body,” is separated or decoupled from the presentation layer, the “head.” What this really means is that a headless CMS allows you to manage content in one place and ...

What is Page CMS?

A content management system (CMS) supports the creation, management, distribution, publishing, and discovery of corporate information. It covers the complete lifecycle of the pages on your site, from providing simple tools to create the content, through to publishing, and finally to archiving.

What is CMS Webdesign?

What is a CMS in web design? CMS stands for content management system. These systems have come into existence to meet the needs of an internet age where content is king and dynamic—changing continuously and frequently.


2 Answers

It shouldn't be a large job to code this from scratch. All you need is admin.php with some kind of authentication and one form. I timed myself and made this in 7 minutes:

Login and logout

if(isset($_GET['login'])) {    
    // Check user credentials from db or hardcoded variables
    if($_POST['username'] == 'user123' && $_POST['password'] == 'pass123') {
        $_SESSION['logged'] = true;
    } else {
        $loginerror = 'Invalid credentials';
    }
}

if(isset($_GET['logout'])) {
    $_SESSION = array();
    session_destroy();
}

Login form

if(!isset($_SESSION['logged']) || $_SESSION['logged'] !== true): ?>
    <form method="post" action="admin.php?login">
        <?php if(isset($loginerror)) echo '<p>'.$loginerror.'</p>'; ?>
        <input type="username" name="username" value="<?php isset($_POST['username']) echo $_POST['username']; ?>" />
        <input type="password" name="password" />
        <input type="submit" value="Login" />
    </form>
<?php endif;

Actual admin area

if(isset($_SESSION['logged']) && $_SESSION['logged'] === true):
    // Save contents
    if(isset($_GET['save'])) {
        file_put_contents('contents.txt', $_POST['contents']);
    }    
    // Get contents from db or file
    $contents = file_get_contents('contents.txt');
    ?>
    <a href="admin.php?logout">Logout</a>
    <form method="post" action="admin.php?save">
        <textarea name="contents"><?php echo $contents; ?></textarea>
        <input type="submit" value="Save" />
    </form>
<?php endif;

Just combine those segments to get the full code. This code snippet has authentication, logout functionality and saves the contents of a textarea in a file. Alternatively you could change this so that users and content resides in database.

Personally, it would have taken longer for me to find an appropriate lightweight CMS and configure it to work.

like image 141
Tatu Ulmanen Avatar answered Sep 19 '22 12:09

Tatu Ulmanen


Ok, here is my version of the CMS. You can find all my files here in a zip archive: http://chechi.be/midas/simple-cms.zip.

This is the admin page:

<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>CMS</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div id="main">
<h1>CMS</h1>
<?php
if (empty($_POST) && isset($_GET['action'])) {
        $action = $_GET['action'];
        switch ($action) {
            case 'logout':
                session_unset();
                session_destroy();
                break;
    }
}
if (!isset($_SESSION['user'])) {
    $user = '';
    $pass = '';
    if (isset($_POST['login'])) {
        $user = strtolower(trim($_POST['user']));
        $pass = $_POST['pass'];
        $errors = array();
        if ($user == '' || $user != 'admin') {
            $errors['user'] = '';
        }
        if ($pass == '' || $pass != '123456') {
            $errors['pass'] = '';
        }
        if (empty($errors)) {
            $_SESSION['user'] = $user;
        } else {
            echo '<p class="error">Please fill in your correct ';
            if (isset($errors['user']))
                echo 'username';
            if (count($errors) == 2)
                echo ' and ';
            if (isset($errors['pass']))
                echo 'password';
            echo '.</p>', "\n";
        }
    }
}
if (isset($_SESSION['user'])) {
    $user = $_SESSION['user'];
?>
<div id="headertext">
    <p class="l">You are logged in as <strong><?php echo $user?></strong>.</p>
    <p class="r"><a href="?action=logout">Logout</a></p>
</div>
<?php
    if (isset($_POST['edit'])) {
        if (file_put_contents('homecontent.txt', $_POST['homecontent']) !== FALSE)
            echo '<p class="succes">Your changes are saved.</p>', "\n";
    }
    $homecontent = file_get_contents('homecontent.txt');
?>
<form method="post" action="">
    <p>Here you can edit your homepage text:</p>
    <textarea name="homecontent" id="homecontent" rows="20" cols="55"><?php echo $homecontent?></textarea>
    <p><button type="submit" name="edit">Save changes</button></p>
</form>
<?php } else {?>
<form method="post" action="" id="login">
    <p>
        <label for="user">Username:</label><input type="text" name="user" id="user" value="<?php echo $user?>" />
    </p>
    <p>
        <label for="pass">Password:</label><input type="password" name="pass" id="pass" value="<?php echo $pass?>" />
    </p>
    <p>
        <button type="submit" name="login">Login</button>
    </p>
</form>
<?php }?>
</div>
</body>
</html>
like image 42
Midas Avatar answered Sep 20 '22 12:09

Midas