【问题标题】:A "CMS" for a one-page site? [closed]一页网站的“CMS”? [关闭]
【发布时间】:2010-12-31 10:05:27
【问题描述】:

我将为客户构建一个仅包含一页的网站。该页面只有一个可编辑内容的 div;其余的可以硬编码在模板文件中。

客户想要类似于 CMS 的行为:登录网站并编辑单个文本(最好是内联的)。我通常使用 Drupal 构建更大的站点,但对于像这样简单的事情来说,这将是矫枉过正。

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

【问题讨论】:

    标签: content-management-system


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      好的,这是我的 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>
      

      【讨论】:

      • 谢谢Midas,非常感谢您的帮助。你的剧本比 Tatu 的更接近我想要的。我希望我可以将这两个答案都标记为已接受,但由于我不能,我现在将您的答案标记为已接受。
      【解决方案3】:

      如果您想要一个使用纯文本文件的超级简单的单页 CMS,我建议您使用 BonoboCMS。它基本上就是你所说的,并且它支持 Markdown。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          我想到了两个解决方案:

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

          【讨论】:

            【解决方案6】:

            这也很容易设置和使用http://www.tero.co.uk/scripts/onepagecms.php

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                【解决方案8】:

                一个文件 CMS? AutoCMS 是一个有这个提案的 cms,只有 10kb 和两个文件,index.php(调用类)和 autocms.php(php 类),但是,如果你可以将 de index.php 的内容放在 autocms.php 中,并得到一个文件 cms,速度非常快,只需极少的要求即可在互联网上获得一席之地,尝试使用 opensoure www.ventics.com/autocms,BSD 许可证来学习和享受

                【讨论】:

                  【解决方案9】:

                  我真的很喜欢 Zimplit 用于由“几页”组成的项目。他们有一个极简的 WYSIWG 编辑器的绝妙概念,可以编辑整个页面(不仅仅是内容)。而且没有数据库或其他杂乱无章的东西。

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

                  【讨论】:

                  • 太好了,Zimplit 看起来确实很简单。在使用它时,它更接近于文字处理器,而不是传统的成熟 CMS,因此我可以理解客户会喜欢它作为一个简单的网站。
                  【解决方案10】:

                  从头开始编写代码应该不是一项大工作。您所需要的只是带有某种身份验证和一种表单的 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 并对其进行配置。

                  【讨论】:

                  • 当然,这是可能的。不过,如果它已经存在,则无需自己编写代码。这就是为什么我决定问问你们。
                  • 现在它存在了,不客气 :)
                  • 大图,太好了,谢谢。这是我在 Stack Overflow 上的第一个问题——没想到会这么快!
                  • @marcvangend,如果您觉得有用,请不要忘记将答案标记为已接受。
                  【解决方案11】:

                  使用 Wordpress 并创建一个简单的主题。 Wordpress 也有文章历史记录,因此如果出现错误等很容易返回。

                  【讨论】:

                  • 荒谬的是,这被否决了,没有评论。用 +1 解决这个问题。
                  • 是的,即使是单页网站,WordPress 也没有问题。此外,单页网站可能需要扩展,而 WordPress 是一个很好的平台。可能有点矫枉过正,但灵活性和社区可能是值得的。 (目前正在努力解决类似的问题,也在研究 Node 解决方案。)
                  • 当然,对于单页网站来说,WordPress 存在一些问题。例如,在我的情况下,如果您受限于托管空间或数据库,甚至是处理能力、带宽等,那么您不需要 5000 个文件的 CMS。您想要一个对文件系统和服务器资源零影响甚至完全没有影响的单文件 CMS。除此之外,使用火箭筒杀死蚊子通常不是最好的方法。
                  • 人们仍在阅读这篇文章(显然,正如我偶然发现的那样),这个问题不是定时炸弹;并且它不太可能是 8 年前最好的方法,就像今天一样。我只是为任何想知道为什么其他方法可能更好的人提供评论和意见,这没有错。
                  【解决方案12】:

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

                  只是一个包含用于编辑 text.txt 的管理文件的页面。

                  【讨论】:

                    【解决方案13】:

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

                    【讨论】:

                      【解决方案14】:

                      试试CushyCMS

                      【讨论】:

                      • 哇! CMS 的俄文网站! :)
                      • 感谢您的提示。 Cushy 确实看起来不错,但如果我理解正确的话,它是一项在线服务而不是可下载的 CMS。
                      【解决方案15】:

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

                      【讨论】:

                      • 不提供登录,但是编辑很流畅,我用的挺多的。
                      猜你喜欢
                      • 1970-01-01
                      • 2010-11-22
                      • 2014-02-17
                      • 1970-01-01
                      • 2012-08-09
                      • 1970-01-01
                      • 2010-12-12
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多