【问题标题】:Creating Pages with my Custom CMS使用我的自定义 CMS 创建页面
【发布时间】:2017-06-02 14:36:23
【问题描述】:

我今天开始创建一个 CMS,供我个人使用、管理目的以及自学一些东西。

我的管理区域中有一个部分,我可以在其中创建/更新/删除页面或帖子,效果很好。

我的问题是如何根据我存储在数据库中的信息生成页面和 URL?

假设我的表“posts”有几行包含“post_title”、“post_content”、“post_slug”等。如何从我的数据库中的这些信息生成一个页面(因为它显然不是创建基于 PHP 文件的页面),所以我会有 http://mywebsite.com/cool-new-post-slug.php(然后我可以通过 ID 等获取内容)?

如果有人能指出我正确的方向,那就太好了。谢谢你的回答。

【问题讨论】:

  • 我曾经看到一个系统在 POST 行中生成一个 URL(它有一个 URL 列),当您尝试输入不存在的内容时,您尝试在列,如果匹配,它将提供有关该 POST 的所有信息,您应该呈现它。请记住,如果您遵循这一点,当您更新您的 POST 时,如果标题被编辑,您必须重新制作 URL。
  • 我认为在您的帖子表中使用“标题”列并将标题用作网址而不是每次创建帖子时都创建新文件更容易。
  • 这不是粗鲁的意思,但是如果您构建了程序的 CRUD 部分,您应该知道如何检索数据。阅读使用 GET 变量。你会想做类似 mywebsite.com/page.php?slug=cool-new-post 的事情。或者更进一步,了解 mod_rewrite,然后你就可以做 mywebsite.com/cool-new-post/
  • 我了解如何检索数据,但我不确定如何从数据库中的信息生成页面 URL?这样我就可以导航到 slug(然后我可以获取页面/帖子等的内容)。

标签: php content-management-system


【解决方案1】:

如果我正确理解您的问题,您需要先从数据库中检索所有 slug,然后使用它们来构建您的 url。

假设您使用的是 mysqli:

$query = "SELECT post_slug,post_title FROM posts";
$posts = mysqli_query($con,$query);
while($post = mysqli_fetch_assoc($posts)){

    echo "<a href=\"single.php?slug=" . $post["post_slug"] . "\">";
    echo $post["post_title"];
    echo "</a><br/>";

}

mysqli_free_result($posts);

然后在single.php 上,您将使用GET 变量post_slug 来检索您的数据。

在您的 .htaccess 文件中,您可以使用 mod_rewrite 来获取漂亮的 URL,如下所示:

RewriteEngine On
RewriteBase /
RewriteRule posts/(.+?)/?$ single.php?slug=$1

这将显示 URL http://mywebsite.com/posts/cool-new-post/ 您的浏览器,但它真正访问的是 single.php?slug=cool-new-post

【讨论】:

  • 非常感谢您的回答。我意识到我的要求并没有多大意义。我现在真正想做的是将我的 URL localhost/cms/single.php?id=1 更改为更愉快的东西。所以我正在通过 .htaccess 查看漂亮的 URL。但是每个帖子的所有内容都放在它自己的页面上:) 谢谢
  • 那你肯定需要看看 mod_rewrite。您仍然可以只使用 single.php 来处理和显示每个页面,但为每个页面提供自己的漂亮 URL。
  • 非常感谢!这就是我一直在寻找的,mod 重写 - 干杯!
猜你喜欢
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多