Create a fully themeable symfony1 application
If you want create a fully themeable application with Symfony1
with a great separation between logic and graphic edit your application
configuration class, e.g. frontendConfiguration.class.php
and add this methods.
public function getTemplateDirs($moduleName) {
$dirs = parent::getTemplateDirs($moduleName);
$appName = $this->getApplication();
$template = sfConfig::get('sf_root_dir') . DIRECTORY_SEPARATOR .'themes' . DIRECTORY_SEPARATOR . sfConfig::get('app_theme_name', 'default') . DIRECTORY_SEPARATOR . 'apps/' . $appname . '/modules/' . $moduleName . '/templates';
return array_unshift($dirs,$template);
}
public function getDecoratorDirs() {
$dirs = parent::getDecoratorDirs();
$appname = $this->getApplication();
$decorator = sfConfig::get('sf_root_dir') . DIRECTORY_SEPARATOR . 'themes' . DIRECTORY_SEPARATOR . sfConfig::get('app_theme_name', 'default') . DIRECTORY_SEPARATOR . 'apps/' . $appname . '/templates';
return array_unshift($dirs,$decorator);
}
Now you can create your templates and layouts inside your theme folder following the same rules of symfony:
For example, if your theme name is MyTheme
create layouts in /themes/MyTheme/apps/frontend/templates and
templates in /themes/MyTheme/apps/frontend/modules/[MODULENAME]/templates
Written by Andrea Puggioni
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Php
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#