一页网站的“CMS”?

时间:2009-12-31 13:25:43

标签: content-management-system

我打算为只包含一个页面的客户端构建一个站点。该页面只有一个包含可编辑内容的div;其余部分可以在模板文件中进行硬编码。

客户端需要类似CMS的行为:登录网站并编辑单个文本(最好是内联)。我通常使用Drupal构建更大的站点,但对于像这样简单的东西来说,这样做会有点过分。

有没有人知道这样一个网站的好(开源)解决方案?

15 个答案:

答案 0 :(得分:16)

从头开始编写代码应该不是一件大事。您只需要admin.php,其中包含某种身份验证和一种表单。我定时自己并在7分钟内做到了这一点:

登录和注销

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();
}

登录表格

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;

实际管理区域

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;

只需合并这些细分即可获得完整代码。此代码段具有身份验证,注销功能,并将textarea的内容保存在文件中。或者,您可以更改此设置,以便用户和内容驻留在数据库中。

就个人而言,我需要更长时间才能找到合适的轻量级CMS并将其配置为可行。

答案 1 :(得分:12)

好的,这是我的CMS版本。您可以在zip存档中找到我的所有文件:http://chechi.be/midas/simple-cms.zip

这是管理页面:

<?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>

答案 2 :(得分:5)

我真的很喜欢Zimplit用于包含“非常少的页面”的项目。他们有一个非常简约的WYSIWG编辑器的精彩概念,它编辑整个页面(不仅仅是内容)。没有数据库,或其他愚蠢。

我发现很多客户都可以立即理解这个概念。

答案 3 :(得分:2)

尝试CushyCMS

答案 4 :(得分:2)

我想到了两个解决方案:

  • WonderCMS是您可以想象的最小的CMS(它只有11KB下载)。它的概念类似于其他人发布的内容:只需登录,textarea和一些最小的额外设置。您还可以添加页面并构建简单的导航,但很容易防止这种情况。
  • OneFileCMS实际上不是CMS(但甚至小于WonderCMS:6KB)。它是一个在线文件管理器,带有一个简单的文本编辑器,它由一个PHP文件组成。这样您就可以构建“模板”并在包含可编辑内容的子文件夹中包含一个文件。只需将OneFileCMS放入该文件夹即可处理登录和编辑。

答案 5 :(得分:2)

如果您想要使用平面文本文件的超简单单页CMS,我建议使用BonoboCMS。这基本上就是你所说的,它支持Markdown。

答案 6 :(得分:2)

这是一个,它非常适合小型网站:One Page CMS

我已经使用它多年了。 WYSIWYG基于TinyCMS,但我使用nicedit。

答案 7 :(得分:1)

看看TiddlyWiki。我不确定这是否有登录设备等,但它具有小型CMS的所有主要功能。

答案 8 :(得分:1)

使用Wordpress并创建一个简单的主题。 Wordpress也有文章历史,所以如果犯了错误就很容易回去等等。

答案 9 :(得分:1)

一个文件CMS? AutoCMS是一个带有这个提议的cms,只有10kb和两个文件,index.php(调用类)和autocms.php(php类),但是,如果你应该把de index.php内容放在autocms.php中,并得到一个文件cms,非常快速与最小的requeriments在互联网上获得一个地方,尝试opensoure www.ventics.com/autocms,BSD许可证学习和享受

答案 10 :(得分:1)

尝试使用免费的开源ASP.NET MVC内容管理系统Atomic CMS。它是一个页面站点的理想解决方案,易于安装,支持和理解...... Atomic CMS - content management system

答案 11 :(得分:1)

设置和使用http://www.tero.co.uk/scripts/onepagecms.php

也非常简单

答案 12 :(得分:1)

我个人使用Perch CMS:https://grabaperch.com/或统一:http://unify.unitinteractive.com/

答案 13 :(得分:0)

我喜欢Wordpress。它在技术上是“博客”软件,但它很容易扩展到一个漂亮的小型CMS。

答案 14 :(得分:-1)

这很容易。您可以在10分钟内编写一个代码(或者问我)。

只有一个页面和管理文件,用于编辑text.txt。