grottopress / jentil
Jentil是一个用于快速WordPress主题开发的现代框架
Requires
- php: >=7.0
- composer/installers: ^1.12
- grottopress/mobile-detector: ^1.0
- grottopress/wordpress-breadcrumbs: ^1.0
- grottopress/wordpress-meta-box: ^1.0
- grottopress/wordpress-posts: ^1.0
- grottopress/wordpress-suv: ^1.0
Requires (Dev)
- codeception/module-asserts: ^1.3
- lucatume/function-mocker: ^1.3
- lucatume/wp-browser: ^3.1
- wp-cli/wp-cli-bundle: ^2.7
This package is auto-updated.
Last update: 2024-09-21 09:33:22 UTC
README
Jentil是一个用于快速WordPress主题开发的现代框架。它强调了一种更简洁、更模块化的WordPress主题构建方式,同时又不远离WordPress核心API。
Jentil采用SUV架构设计,充分利用了WordPress核心事件驱动架构的强大表现力。
Jentil具有更组织的目录结构。模板从templates/
目录加载,部分从partials/
目录加载。
它集成了预定义的可插拔功能,包括强大的内容选项,允许用户通过自定义设置配置如何在存档中显示帖子。
Jentil可以作为主主题或作为另一个主题中的包安装。
特性
- 强大的架构,更组织的目录结构。不再需要在主题根目录中堆放模板的日子已经过去!
- 众多的动作和过滤器钩子,允许通过子主题和插件轻松扩展。
- 整洁的面向对象代码库。
- 现代Web开发工具。
- 符合PSR-1、PSR-2和PSR-4。
- 通过自定义设置提供强大的帖子显示选项。
- 页面构建器帖子类型模板
- 六(6)种布局选项
- 内容
- 内容 / 侧边栏
- 侧边栏 / 内容
- 侧边栏 / 内容 / 侧边栏
- 内容 / 侧边栏 / 侧边栏
- 侧边栏 / 侧边栏 / 内容
- HTML5 / CSS3
- SEO就绪
- 响应式(移动友好)
要求
这些是您需要安装的核心要求。其余内容将在安装过程中由主题本身安装。
安装
安装jentil-theme,这是一个使用Jentil构建您自己的主题的启动器
- 从
wp-content/themes/
目录运行composer create-project --remove-vcs grottopress/jentil-theme your-theme-slug-here
。 - 切换到
your-theme-slug-here/
目录:cd your-theme-slug-here/
。 - 在
style.css
中更新主题信息。您还可能希望更改composer.json
和package.json
中的包名、描述和作者。 - 将
bs-config-sample.js
复制到bs-config.js
:cp bs-config-sample.js bs-config.js
。根据需要进行编辑。 - 将所有
'jentil-theme'
文本域替换为您自己的主题缩略名。您的主题缩略名应与主题文件夹名称匹配,该文件夹名称只是您的主题名称的缩写版。 - 运行
git init
为您的主題初始化一个新的git仓库。 - 运行
vendor/bin/wp theme activate your-theme-slug-here
以激活您的新主题。 - 深入您的主题源代码,并开始开发。
将Jentil作为主主题安装
默认情况下,您的主题以Jentil包的形式安装(在vendor/
目录中)。这是推荐的。
然而,Jentil本身就是一个完整的WordPress主题,因此也可以以这种方式安装。
如果您出于任何原因希望将Jentil作为主主题使用,请按照以下步骤操作
- 将
Template: jentil
添加到您主题的style.css
标题中。 - 运行
composer remove grottopress/jentil
来从主题依赖中移除 Jentil。 - 切换到
wp-content/themes/
目录:cd ../
- 将 Jentil 安装为(父)主题:
composer create-project grottopress/jentil jentil
- 切换到您自己的主题目录:
cd your-theme-slug-here/
- 激活您自己的主题(不是 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_action
或 remove_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 Browser和Function Mocker进行测试。您可以使用您舒适的任何测试框架来替换这些。
WP Browser使用Codeception,而Codeception又使用PHPUnit,因此它应该可以满足大多数测试需求。除了单元测试外,您还可以使用相同的设置添加集成、功能和验收测试。
使用composer run test
运行所有测试,如composer.json
中在scripts
配置下定义。
架构
Jentil使用SUV架构设计。您可能想查看它,因为它可能有助于更好地理解Jentil开发的核心哲学。
展示
以下项目由Jentil提供支持
开发
使用composer run test
运行测试。
贡献
- 将其Fork
- 切换到
master
分支:git checkout master
- 创建您的功能分支:
git checkout -b my-new-feature
- 进行更改,根据需要更新更改日志和文档。
- 提交更改:
git commit
- 推送到分支:
git push origin my-new-feature
- 向
GrottoPress:master
分支提交新的拉取请求。