About Features Downloads Getting Started Documentation Events Support GitHub

Site Tools



This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
legacy:vufind_1.x_developer_manual:user_interface_customization [2009/11/13 14:47]
demiankatz Use internal links for explaining vendor branching.
legacy:vufind_1.x_developer_manual:user_interface_customization [2018/12/19 14:00] (current)
Line 1: Line 1:
-====== User Interface Customization ======+====== User Interface Customization ​(VuFind 1.x) ======
-VuFind is developed using [[http://www.smarty.net/​|Smarty]] templates ​for HTML and CSS for design. ​ Templates and CSS are bundled into themeswhich are found in the web/​interface/​themes folder. ​ You can use one of VuFind'​s built-in themes (classic or default), or you can build your own.  The theme used by VuFind is determined by the theme setting in the [Site] section of web/​conf/​config.ini. +// This outdated page has been deleted to prevent confusion; ​for current documentation, see [[development:architecture:​user_interface|this page]]. To view old content ​for historical interestsee the "Old Revisions" list below. //
- +
-The layout is controlled by the Yahoo UI CSS, which means that by modifying the class declarations within the HTML, you can modify the layout. For more information on how to use the Yahoo UI CSS, please ​see the [[http://​developer.yahoo.com/​yui/​grids/​|Yahoo UI web site]]. To modify the colors and design elements, you can edit the styles.css file located in the css directory of your chosen theme. +
- +
-All of the HTML is stored in Templates. There is one main template that controls the overall web site - the layout.tpl file stored in the root of your chosen theme'​s directory. Each module also has its own subdirectory in the theme where the individual templates ​for each web page are stored. They can be modified as needed. +
- +
- +
- +
-===== Theme Inheritance ===== +
- +
-Starting with revision 1293 of the trunkVuFind supports theme inheritance. ​ This feature is NOT supported in 1.0RC1 but should be incorporated in the next stable release. ​ With theme inheritance,​ you can set "theme" ​in config.ini to a comma-separated ​list of theme names, and these themes will be searched in order until a given template or CSS file is found //For example, "theme = MyUniversity,​default"//​ +
- +
-The main benefit of theme inheritance is that it can make it easier for you to manage your local customizations. ​ If you only need to change a few files, creating a separate theme for your custom versions makes it easier to remember exactly what you have changed. ​ As the VuFind code evolves, you won't have to worry about copying templates for new features into your custom theme -- inheritance will simply take care of them.  The only time you need to worry about reconciling changes is when a template you have customized changes in the trunk, which should be a fairly infrequent event if your theme is simple enough. ​ //In the example above, suppose you just want to change headers and footers -- you could put a new layout.tpl in your MyUniversity theme but leave everything else in default.//​ +
- +
-Note that theme inheritance is only one possible strategy for managing your themes. ​ If you are planning something more complicated than the customization of a few files, you might find it helpful to read up on using [[subversion#​vendor_branching|vendor branches]] in [[subversion|Subversion]] as another possible approach to the problem. +
- +
-==== CSS Inheritance ==== +
- +
-The way CSS inheritance works requires a few notes. ​ If you are going to take advantage of this feature, here are some important things to keep in mind: +
- +
-  * Always use the {css} Smarty function to include CSS files. ​ If you don't use this function, CSS inheritance will not happen! ​ The function takes two attributes as parameters:​ +
-    * media - the "​media"​ attribute to use when including the CSS file (i.e. "​screen"​ or "​print"​). +
-    * filename - the name of the CSS file to load.  This must always be relative to the "​css"​ subdirectory of one of your selected theme directories. +
-  * In order for CSS files to load correctly, every theme'​s CSS folder must include the .htaccess file containing special rules for Apache. ​ If you are creating a new theme including css, be sure to copy .htaccess from one of the existing themes or else your CSS files will not load! +
-  * Watch out for @import statements in your CSS files. ​ The target of the @import must be in the same theme as the caller. ​ Inheritance cannot apply here since "​@import"​ is resolved by the client'​s web browser rather than the server-side logic. ​ //For example, suppose you customize styles.css and copy it to your MyUniversity theme. ​ styles.css has an "​@import layout.css"​ statement in it.  If you do not copy layout.css into your MyUniversity theme, it will not load at all -- the user's browser isn't smart enough to find it in the default theme.// +
- +
-==== Image Inheritance ==== +
- +
-As of this writing, images do NOT follow the same inheritance rules as template and CSS files. ​ Their paths are explicitly set, and many of them exist entirely outside of the theme folders. ​ This may be worth revisiting at some point -- an {image} Smarty function similar to {css} could be helpful. ​ For now, though, be careful about using relative paths to images if you are not sure which version of a template or CSS file is going to be loaded.+
legacy/vufind_1.x_developer_manual/user_interface_customization.1258123648.txt.gz · Last modified: 2014/06/13 13:12 (external edit)