grottopress/jentil

Jentil是一个用于快速WordPress主题开发的现代框架

安装: 692

依赖: 2

建议者: 0

安全: 0

星星: 6

关注者: 4

分支: 4

开放问题: 0

类型:wordpress-theme

v1.0.4 2024-05-09 15:53 UTC

README

Jentil Theme logo

Jentil是一个用于快速WordPress主题开发的现代框架。它强调了一种更简洁、更模块化的WordPress主题构建方式,同时又不远离WordPress核心API。

Jentil采用SUV架构设计,充分利用了WordPress核心事件驱动架构的强大表现力。

Jentil具有更组织的目录结构。模板从templates/目录加载,部分从partials/目录加载。

它集成了预定义的可插拔功能,包括强大的内容选项,允许用户通过自定义设置配置如何在存档中显示帖子。

Jentil可以作为主主题或作为另一个主题中的包安装。

特性

  • 强大的架构,更组织的目录结构。不再需要在主题根目录中堆放模板的日子已经过去!
  • 众多的动作和过滤器钩子,允许通过子主题和插件轻松扩展。
  • 整洁的面向对象代码库。
  • 现代Web开发工具。
  • 符合PSR-1PSR-2PSR-4
  • 通过自定义设置提供强大的帖子显示选项。
  • 页面构建器帖子类型模板
  • 六(6)种布局选项
    • 内容
    • 内容 / 侧边栏
    • 侧边栏 / 内容
    • 侧边栏 / 内容 / 侧边栏
    • 内容 / 侧边栏 / 侧边栏
    • 侧边栏 / 侧边栏 / 内容
  • HTML5 / CSS3
  • SEO就绪
  • 响应式(移动友好)

要求

这些是您需要安装的核心要求。其余内容将在安装过程中由主题本身安装。

安装

安装jentil-theme,这是一个使用Jentil构建您自己的主题的启动器

  1. wp-content/themes/目录运行composer create-project --remove-vcs grottopress/jentil-theme your-theme-slug-here
  2. 切换到your-theme-slug-here/目录:cd your-theme-slug-here/
  3. style.css中更新主题信息。您还可能希望更改composer.jsonpackage.json中的包名、描述和作者。
  4. bs-config-sample.js复制到bs-config.jscp bs-config-sample.js bs-config.js。根据需要进行编辑。
  5. 将所有'jentil-theme'文本域替换为您自己的主题缩略名。您的主题缩略名应与主题文件夹名称匹配,该文件夹名称只是您的主题名称的缩写版
  6. 运行git init为您的主題初始化一个新的git仓库。
  7. 运行vendor/bin/wp theme activate your-theme-slug-here以激活您的新主题。
  8. 深入您的主题源代码,并开始开发。

将Jentil作为主主题安装

默认情况下,您的主题以Jentil包的形式安装(在vendor/目录中)。这是推荐的。

然而,Jentil本身就是一个完整的WordPress主题,因此也可以以这种方式安装。

如果您出于任何原因希望将Jentil作为主主题使用,请按照以下步骤操作

  1. Template: jentil添加到您主题的style.css标题中。
  2. 运行 composer remove grottopress/jentil 来从主题依赖中移除 Jentil。
  3. 切换到 wp-content/themes/ 目录: cd ../
  4. 将 Jentil 安装为(父)主题: composer create-project grottopress/jentil jentil
  5. 切换到您自己的主题目录: cd your-theme-slug-here/
  6. 激活您自己的主题(不是 Jentil),如果尚未激活。

通过 Docker 安装

您的新主题在 docker/ 目录中有 Docker 文件。以下 Dockerfile 可用:

  • apache.Dockerfile:构建包含已安装您的主题的 WordPress + PHP + apache 的镜像。
  • apache.child.Dockerfile:构建包含已安装您的主题(作为 Jentil 的子主题)的 WordPress + PHP + apache 的镜像。
  • fpm-alpine.Dockerfile:构建包含已安装您的主题的 WordPress + PHP-FPM 的镜像。
  • fpm-alpine.child.Dockerfile:构建包含已安装您的主题(作为 Jentil 的子主题)的 WordPress + PHP-FPM 的镜像。

您可以使用任何 Dockerfile 来构建镜像。

docker build \
    --build-arg PHP_VERSION=7.4 \
    --build-arg THEME_NAME=your-theme-slug-here \
    --build-arg WORDPRESS_VERSION=6.1 \
    -f docker/fpm-alpine.Dockerfile \
    -t your-image-tag-here .

您可以使用以下方式运行构建的镜像:

docker run -d --name your-container-name-here \
    -v ${PWD}/wordpress:/var/www/html \
    your-image-tag-here

开发您的主题

无论 Jentil 是作为主题还是包安装,它都充当 WordPress 中的父主题。这意味着您的主题继承了 Jentil 的所有功能。

您可以通过在您的主题中调用 remove_actionremove_filter 来移除或覆盖 Jentil 的功能,就像您会覆盖任何 WordPress 父主题一样。

您可以通过在 templates/partials/ 目录中放置同名模板或部分来覆盖模板和部分。

您的主题的单例实例可以通过调用 \Theme() 获取(除非您已在 app/helpers.php 中更改它),而 Jentil 的单例实例可以通过 \Jentil() 获取。您可以在 app 目录外的文件(例如模板和部分)中使用这些来访问相应的实例。

Jentil 的单例实例在 app/Theme.php 中的主 Theme 类($parent 属性)中公开。

目录结构

安装后,您主题的目录结构应类似于以下内容:

.
├── app/
│   ├── Theme/
│   │   ├── Setups/
│   │   ├── Utilities/
│   │   └── Utilities.php
│   ├── helpers.php
│   └── Theme.php
├── assets/
│   ├── css/
│   └── js/
├── dist/
│   ├── css/
│   └── js/
├── lang/
├── node_modules/
├── partials/
├── templates/
├── tests/
├── vendor/
├── .editorconfig
├── .gitignore
├── CHANGELOG.md
├── codeception.yml
├── composer.json
├── composer.lock
├── functions.php
├── index.php
├── LICENSE
├── package.json
├── package-lock.json
├── postcss.config.js
├── README.md
├── screenshot.png*
├── style.css
├── tailwind.config.js
├── tsconfig.json
└── webpack.mix.js

添加模板和部分

模板和部分应分别存放在 templates/partials/ 中。规则和命名约定由 WordPress 定义。因此,您的主题中的 templates/singular.php 会覆盖 Jentil 中的同名文件。

如果您决定添加自己的模板,请不要在它们中使用 WordPress 的 \get_header()\get_footer()\get_sidebar() 函数。这些函数期望您的部分位于主题的根目录,而 WordPress 没有提供覆盖这些函数的方法。

Jentil 使用它自己的加载器从 partials/ 目录加载部分。您应该调用例如 \Jentil()->utilities->loader->loadPartial('header', 'some-slug'),而不是 \get_header('some-slug')

模板钩子

您很少需要添加自己的模板,因为 Jentil 提供了模板钩子,您可以使用它们来向捆绑的模板中添加或移除内容。

以下操作钩子可用:

  • jentil_before_header
  • jentil_inside_header
  • jentil_after_header
  • jentil_after_after_header
  • jentil_before_before_title
  • jentil_before_title
  • jentil_after_title
  • jentil_before_content
  • jentil_after_content
  • jentil_after_after_content
  • jentil_before_before_footer
  • jentil_before_footer
  • jentil_inside_footer
  • jentil_after_footer

帖子类型模板

WordPress 在 4.7 版本中引入了 帖子类型模板,作为页面模板扩展到所有帖子类型。WordPress 在您的主题的根目录中查找帖子类型模板。

Jentil的加载器根本不会从您主题的根目录加载任何模板(或部分)。因此,即使您在这里放置了文章类型模板,尽管它们可能被WordPress识别并显示在文章编辑屏幕的“页面模板”下拉菜单中,但它们也不会被Jentil加载。

要在您自己的主题中使用文章类型模板,请将模板添加到templates/目录中,并使用theme_{$post_type}_templates过滤器。

Jentil使用此钩子来添加页面构建器模板,并为您的主题文章类型模板提供了一个可以继承的AbstractPostTypeTemplate设置类。

样式

Jentil的样式旨在使用,所以我们不鼓励您取消排它,除非您打算在自己的主题中重新编译并排它。

为了尽可能简单,我们已对它们进行了简化,以便不会妨碍您。您只需在Jentil之后简单地将您自己的主题样式表排它即可。

测试

Jentil采用并鼓励使用适当的、隔离的单元测试。jentil-theme附带WP BrowserFunction Mocker进行测试。您可以使用您舒适的任何测试框架来替换这些。

WP Browser使用Codeception,而Codeception又使用PHPUnit,因此它应该可以满足大多数测试需求。除了单元测试外,您还可以使用相同的设置添加集成、功能和验收测试。

使用composer run test运行所有测试,如composer.json中在scripts配置下定义。

架构

Jentil使用SUV架构设计。您可能想查看它,因为它可能有助于更好地理解Jentil开发的核心哲学。

展示

以下项目由Jentil提供支持

开发

使用composer run test运行测试。

贡献

  1. 将其Fork
  2. 切换到master分支:git checkout master
  3. 创建您的功能分支:git checkout -b my-new-feature
  4. 进行更改,根据需要更新更改日志和文档。
  5. 提交更改:git commit
  6. 推送到分支:git push origin my-new-feature
  7. GrottoPress:master分支提交新的拉取请求