diff --git a/README.md b/README.md index 581d3ec..0c42f7f 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,10 @@ -# Themes for Laravel & Voyager +# DevDojo Themes Package -This is a theme hook for voyager and the hook system - -![Voyager Themes Admin Page](https://i.imgur.com/uG78r50.png) - -## Installing the hook - -You can use the artisan command below to install this hook - -```bash -php artisan hook:install voyager-themes -``` +This is a package that will add theme support in your Laravel application ## Adding Themes -The **voyager-themes** hook will look inside of the `resources/themes` folder for any folder that has a `.json` file inside of it with the same name. *(You can change the theme folder location in the config)* +The **themes** package will look inside of the `resources/themes` folder for any folder that has a `.json` file inside of it with the same name. *(You can change the theme folder location in the config)* As an example if you have a folder called **sample-theme** and inside that folder you have another file called **sample-theme.json** with the following contents: @@ -25,11 +15,11 @@ As an example if you have a folder called **sample-theme** and inside that folde } ``` -Voyager Themes will detect this as a new theme. You can also include a sample screenshot of your theme, which would be **sample-theme.jpg** *(800x500px) for best results* +This package will detect this as a new theme. You can also include a sample screenshot of your theme, which would be **sample-theme.jpg** *(800x500px) for best results* In fact, you can checkout the sample-theme repo here: [https://github.com/thedevdojo/sample-theme](https://github.com/thedevdojo/sample-theme) -You can activate this theme inside of Voyager and then when you want to tell your application which view to load you can use: +You can activate this theme by setting the `active` column to 1 for that specific theme. Then use it like: ``` return view('theme::welcome') @@ -45,7 +35,7 @@ You may choose to publish a config to your project by running: php artisan vendor:publish ``` -You will want to publish the `voyager-themes-config`, and you will now see a new config located at `config/themes.php`, which will look like the following: +You will want to publish the themes config, and you will now see a new config located at `config/themes.php`, which will look like the following: ``` resource_path('views/themes'), - 'publish_assets' => true + 'publish_assets' => true, + 'create_tables' => true ]; ``` @@ -62,88 +53,3 @@ Now, you can choose an alternate location for your themes folder. By default thi Additionally, you can set **publish_assets** to *true* or *false*, if it is set to *true* anytime the themes directory is scanned it will publish the `assets` folder in your theme to the public folder inside a new `themes` folder. Set this to *false* and this will no longer happen. -## Theme Options - -You can also easily add a number of options by including another file in the theme folder called `options.blade.php` - -![Voyager Theme Options Page](https://i.imgur.com/eAoNt0W.png) - -Inside the `options.blade.php` file you can now add a new field as simple as: - -``` -{!! theme_field('text', 'title') !!} -``` - -This will now add a new **text field** and store it with a **key** of *title*. So, now if you wanted to reference this value anywhere in your theme files you can simple echo it out like so: - -``` -{{ theme('title') }} -``` - -Couldn't be easier, right! - -Take a look at all the following explanation of the `theme_field` function. - -### The theme_field() function - -The `theme_field()` function can be used to display fields in our theme options page. Take a look at the function DEFINITION, EXAMPLE, EXPLANATION, and TYPES OF FIELDS below: - -**DEFINITION:** - - theme_field( - $type, - $key, - $title = '', - $content = '', - $details = '', - $placeholder = '', - $required = 1) - -**EXAMPLE** of a textbox asking for headline: - - {!! theme_field( - 'text', - 'headline', - 'My Aweseome Headline', - '{}', - 'Add your Headline here', - 0) - !!} - -Only the first 2 are arguments are required - - {!! theme_field('text', 'headline') !!} - -**EXPLANATION:** - - $type - This is the type of field you want to display, you can - take a look at all the fields from the TYPES OF FIELDS - section below. - $key - This is the key you want to create to reference the - field in your theme. - $title - This is the title or the label above the field - $content - The current contents or value of the field, if the field - has already been created in the db, the value in the - database will be used instead - $details - The details of the field in JSON. You can find more - info about the details from the following URL: - https://voyager.readme.io/docs/additional-field-options - $placeholder - The placeholder value of the field - $required - Whether or not this field is required - -**TYPES OF FIELDS** - - checkbox, color, date, file, image, multiple_images, - number, password, radio_btn, rich_text_box, code_editor, - markdown_editor, select_dropdown, select_multiple, text, - text_area, timestamp, hidden, coordinates - ---- - diff --git a/config/themes.php b/config/themes.php index 6ed000e..282c00a 100644 --- a/config/themes.php +++ b/config/themes.php @@ -3,6 +3,7 @@ return [ 'themes_folder' => resource_path('views/themes'), - 'publish_assets' => true + 'publish_assets' => true, + 'create_tables' => true ]; \ No newline at end of file diff --git a/src/ThemesServiceProvider.php b/src/ThemesServiceProvider.php index e14d819..c11a7ae 100644 --- a/src/ThemesServiceProvider.php +++ b/src/ThemesServiceProvider.php @@ -187,7 +187,7 @@ private function loadDynamicMiddleware($themes_folder, $theme){ */ private function addThemesTable() { - if (!Schema::hasTable('themes')) { + if (!Schema::hasTable('themes') && config('themes.create_tables')) { Schema::create('themes', function (Blueprint $table) { $table->increments('id'); $table->string('name');