logo

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

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

演示 EBT 模块 下载 EBT 模块

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

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

演示 EPT 模块 滚动

滚动

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 文件开始运行,该文件会从注册器中获取实例,调用所需的控制器并将注册器结果传递给它。控制器反过来可以调用所需的模型。

1.6. 产品与分类 —— 创建数据库表

07/10/2025, by Ivan

在创建商品和分类功能之前,让我们先思考一下,客户和网站管理员需要哪些信息。我们必须提供足够的商品信息:包括商品名称、商品详细描述、商品价格。我们还可以展示商品的主图和附加图片。为了计算运费,可能还需要商品重量;为了防止超卖,还需要库存数量。对于管理员而言,还需要商品的 ID 以及供搜索引擎使用的可读 URL(即“伪静态链接”)。

最终,我们至少需要以下字段: