Loading...
 
Skip to main content

History: Making or Updating a Theme for Tiki 27

Source of version: 9

Copy to clipboard
            {REMARKSBOX(type="note" title="Current information" close="n")} The Tiki 27 file organization has stabilized after considerable development, but for any clarification and the latest information, please visit Tiki's [https://app.gitter.im/#/room/#tiki-org_community:gitter.im|Matrix chatroom]. {REMARKSBOX}

{DIV(class="lead")}Tiki continues to evolve along with modern web technology methods. For Tiki 27 the file system has been reorganized to be more logical and efficient. More information is here: [https://dev.tiki.org/The-Tiki-27-plus-Build-System], with more background information here: [https://gitlab.com/tikiwiki/tiki/-/blob/master/_PATH_DOCUMENTATION.md]. Also, to compile a theme now (from SCSS to CSS), the script has changed from PHPSCSS to Dart, so the process is faster and it is also the same script that Bootstrap uses.{DIV}

!! New location for custom themes
One aspect of this is to put all of the custom, site-specific files in one directory to facilitate backing up the site, moving the site, and so on. In Tiki 27, the included themes are still in the /themes directory, but it's recommended to put custom theme files in this location if the theme is being developed within the Tiki instance (the files are going to be SCSS-compiled): -+ <Tiki root>/_custom/shared/themes/ +- . If the custom theme is already compiled and ready to use and won't be further SCSS-compiled in this Tiki installation, then see "New location for custom theme CSS files" below. 

!! New location for custom theme top file ("mytheme.scss")
The "top" files of the theme, mytheme.scss, for example, and newsletter.scss, are now in the -+ mytheme/css +- directory, moved from the -+ mytheme/scss +-  directory. Otherwise, each custom theme still has the same sub-directories as the package themes, the same as before. 

!! New custom theme files hierarchy
{DIV(class="row")}{DIV(class="col-sm-5")}{DIV(class="card")}{DIV(class="card-body")}
!!! In Tiki 26 and earlier
~pp~
tiki root
  |_ themes
     |_ mynewtheme
        |_ css
           |_ mynewtheme.css
           |_ newsletter.css (normally generated during SCSS compiling)
        |_ fonts
        |_ icons
        |_ images
           |_ mynewtheme_background_image.png (if any)
           |_ mynewtheme.png (screenshot thumbnail that displays on Look & Feel admin page)
        |_ options
           |_ mynewthemeoption
              |_ css
              |_ mynewthemeoption.css
              |_ scss (plus other standard directories if needed) 
        |_ scss
           |_ _css-variables.scss (SCSS files beginning with "_" won't be compiled into their own CSS files)
           |_ mynewtheme.scss
           |_ _tiki-variables.scss
           |_ _variables.scss
           |_ _variables-dark.scss
           |_ newsletter.scss
        |_ templates
           |_ sometemplatefile.tpl (if needed)

~/pp~

{DIV}{DIV}{DIV} 
{DIV(class="col-sm-1 d-flex align-items-center justify-content-center")} {icon name="arrow-right" size="3"} {DIV}
{DIV(class="col-sm-5")}{DIV(class="card")}{DIV(class="card-body")}
!!! In Tiki 27 and later
~pp~
tiki root
   |_ _custom
      |_ shared
         |_themes
            |_ mynewtheme
               |_ css
                  |_ mynewtheme.scss
                  |_ newsletter.scss 
               |_ fonts
               |_ icons
               |_ images
                  |_ mynewtheme_background_image.png (if any)
                  |_ mynewtheme.png (screenshot thumbnail that displays on Look & Feel admin page)
               |_ options
                 |_ mynewthemeoption
                    |_ css
                       |_ mynewthemeoption.scss
                    |_ ( . . . plus other standard theme sub-directories if needed) 
               |_ scss
                  |_ _css-variables.scss (SCSS files beginning with "_" won't be compiled into their own CSS files)
                  |_ _tiki-pagetop_colors.scss
                  |_ _tiki-selectors.scss
                  |_ _variables.scss
                  |_ _variables-dark.scss
               |_ templates
                  |_ sometemplatefile.tpl (if needed)

~/pp~

{DIV}{DIV}{DIV}{DIV} 

!! New location for custom theme CSS files
While the component files of the theme are in -+ _custom/shared/themes/+- , when these are compiled, the output CSS files of the theme are generated in 

-+ <tiki root>/public/generated/_custom/shared/themes/mytheme/+-  .

This location works the same as -+<tiki root>/themes+- so the custom theme will show up in the Look & Feel admin theme selector just like the included themes.

!! New file paths in top file
All the file paths in the theme's top file ("mytheme.scss") need to be updated as shown in the Tiki 27 example, below right:
{DIV(class="row")}{DIV(class="col-sm-5")}{DIV(class="card")}{DIV(class="card-body")}
!!! In Tiki 26 and earlier
''for a theme in the /themes directory'' 
~pp~
@import "../../base_files/scss/_tiki-bootstrap_functions";

@import "variables"; // Needs to come first, to override Bootstrap defaults.
@import "variables-dark";
@import "../../base_files/scss/_tiki-variables.scss"; // Values/definitions for Tiki variables (outside of Bootstrap variables) such as _tiki-selectors.scss.
@import "../../default/scss/variables"; // Bootstrap default variables, with a few Tiki overrides
@import "../../default/scss/variables-dark"; // Bootstrap dark mode default variables
@import "../../base_files/scss/_tiki-bootstrap_layout_and_components";
@import "css-variables"; // Needs to be loaded after default variables to override them

@import "../../base_files/scss/_tiki-selectors.scss";
@import "../../base_files/scss/_tiki-pagetop_colors.scss"; // Import if needed to specify top and topbar zone colors in more detail
@import "_tiki-selectors.scss";
@import "../../base_files/scss/_external-scripts.scss";
@import "../../base_files/scss/_select2-tiki_colors.scss";
~/pp~
{DIV}{DIV}{DIV} 
{DIV(class="col-sm-1 d-flex align-items-center justify-content-center px-0")} {icon name="arrow-right" size="3"} {DIV}
{DIV(class="col-sm-5")}{DIV(class="card")}{DIV(class="card-body")}
!!! In Tiki 27 and later (updated)
''for a theme in the /_custom/shared/themes directory''
~pp~
@import "themes/base_files/scss/_tiki-bootstrap_functions"; // 1. Functions are included first (so colors, etc. can be manipulated).

@import "themes/base_files/scss/_tiki-variables.scss"; // 2. Default value declarations for Tiki variables and the default vendor Bootstrap variables.
@import "../scss/variables"; // 3. The theme's variable declarations are used when they are imported after the Bootstrap defaults (order changed for Tiki 27).
@import "themes/default/scss/variables-dark"; //4. Values of dark variables if color modes are enabled (Order of importing this and the default variables-dark doesn't seem to make a difference).
@import "../scss/variables-dark"; // 5. Adds default dark variables for any not declared by the theme dark variables file.

@import "themes/base_files/scss/_tiki-bootstrap_layout_and_components"; // 6. Remainder of required Bootstrap parts.
@import "themes/base_files/scss/_tiki-selectors.scss"; // 7. Tiki CSS selectors used globally.
@import "themes/base_files/scss/_tiki-pagetop_colors.scss"; // 8. Optionally imported to group (separately) the top and topbar zone components for styling.
@import "../scss/_tiki-selectors.scss"; // 9. Tiki CSS selectors, including those of external scripts, to be styled by the theme's variables.

@import "../scss/css-variables"; // 10. Imported after default CSS variables to override them.
~/pp~
{DIV}{DIV}{DIV}{DIV} 

As the lists above show, there are fewer files directly imported by the theme in Tiki 27 because one file import was redundant and a few other imports are now combined "upstream" in themes/base_files/scss to reduce duplication across themes and simplify each theme's top file.

!! New theme compiling method
The theme-building workflow changed between Tiki 26 and 27. Formerly the PHP script to compile themes was part of the Tiki package, but as of Tiki 27 node.js and npm are used so these need to be installed separately from Tiki. The required npm version is between 9.0.0 and 11, and the required node.js version is between  18.0.0 and 22.

Then running -+npm run watch+- in the terminal will watch for changes in SCSS files and compile them to CSS, and will report any errors. 

{REMARKSBOX(type="note" title="Compiling on Windows" close="n")}As of this update (July, 2024), there's a glitch when compiling custom themes in Windows. Non-SCSS files and directories are output on a different path than SCSS files, so the theme's images, fonts, templates, etc. directories need to be copied manually to the correct location in public/_custom/shared/themes to be available for the theme. {REMARKSBOX}
        

History

Advanced
Information Version
Sun 24 of Nov, 2024 11:39 GMT-0000 Gary Cunningham-Lee Updated Tiki 27 custom theme import paths 13
Wed 24 of Jul, 2024 02:12 GMT-0000 Gary Cunningham-Lee Fixed my typo. 12
Wed 24 of Jul, 2024 02:10 GMT-0000 Gary Cunningham-Lee Trying shorter URL. 11
Wed 24 of Jul, 2024 02:09 GMT-0000 Gary Cunningham-Lee Added link. 10
Wed 24 of Jul, 2024 02:08 GMT-0000 Gary Cunningham-Lee Added some clarification. 9
Sun 21 of Jul, 2024 12:23 GMT-0000 Gary Cunningham-Lee Added pre tags to make file paths in top files overflow: scroll 8
Sun 21 of Jul, 2024 11:54 GMT-0000 Gary Cunningham-Lee Corrected level of Tiki 26 theme options directory (for real this time). 7
Sun 21 of Jul, 2024 11:53 GMT-0000 Gary Cunningham-Lee Corrected level of Tiki 26 theme options directory. 6
Sun 21 of Jul, 2024 10:49 GMT-0000 Gary Cunningham-Lee Added "themes/" to "base_files/" and "default/" paths in Tiki 27 import statements (different from master). 5
Thu 18 of Jul, 2024 04:27 GMT-0000 Gary Cunningham-Lee Updated Tiki 27 custom theme import paths 4
Wed 29 of May, 2024 07:38 GMT-0000 Gary Cunningham-Lee Updated information. 3
Mon 20 of May, 2024 09:03 GMT-0000 Gary Cunningham-Lee Updated with new content. 2
Sun 04 of Feb, 2024 05:11 GMT-0000 Gary Cunningham-Lee Initial information. 1