【发布时间】:2010-12-31 10:05:27
【问题描述】:
我将为客户构建一个仅包含一页的网站。该页面只有一个可编辑内容的 div;其余的可以硬编码在模板文件中。
客户想要类似于 CMS 的行为:登录网站并编辑单个文本(最好是内联的)。我通常使用 Drupal 构建更大的站点,但对于像这样简单的事情来说,这将是矫枉过正。
有人知道这样的网站有一个好的(开源)解决方案吗?
【问题讨论】:
我将为客户构建一个仅包含一页的网站。该页面只有一个可编辑内容的 div;其余的可以硬编码在模板文件中。
客户想要类似于 CMS 的行为:登录网站并编辑单个文本(最好是内联的)。我通常使用 Drupal 构建更大的站点,但对于像这样简单的事情来说,这将是矫枉过正。
有人知道这样的网站有一个好的(开源)解决方案吗?
【问题讨论】:
这是一个,非常适合小型网站:One Page CMS。
我已经用了很多年了。 WYSIWYG 基于 TinyCMS,但我使用 nicedit。
【讨论】:
好的,这是我的 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>
【讨论】:
如果您想要一个使用纯文本文件的超级简单的单页 CMS,我建议您使用 BonoboCMS。它基本上就是你所说的,并且它支持 Markdown。
【讨论】:
我个人会使用 Perch CMS:https://grabaperch.com/ 或 Unify:http://unify.unitinteractive.com/
【讨论】:
我想到了两个解决方案:
【讨论】:
【讨论】:
试试 Atomic CMS,它是免费的开源 ASP.NET MVC 内容管理系统。它是单页网站的理想解决方案,易于安装、支持和理解... Atomic CMS - content management system
【讨论】:
一个文件 CMS? AutoCMS 是一个有这个提案的 cms,只有 10kb 和两个文件,index.php(调用类)和 autocms.php(php 类),但是,如果你可以将 de index.php 的内容放在 autocms.php 中,并得到一个文件 cms,速度非常快,只需极少的要求即可在互联网上获得一席之地,尝试使用 opensoure www.ventics.com/autocms,BSD 许可证来学习和享受
【讨论】:
我真的很喜欢 Zimplit 用于由“几页”组成的项目。他们有一个极简的 WYSIWG 编辑器的绝妙概念,可以编辑整个页面(不仅仅是内容)。而且没有数据库或其他杂乱无章的东西。
我发现很多客户真的可以立即理解这个概念。
【讨论】:
从头开始编写代码应该不是一项大工作。您所需要的只是带有某种身份验证和一种表单的 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;
只需组合这些片段即可获得完整的代码。此代码 sn-p 具有身份验证、注销功能并将文本区域的内容保存在文件中。或者,您可以更改此设置,以便用户和内容驻留在数据库中。
就我个人而言,我需要更长的时间才能找到合适的轻量级 CMS 并对其进行配置。
【讨论】:
使用 Wordpress 并创建一个简单的主题。 Wordpress 也有文章历史记录,因此如果出现错误等很容易返回。
【讨论】:
这很容易。你可以在 10 分钟内编写一个代码(或问我)。
只是一个包含用于编辑 text.txt 的管理文件的页面。
【讨论】:
我喜欢Wordpress。它在技术上是“博客”软件,但很容易扩展到一个不错的小型 CMS。
【讨论】:
试试CushyCMS。
【讨论】:
看看TiddlyWiki。我不确定这是否具有登录功能等,但它具有小型 CMS 的所有主要功能。
【讨论】: