logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

GLightbox is a pure javascript lightbox (Colorbox alternative without jQuery)❗

It can display images, iframes, inline content and videos with optional autoplay for YouTube, Vimeo and even self-hosted videos.

Demo GLightbox Download GLightbox

滚动

PHP课程 - 第3.4课 - 使用 MySQL 数据库。DELETE 删除查询。

09/10/2025, by Ivan

在上一课中,我们学习了如何向我们的管理类 simpleCMS 添加新方法,现在让我们再添加一个用于删除记录的方法 delete()

我们像往常一样添加方法:

public function delete($mid){
    
}  

正如你所见,我们传递了一个参数 $mid —— 即记录的 ID。回想上一课,我们决定使用另一种方式传递参数,即直接通过 GET 请求,而这次我们将尝试用另一种方式传参。

方法已定义好,现在在 index.php 文件中编写路径处理:

PHP课程 - 第3.5课 - 使用 MySQL 数据库。JOIN 操作符。文件上传到服务器。

09/10/2025, by Ivan

在开始编写本课之前,我思考了很久该如何更好地讲解带有 JOIN 操作符的查询。事实上,JOIN 操作符用于同时从多个表中进行查询。既然我们需要另一个表,那就先创建它。我建议创建一个用于保存文件的表,我们将在本课中通过表单上传这些文件。这样,本课就会结合两个方向——数据库操作与表单处理。

我们先从添加文件上传字段开始。为了让表单能够上传文件,需要在其参数中添加表单类型:

$content .= '<form action="' . $_SERVER['PHP_SELF'] . '" method="post" enctype="multipart/form-data">';

通过 enctype 参数,我们告诉浏览器该表单将用于文件上传。现在表单已准备好,我们来添加文件上传字段:

PHP课程 - 第3.6课 - 使用MySQL数据库。JOIN操作符的类型。

09/10/2025, by Ivan

在 MySQL 中,可以通过多种方式使用 JOIN 进行数据选择。我们将尝试逐一讲解所有这些类型的查询。以下是所有涉及 JOIN 的查询列表:

  1. INNER JOIN(内连接)
  2. LEFT JOIN(左连接)
  3. LEFT JOIN(不与右表交集的左连接)
  4. RIGHT JOIN(右连接)
  5. RIGHT JOIN(不与左表交集的右连接)
  6. FULL OUTER JOIN(全外连接)
  7. FULL OUTER JOIN(左表或右表为空时)

 

以下是这些 JOIN 类型的示意图:

SQL

PHP课程 - 第4课 - 图像处理与GD2库的使用

07/10/2025, by Ivan

在前几课中,我们已经学习了如何编写数据库查询,因此这节课我们将少关注“怎么写查询”,而更多地进行实际练习。同时,我们会把查询编写与其他 PHP 功能结合起来,从图像处理开始。在之前的课程中,我们已经实现了文件上传,并且数据库中已有一个 Files 表来存储上传的文件。这次,我们将把图片也上传到同一个表中。但首先,需要在内容创建表单中添加一个上传图片的字段。

PHP课程 - 第3部分 - 创建自己的CMS

07/10/2025, by Ivan

使用 CMS 创建网站并不局限于 Drupal、Joomla 或 Wordpress。世界上大多数网站都是基于自写的 CMS 开发的。虽然 PHP 已经有大量成熟的代码,但开发者仍然常常倾向于使用自己的解决方案。让我们来分析一下,为什么值得自己编写一个 CMS。

确实,Drupal 是一个功能强大的系统,拥有大量模块、钩子(hooks)以及用于开发自定义模块的函数。很多人都会编写模块,但我们来看看真正开发 Drupal 核心(CMS 本身)的人有多少?
你可能听说过,Drupal 是上百甚至上千名开发者共同努力的结果。但我们不妨仔细看看,究竟是谁在开发 Drupal。

