A skin package must meet certain conditions before it will install into the application. After the requirements are met, you can upload a compressed zip file containing your skin using the built-in File Manager, and the application will convert your files for use as a portal skin. The After the portal skins are successfully installed, they may be applied at several levels within the application — you can define a skin to be Host-, portal-, or page-level, depending on your needs.
Though skins can be applied at three separate levels, they can be stored in basically only two separate places on the file system. Where these files actually reside depends on where they are installed from and what portal you installed them on, if applicable.
When the skin is installed from the Host's Skins menu item — something that is only possible if you are logged in as a SuperUser — it is placed in the Portals/_default/Skins directory. During the skin install process, a folder is created in this directory matching the name of your zip file minus the .zip extension. This folder will contain the contents of your installed zip file, retaining the directory structure it had within this zip file. Please note that you can have a zip file of one name that contains a skins.zip file, which during the install process is stored in a folder with the same name as the zip file you uploaded. A skin package often has a master zip file such as skinpackage.zip that contains a skin.zip, so that the skin package can also contain a containers.zip, which includes all containers designed for the skin package. This installs the containers.zip following the same rules with the exception that it places the files in the Portals/_default/Containers folder instead.
If a skin is installed from the Admin's Skins menu item, the resulting folder will be placed in the Portals/PortalId/Skins directory. PortalId varies, depending on which portal you installed this on. If you are running only one portal on a DotNetNuke install, for example, this normally is named 0. Depending on your Host Settings, it may only be possible for a SuperUser to install skins at the portal level. Anywhere in the remainder of this chapter that you see Portals/PortalId/Skins, assume that you could also substitute _default for PortalId and accomplish the same thing, except the skin will be available at the Host level.
No matter which Skins menu item you used to install your skin package, the resulting directories are mapped to their corresponding skin ID, which uniquely identifies the skin in the application. These settings are stored in the Skins table in the database and enable the application to correctly determine the skin to load at runtime.