I've built a wordpress child theme for a client and currently deploy each version as a manual .zip theme upload by having to rename each .zip file to a unique identifier (i.e. newtheme-2017-06-07.zip) and then deleting the previous version manually.
Is there a way to upload child themes via wordpress admin so that it overwrites any theme with the same name? I don't want to be going down the route of using FTP to manually overwrite the theme.
I'd also be keen to hear how the update API works so that a customer gets alerted in the admin section that an update is available. So far my searches have been particularly unsuccessful.
Any advice or pointers would be much appreciated!
I am creating a drupal theme and use role theme switcher to change the theme according to user role
for the the role anonymous I've created a custom theme
the theme html script does not change whatever the changes I make
I've cleared the cache from performance
remove the cache from administrator->performance clear cache
change the default theme to new and fresh theme ( I am using zen) and run module and its custom theme
it may need modification in css or js files
Heed Drupal's unofficial moto when developing a theme:
Also, there are many base themes (Zen for instance) which have a setting to clear the cache on every page request during theme development. You turn this off once the theme is completed, but it's a nice feature when you're still working on things to avoid caching issues.
I've followed this tutorial for creating Private WordPress themes that check for updates
http://w-shadow.com/blog/2011/06/02/automatic-updates-for-commercial-themes/ everything is working fine. However I've hit a bit of problem with this method and wondered if there is a solution.
Because the function to check is in the themes functions.php it only runs if the theme is active meaning that the push notification do not work on multisite's network admin or if the theme is not currently being used.
Is there anyway to solve this?
You have 2 options:
Ship a plugin with the theme that is installed separately. Use this plugin to update your theme(s), that way your theme files will be updates regardless of whether it is active or not.
If you aren't distributing your theme publicly, and it's only used on your own sites then you could easily write your own cron task that runs the update script - but that depends on your situation
I'd like to restrict a child theme to only being visible to me, the admin, for development purposes. Then I can make changes, upload and view them live and on the site without other people seeing those unfinished changes. Once I'm done, I take the affected files and move them to the Parent Theme's folder to make the changes visible to everyone.
Is this possible with some kind of script through functions.php?
And I'm not just talking about enqueuing the style.css file, I'm talking about setting up a complete child theme with sidebar.php, header.php etc. and only have the child theme files being loaded for me, the admin, for development purposes. Perhaps a way to define the child theme directory, embedded inside a condition that checks whether the user is admin.
Thank you :)
There is a plugin that does what you are looking for called Theme Test Drive. I haven't used it before but I think it uses some filters to update the theme at runtime for logged-in admin users.
Essentially, you install your new theme and activate it using the plugin instead of the theme switcher in the admin.
I'm in the process of learning php and creating themes.
Unfortunately, while I was editing a theme that i was currently using in drupal, I made a mistake in the theme such that nothing shows up anymore, even if i were to hit drupal/index.php. I want to change my broken drupal theme to a working one but i'm unable to do so because I can't even view the administration section.
The How To reset your theme via the database page on Drupal.org has instructions for changing your theme directly from the SQL prompt.
It's not immediately clear whether this will work in the most recent version of Drupal, so back up your database before attempting this.
The easiest way to change your frontend theme is to set it in your sites/default/settings.php:
$conf['theme_default'] = 'minelli';
In terms of sorting your current problem, here's a simple way to do it that should work... Let's say your current theme is called "custom_theme".
Go to your theme directory ("sites/default/themes" probably)
Backup your development theme (i.e. move it elsewhere, if you're using Linux command line do something like "mv custom_theme custom_theme.bak")
Copy the garland theme to here and name it the same as your broken theme (if using LInux command line, something like this should work "cp -a ../../../themes/garland ./custom_theme"
Try viewing your site now. It should now use garland instead of your broken theme.
As others have said before, it's also highly recommended that you use a different theme for admins as you do for normal users (in case you break stuff). Select a safe admin theme (like garland) and then you can nearly always get to the admin interface if you're playing with theming.
Or if you are using Drupal 6, removing/moving the broken theme folder will make Drupal change the theme to the default theme (Garland).
Maybe using two themes in parallel will help.
Set one for the "user frontend" - the one you are developing at /admin/build/themes, another one standard, like garland, which you are NOT going to change, as a "administration backend": /admin/settings/admin.
If you happen to break the theme you're developing, you just go to the admin area (/admin), it will switch back to garland.
you can also insert a new login form in your theme by including this code:
`<?php
if(!user_is_logged_in() ){
print drupal_render(drupal_get_form('user_login'));
}else{
print "You are already logged in!";
}?>`
anywhere in the page.tpl.php file of your broken theme, then register with your admin credentials ;)
Please also see the following stack over flow issue.
it is related to them
Changing Drupal's theme and keeping Garland as the admin theme?
Changing the Admin Theme in Drupal 6 Directly in Database
Now here is solution :
Remove the files of the bad theme and clear the cache. After clearing the cache you will be able to login again.
The main difficulty is that you have to clear the cache without being logged in.
Try one of the methods for clearing the cache described in
Clearing Drupal's cache
IF Not then Try this one :
If you have drush, the command to type would be
drush vset theme_default garland
Either on the commandline, or via an administration interface (eg PHPMyAdmin) enter the following query
UPDATE system SET status=1 WHERE name = 'garland';
Then either:
UPDATE variable SET value='s:7:"garland"' WHERE name = 'theme_default';
TRUNCATE cache;
TRUNCATE cache_bootstrap;
TRUNCATE cache_block;
Note that 's:7' refers to the length of the following string. Modify as needed. This is database surgery, tricky stuff.
OR
If you are using per-user themes, and you've just messed it up for yourself as admin, try
UPDATE users SET theme='garland' WHERE uid = '1';
Be careful, as getting either of those lines wrong can mess things up just as badly.
Cheers!
Mudassar Ali
As far as I know, theme settings are stored in the database, as well for each individual user. The quickest way to get rid of a theme is probably removing it from the theme path.
Just move it onto your desktop and Drupal should be able to detect that your requested theme is missing and point you to the default instead.
Update: Tried this on my Drupal 5 installation, it turned out 'clean'. I suggest copying a working Drupal theme into your theme directory (make a copy first).
It's worth mentioning that if you're using the "Sections" module to apply different themes to different parts of the site, the instructions given on the Drupal site won't necessarily work — you may find that moving the problem theme directory out of the way is the only method of seeing the admin interface properly.