1. Themes can be packaged into extension the same way as modules are packaged.
A theme is a customization of an interface. That means that theme will contain only components necessary for the customization.
A customization could be of different levels.
a) CSS/Images - in this case, only files in /skin/<interface>/<theme>/ folder that differ from original interface theme will be needed.
For missing files Magento will fallback to “default” theme or whatever is marked as default theme in the configuration for this store.
Currently Magento will recognize existance of the theme by folder app/design/<interface>/<theme> folder, so you will need to put there README.txt file or other small file that identifies your theme, and to be included in MagentoConnect extension package.
b) Templates - If there was an HTML change, files in /app/design/<interface>/<theme>/template should be included. Again, Magento will fallback to the default theme for missing files. It is suggested to keep all templates made by you in specially designated folder uniquely named similar to your themes or extensions.
c) Layouts changes - If you include in your theme files in /app/design/<interface>/<theme>/layout, the default theme layout update files with same names will not be loaded. That means you will have to include all layout updates in your files that were in original files. If you wish to ADD layout updates on top of default layouts, you should create a new layout XML file, or even a directory within /layout/ folder, if you intend on having more than few extensions or themes that involve layout updates. To let Magento know of your layout XML file, include a file in app/etc/modules/ folder named similarly to your theme that will include XML configuration in following suggested format:
d) Custom block functionality - for this you will need to create a module and add Block classes.
2. We expect documentation to be available in the months ahead. If you have any specific qustions, please don’t hesitate to ask and we’ll do our best to reply.
3. The extension release package file will be generated automatically after filling out the “Package Extension” form as explained in this page:
http://www.magentocommerce.com/wiki/packaging_a_magento_extension
It is also possible to just make a tarball with files needed for a theme and share with friends
“It is also possible to just make a tarball with files needed for a theme and share with friends”
Once we have the tarball, how would someone else install it? Just upload to their var/pear folder and load? I guess I am a bit confused on how people will install Commercial Extensions.
Well if you are just sharing a tarbell with friends all they have to do is untar it into the folders and it will be recognized automatically, granted you have to pick the theme to use but still. All that means is that you are just sharing the files as if you had developed it on your system. It just wouldn’t be in Magento Connect and you don’t necessarily have to package it up exactly as Magento Connect requires.
-Adam
EDIT: I also meant to say that you would just put untar the theme (if it is a theme) into your frontend/default/new_theme etc. (or frontend/new_interface/new_theme)
I would agree that the tarball would be for manual upload of files.
However Moshe I would like to know if the “load” package under Manage Extension > Package Extensions page in the magento admin can also be used to load custom packages that one would get from someone else or if it can only load packages that have been uploaded to magento connect?
great thread, this shows how easy it can be to make a theme. so if i am reading this right, the only thing i need to include are the files that i have changed or added, because everything else will default to default?