generated from yardinternet/skeleton-package
-
Notifications
You must be signed in to change notification settings - Fork 0
(feat): rename to nutshell #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,115 +1,126 @@ | ||
| # Sage Child Theme Support | ||
| # Nutshell: Enhanced Acorn Support for WordPress Themes | ||
|
|
||
| [](https://github.com/yardinternet/skeleton-package/actions/workflows/format-php.yml) | ||
| [](https://github.com/yardinternet/skeleton-package/actions/workflows/phpstan.yml) | ||
| <!-- [](https://github.com/yardinternet/skeleton-package/actions/workflows/run-tests.yml) --> | ||
| <!-- [](https://github.com/yardinternet/skeleton-package/actions/workflows/badges.yml) --> | ||
|
|
||
| Classes to use Acorn with child themes: | ||
| **Nutshell** is a feature-rich package designed to extend [Acorn](https://roots.io/acorn/) for WordPress themes. It provides a flexible foundation for advanced theme development, including configuration inheritance, Sentry integration, Vite asset support, and more. | ||
|
|
||
| - WP like inheritance for config files; child config will override parent configuration. | ||
| - No directory scans, everything is configuration based. | ||
| ## Features | ||
|
|
||
| - **Child Theme Configuration Inheritance**: | ||
| - Allows child themes to override parent configuration files without directory scans. | ||
| - Uses a custom configuration repository to support unsetting and merging config values. | ||
| - **Vite Asset Support**: | ||
| - Integrates with Vite for modern asset bundling and hot reloading. | ||
| - **Sentry Integration**: | ||
| - Seamless error reporting via Sentry for Laravel. | ||
| - **Custom View Composers**: | ||
| - Manual registration of view composers for fine-grained control. | ||
| - **Custom Console Commands**: | ||
| - Register custom Artisan commands via configuration. | ||
|
|
||
| ## Requirements | ||
|
|
||
| - [Acorn](https://github.com/roots/acorn) >= 4.0 | ||
| - PHP >= 8.1 | ||
| - [Acorn](https://github.com/roots/acorn) ^4.3 | ||
| - Composer | ||
|
|
||
| ## Installation | ||
|
|
||
| To install this package using Composer, follow these steps: | ||
|
|
||
| 1. Add the following to the `repositories` section of your `composer.json`: | ||
|
|
||
| ```json | ||
| { | ||
| "type": "vcs", | ||
| "url": "git@github.com:yardinternet/sage-child-theme-support.git" | ||
| } | ||
| ``` | ||
| 1. Install this package with composer | ||
|
|
||
| 2. Install this package with Composer: | ||
| ```sh | ||
| composer require yard/nutshell | ||
| ``` | ||
|
|
||
| ```sh | ||
| composer require yard/sage-child-theme-support | ||
| ``` | ||
|
|
||
| ## Configuration | ||
| 2. Ensure your project's `composer.json` uses PSR-4 autoloading for your theme and childtheme and remove any redundant autoloading from the theme itself. | ||
|
|
||
| 1. Create a child theme with Sage as the parent theme ([How To Create A Child Theme | Wordpress.org](https://developer.wordpress.org/themes/advanced-topics/child-themes/#how-to-create-a-child-theme)) | ||
|
|
||
| Example `style.css`: | ||
|
|
||
| ```css | ||
| /** | ||
| * Theme Name: Sage Child Theme | ||
| * Template: sage | ||
| * Theme URI: https://www.example.com/sage-child/ | ||
| * Description: Sage child theme | ||
| * Version: 1.0.0 | ||
| * Author: Example Inc. | ||
| * Author URI: http://www.example.com/ | ||
| * Text Domain: sage | ||
| * License: MIT License | ||
| * License URI: https://opensource.org/licenses/MIT | ||
| * Requires PHP: 8.1 | ||
| * Requires at least: 5.9 | ||
| */ | ||
| ``` | ||
|
|
||
| 2. Add PSR-4 autoloading for your child theme to your (root) `composer.json`: | ||
|
|
||
| ```diff | ||
| "autoload": { | ||
| ```diff | ||
| "autoload": { | ||
| "psr-4": { | ||
| "App\\": "web/app/themes/sage/app/", | ||
| + "ChildTheme\\App\\": "web/app/themes/child-theme/app/", | ||
| "App\\": "web/app/themes/sage/app/", | ||
| + "ChildTheme\\App\\": "web/app/themes/child-theme/app/", | ||
| } | ||
| }, | ||
| ``` | ||
|
|
||
| Remove the autoloading from your theme `composer.json` if applicable. | ||
|
|
||
| 3. In `sage/config/app.php` change: | ||
|
|
||
| ```diff | ||
| -use Roots\Acorn\ServiceProvider; | ||
| +use Yard\SageChildThemeSupport\ServiceProvider; | ||
| ``` | ||
|
|
||
| 4. In `sage/functions.php` change: | ||
| }, | ||
| ``` | ||
|
|
||
| ```diff | ||
| -\Roots\bootloader()->boot(); | ||
| +define('ACORN_BASEPATH', __DIR__); | ||
| +\Yard\SageChildThemeSupport\bootloader()->boot(); | ||
| ``` | ||
|
|
||
| 5. Add view composers to `config/view.php` | ||
|
|
||
| ```diff | ||
| - 'composers' => [], | ||
| + 'composers => [ | ||
| + 'app' => App\View\Composers\App::class, | ||
| + 'comments' => App\View\Composers\Comments::class, | ||
| + 'post' => App\View\Composers\Post::class, | ||
| + ], | ||
| ``` | ||
|
|
||
| 6. Add any custom console commands to `config/console.php`: | ||
|
|
||
| ```diff | ||
| + 'commands => [ | ||
| + 'test' => App\Console\Commands\Test::class, | ||
| + ], | ||
| ``` | ||
| ## Configuration | ||
|
|
||
| > [!IMPORTANT] | ||
| > After this change: | ||
| > | ||
| > - View Composers in the app/View/Composers directory will no longer be loaded automatically. To ensure they are registered, you have to configure them manually. | ||
| > - Console Commands in the app/Console/Commands directory will no longer be loaded automatically. To ensure they are register, you have to configure them manually. | ||
|
|
||
| 1. **Child Theme Setup** | ||
| - Create a child theme with Sage as the parent theme. See [WordPress Child Themes](https://developer.wordpress.org/themes/advanced-topics/child-themes/#how-to-create-a-child-theme). | ||
|
|
||
| Example `style.css`: | ||
|
|
||
| ```css | ||
| /** | ||
| * Theme Name: Sage Child Theme | ||
| * Template: sage | ||
| * Theme URI: https://www.example.com/sage-child/ | ||
| * Description: Sage child theme | ||
| * Version: 1.0.0 | ||
| * Author: Example Inc. | ||
| * Author URI: http://www.example.com/ | ||
| * Text Domain: sage | ||
| * License: MIT License | ||
| * License URI: https://opensource.org/licenses/MIT | ||
| * Requires PHP: 8.1 | ||
| * Requires at least: 5.9 | ||
| */ | ||
| ``` | ||
|
|
||
| - Place your configuration files in `config/` within your child theme directory. These will be merged with the parent configuration where child theme configuration takes precedence. To unset a configuration option from the parent theme in the child theme you can pass an empty array for that configuration option. | ||
|
|
||
| 2. **Update Acorn Bootloader** | ||
|
|
||
| - In your theme's `functions.php`, use the `Yard\Nutshell\bootloader()` helper to bootstrap Acorn with Nutshell's enhancements. | ||
|
|
||
| ```diff | ||
| -\Roots\bootloader()->boot(); | ||
| +define('ACORN_BASEPATH', __DIR__); | ||
| +\Yard\Nutshell\bootloader()->boot(); | ||
| ``` | ||
|
|
||
| 3. **Register View Composers** | ||
| - Add your view composers to `config/view.php` under the `composers` key. Automatic discovery is disabled for explicit control. | ||
|
|
||
| ```diff | ||
| - 'composers' => [], | ||
| + 'composers => [ | ||
| + 'app' => App\View\Composers\App::class, | ||
| + 'comments' => App\View\Composers\Comments::class, | ||
| + 'post' => App\View\Composers\Post::class, | ||
| + ], | ||
| ``` | ||
|
|
||
| 4. **Register Console Commands** | ||
| - Add custom Artisan commands to `config/console.php` under the `commands` key. | ||
|
|
||
| ```diff | ||
| + 'commands => [ | ||
| + 'test' => App\Console\Commands\Test::class, | ||
| + ], | ||
| ``` | ||
|
|
||
| 5. **Vite Integration** | ||
| - Vite is enabled by default. Use the provided `Yard\Nutshell\Assets\Vite` class for asset management. | ||
|
|
||
| 6. **Sentry Integration** | ||
| - Sentry is automatically integrated if `sentry/sentry-laravel` is installed and configured. | ||
|
|
||
| ## Usage | ||
|
|
||
| To override configuration for your child theme add the relevant files to the `child-theme/config` directory. | ||
| The configuration for the child theme is merged with the parent configuration where child theme configuration takes precedence. To unset a configuration option from the parent theme in the child theme you can pass an empty array for that configuration option. | ||
| - **Configuration Inheritance**: Any config file in your child theme's `config/` directory will override the parent. Empty config files will unset the corresponding configuration. | ||
| - **View Composers**: Register all composers manually in `config/view.php`. | ||
| - **Console Commands**: Register all commands manually in `config/console.php`. | ||
| - **Vite**: Use the `@vite` directive or helper as usual; Nutshell ensures correct asset paths. | ||
| - **Sentry**: Errors and exceptions are reported to Sentry automatically. | ||
|
|
||
| ## Contributing | ||
|
|
||
| Pull requests are welcome! Please ensure code style and tests pass before submitting. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Deze stappen 1 t/m 6 en de Important warning zou ik behouden.