在 Drupal 下载页面上,有一个区块列出了核心开发者,也就是那些直接参与 CMS 核心代码的人。

drupal.org/node/3060/committers?sort=desc&order=Commits

在该页面上可以看到开发者及其对核心的提交次数。以下是部分列表:

1.1. 创建自己的 CMS:引言

07/10/2025, by Ivan

在本课程的这一部分,我们将学习如何创建一个属于自己的 CMS,用于构建一个在线商店。但在开始之前,您应该先阅读这篇引言,以了解是否真的需要自己开发 CMS,还是直接使用像 Drupal + Commerce 这样强大的系统(它已经拥有大量现成的模块)。在引言中,我们将探讨以下内容:

  • 电子商务网站的工作逻辑
  • 什么时候应该开发自己的 CMS,而不是使用现成的系统
  • 自建 CMS 的优势
  • 其他现成电子商务 CMS 的概览

什么是电子商务网站?为什么需要它?

如今,几乎每个人都体验过在互联网上购物。互联网上有成千上万的网站销售各种各样的商品:

1.2. 我们的 CMS 将包含哪些内容

07/10/2025, by Ivan

在研究了现有的电子商务网站之后,我们需要确定未来 CMS 的主要功能。显然,我们必须为用户提供在不同类别中查找和浏览商品的功能。用户应该能够将商品加入购物车并通过结账流程填写订单信息,以计算运费、支付和税费。此外,我们还将实现订单和商品的后台管理面板。以下是详细的功能说明:

商品(Products)

我们需要为商品实现以下功能:

  • 商品搜索: 我们需要提供两个列表——商品目录(分类)和商品搜索。
  • 商品浏览: 当用户找到并感兴趣的商品时,我们必须让用户能够查看商品的详细信息。因此,商品页面应显示商品的价格、重量、尺寸和描述等信息。同时,可以增加用户对商品进行评分和评论的功能。
  • 愿望清单(Wishlist): 让用户可以将想在未来购买的商品添加到愿望清单中。

订单结算(Checkout)

订单结算流程将包括三个阶段:

1.3. 构建我们的 PHP 框架

07/10/2025, by Ivan

构建框架的方法有很多。有些开发者喜欢复杂而功能丰富的框架,而有些人更偏好简洁轻量的方案。在本系列文章中,我们将快速构建一个易于使用、易于理解的简易 PHP 框架。

这些文章将帮助你开发属于你自己的框架。虽然我们这里的示例是为了构建一个网上商店,但你可以轻松扩展框架的功能以适应其他需求。本系列的主要目标是教你如何从零开始构建一个适用于任何 CMS 的自定义框架。

设计模式(Patterns)

在框架开发中,通常会用到多种设计模式(Design Patterns)。设计模式是一些经过验证的最佳实践,用来解决软件开发中的常见问题。在本教程中,我们将使用以下几种模式:

  • MVC(Model-View-Controller,模型-视图-控制器)
  • Registry(注册器模式)
  • Singleton(单例模式)

MVC(模型-视图-控制器)

MVC 是我们框架的核心结构,它能将应用程序的用户界面与业务逻辑分离。视图(View)与数据模型(Model)交互的中间层是控制器(Controller),控制器负责处理业务逻辑并操作模型中的数据。

1.4. 开始编写 MVC 框架

07/10/2025, by Ivan

我们已经详细规划了框架应具备的结构,现在是时候开始实现我们的 MVC 框架了。首先,你需要一个 Web 服务器。你可以使用 Denwer,不过可能需要更新 PHP 版本。

你可以在此页面下载带有 PHP 5.5.20 的 Denwer:

https://drupalbook.org/ru/drupal/denwer-obnovlenie-php

或者从 GitHub 下载:

https://github.com/levmyshkin/denwer-php-5.5.20

我们的框架将从 index.php 文件开始运行,该文件会从注册器中获取实例,调用所需的控制器并将注册器结果传递给它。控制器反过来可以调用所需的模型。