我打算为只包含一个页面的客户端构建一个站点。该页面只有一个包含可编辑内容的div;其余部分可以在模板文件中进行硬编码。
客户端需要类似CMS的行为:登录网站并编辑单个文本(最好是内联)。我通常使用Drupal构建更大的站点,但对于像这样简单的东西来说,这样做会有点过分。
有没有人知道这样一个网站的好(开源)解决方案?
答案 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)
我想到了两个解决方案:
答案 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)
答案 12 :(得分:1)
我个人使用Perch CMS:https://grabaperch.com/或统一:http://unify.unitinteractive.com/
答案 13 :(得分:0)
我喜欢Wordpress。它在技术上是“博客”软件,但它很容易扩展到一个漂亮的小型CMS。
答案 14 :(得分:-1)
这很容易。您可以在10分钟内编写一个代码(或者问我)。
只有一个页面和管理文件,用于编辑text.txt。