
StudioPress Review, Part 3: Genesis Child Frameworks Suck
Given all of the bragging about what the Genesis framework is, and how it supposedly makes a web designer’s life easier, it’s odd how any and all code samples have been left out.
Notice that you are never shown any code. Even in the forum, the code is rarely shown. It’s just another example of how StudioPress is dishonest with its buyers and potential buyers; it’s dishonesty by omission.
As was mentioned on the previous editorial, the best part of WordPress — the reason it got so popular — was that it separated design from function from content. Yet StudioPress found a way to re-merge function and design, and made it difficult/impossible in the process.
Below you’ll find several samples of the current StudioPress themes, compared to the Revolution/StudioPress themes of yesteryear, as well as other current themes from other authors. So before you make the mistake of buying it, ask yourself this: Is this really want I want to edit? Because honestly, it’s almost easier to just write a theme from scratch!
Note: If you’re planning to skim the editorial, and are only looking for suggestions on which themes to use, then here it is: ThemeForest, Elegant Themes, Gabfire Themes, FlexiThemes, AppThemes and Graph Paper Press. Each of those has numerous easy-to-customize themes. ThemeForest alone has hundreds of excellent themes from several respected authors; it succeeds where StudioPress fails.
Revolution Themes, Early StudioPress Themes
What made Revolution such a great theme was a combination of factors:
- It looked good — slick, professional, not gaudy, not gimmicky, etc
- It had excellent, well-organized code — example: styles.css, home.php
- When something was complicated, it had ample mark-ups notes — example: breadcrumbs
If you wanted to change the homepage, for example, that was easy to do — simply change CSS as desired (styles.css), and then make changes to home.php in WordPress. Add, remove or manipulate PHP and/or HTML as needed. That’s how most themes were, and are to this day.
Here’s the home.php file from Allure, one of the pre-Genesis StudioPress magazine-style themes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<?php get_header(); ?> <div id="wrap"> <div id="content"> <div id="homepage"> <?php // code that checks to see if the Featured Content Gallery plguin is enabled - if it isn't, nothing will diplay ?> <?php if (function_exists('gallery_styles')) : ?> <div id="fcg"> <?php include (ABSPATH . '/wp-content/plugins/featured-content-gallery/gallery.php'); ?> </div> <?php endif; ?> <?php // end code ?> <div class="homepageleft"> <h3><?php echo cat_id_to_name(get_theme_mod('featured_bottom_left')); ?></h3> <div class="homebox"> <?php $recent = new WP_Query("cat=".get_theme_mod('featured_bottom_left')."&showposts=".get_theme_mod('featured_bottom_left_num')); while($recent->have_posts()) : $recent->the_post();?> <?php if( get_post_meta($post->ID, "thumb", true) ): ?> <a href="<?php the_permalink() ?>" rel="bookmark"><img class="thumb" src="<?php bloginfo('template_directory'); ?>/tools/timthumb.php?src=<?php echo get_post_meta($post->ID, "thumb", $single = true); ?>&h=<?php echo get_theme_mod('featured_bottom_left_thumb_height'); ?>&w=<?php echo get_theme_mod('featured_bottom_left_thumb_width'); ?>&zc=1" alt="<?php the_title(); ?>" /></a> <?php else: ?> <?php endif; ?> <h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2> <?php the_content_limit(120, ""); ?> <hr/> <?php endwhile; ?> <?php if(get_theme_mod('featured_bottom_left')) : ?> <strong><a href="<?php echo get_category_link(get_theme_mod('featured_bottom_left')); ?>" rel="bookmark"><?php _e("More Posts From ", 'studiopress'); echo get_cat_name(get_theme_mod('featured_bottom_left')); ?></a></strong> <?php endif; ?> </div> </div> <div class="homepageright"> <h3><?php echo cat_id_to_name(get_theme_mod('featured_bottom_right')); ?></h3> <div class="homebox"> <?php $recent = new WP_Query("cat=".get_theme_mod('featured_bottom_right')."&showposts=1"); while($recent->have_posts()) : $recent->the_post();?> <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> <?php the_content(__('Read more'));?> <?php endwhile; ?> <h4><?php _e("More", 'studiopress'); ?> <?php echo cat_id_to_name(get_theme_mod('featured_bottom_right')); ?></h4> <ul> <?php $recent = new WP_Query("cat=".get_theme_mod('featured_bottom_right')."&showposts=".get_theme_mod('featured_bottom_right_num')."&offset=1"); while($recent->have_posts()) : $recent->the_post();?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ul> </div> </div> <div class="clear"></div> </div> <?php get_sidebar(); ?> </div> <?php get_footer(); ?> |
Notice that it’s nothing unusual — some WordPress PHP syntax, some DIVs for styling, and a little bit of HTML. I could easily change some or all of that in a matter or hours, making a custom site. Again, all that’s required to change the homepage is editing home.php.
It’s a nice wireframe to build your own custom site.
Complexity 2 Theme from ThemeForest
The Complexity Theme is one of the nicest and most feature-rich themes on Theme Forest. It can make portfolios; present video, audio, and photo content; and has a wide array of presentation options — lightboxes, slideshows, font options and more. Kudos to that author for doing such a nice job on it!
While that theme doesn’t have a home.php, instead uses the index.php, and page templates are used for the inner pages. It’s not really complicated, contrary to its name — you can edit just one file to customize as desired. For example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
<?php get_header(); ?> <!-- HOMEPAGE SLIDESHOW (start) --> <?php if( $themeblvd_default_homepage_slideshow == 'showslideshow' ) : ?> <?php $home_slideshow_options = array ( 'slideshow' => $themeblvd_default_homepage_taxonomy, 'size' => 'slideshow-large', 'transition' => $themeblvd_featured_transition, 'speed' => $themeblvd_featured_autoplay_duration, ); echo complexity_slideshow($home_slideshow_options); ?> <?php elseif( $themeblvd_default_homepage_slideshow == 'htmlblock' ) : ?> <div id="slideshow-wrapper"> <div class="pad"> <?php echo stripslashes($themeblvd_default_homepage_custom_html); ?> </div><!-- .pad (end) --> </div><!-- #slideshow-wrapper (end) --> <?php endif; ?> <!-- HOMEPAGE SLIDESHOW (end) --> <!-- PRIMARY CONTENT (start) --> <div id="primary"> <!-- HOMEPAGE SORTABLE ELEMENTS (start) --> <?php foreach($themeblvd_homepage_sort as $element) : switch($element) : ############################################################## # SLOGAN ############################################################## case "slogan" : ?> <!-- SLOGAN (start) --> <div id="slogan"> <div class="slogan-text<?php if(!$themeblvd_homepage_slogan_button) {echo " slogan-center";} ?>"> <?php echo stripslashes($themeblvd_homepage_slogan); ?> </div><!-- .slogan-text (end) --> <?php if($themeblvd_homepage_slogan_button) : ?> <div class="slogan-button"> <a href="<?php echo $themeblvd_homepage_slogan_link; ?>" title="<?php echo $themeblvd_homepage_slogan_button; ?>" class="button"> <?php echo stripslashes($themeblvd_homepage_slogan_button); ?> </a> </div><!-- .slogan-button (end) --> <?php endif; ?> <div class="clear"></div> </div><!-- #slogan (end) --> <!-- SLOGAN (end) --> <?php break; ?> <?php ############################################################## # WIDGETS ############################################################## case "widgets" : ?> <!-- WIDGETS COLUMNS (start) --> <div id="default-home-widget-area"> <!-- Home Widgets (start) --> <?php themeblvd_widget_columns_display("homepage", $themeblvd_homepage_columns); ?> <!-- Home Widgets (end) --> <div class="clear"></div> </div><!-- #home-widget-area (end) --> <!-- WIDGETS COLUMNS (end) --> <?php break; ?> <?php ############################################################## # PAGE CONTENT ############################################################## case "page" : ?> <!-- PAGE CONTENT (start) --> <div id="home-content"> <div id="full-width-content"> <div class="pad"> <?php if($themeblvd_homepage_page_id) : ?> <?php $page = get_page($themeblvd_homepage_page_id); ?> <?php echo apply_filters('the_content', $page->post_content); ?> <?php else : ?> <p class="warning"> <?php _e("You need to select a page to pull content from for this area or hide this section all together. You can do all this in the Homepage section of your theme options page.", "themeblvd"); ?> </p> <?php endif; ?> <div class="clear"></div> </div><!-- .pad (end) --> </div><!-- #full-width-content (end) --> </div><!-- #home-content (end) --> <!-- PAGE CONTENT (end) --> <?php break; ?> <?php ############################################################## # PORTFOLIO ############################################################## case "portfolio" : ?> <!-- HOMEPAGE PORTFOLIO (start) --> <div id="portfolio"> <?php echo complexity_portfolio($themeblvd_homepage_portfolio, $themeblvd_homepage_portfolio_num, $themeblvd_thumbnail, $themeblvd_show_title, $themeblvd_show_excerpt, $themeblvd_show_read_more, $themeblvd_media_color, $themeblvd_video_logo, $themeblvd_video_logo_width, $themeblvd_video_logo_height); ?> <!-- clear just in case portfolio items not divisable by 3 --> <div class="clear"></div> <!-- Link to Blog --> <?php if($themeblvd_homepage_portfolio_link == 'yes') : ?> <div class="nav-entries"> <a href="<?php echo $themeblvd_homepage_portfolio_url; ?>" title="<?php echo $themeblvd_homepage_portfolio_text; ?>"> <?php echo $themeblvd_homepage_portfolio_text; ?> </a> </div> <?php endif; ?> </div><!-- #portfolio (end) --> <div class="clear"></div> <!-- HOMEPAGE PORTFOLIO (end) --> <?php break; ?> <?php ############################################################## # BLOG + SIDEBAR ############################################################## case "blog" : ?> <!-- HOMEPAGE BLOG (start) --> <?php if($themeblvd_sidebar == 'left') : ?> <?php get_sidebar(); ?> <?php endif; ?> <div id="content"> <div class="pad"> <?php if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } elseif ( get_query_var('page') ) { $paged = get_query_var('page'); } else { $paged = 1; } //Blog it up global $more; $more = 0; query_posts( array( 'post_type' => 'post', 'paged' => $paged) ); if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div class="entry"> <h3><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3> <span class="author-box"> <span class="date"><?php _e('Posted on', 'themeblvd'); ?> <?php the_time( get_option('date_format') ); ?> <?php _e("by", "themeblvd"); ?> <?php the_author(); ?></span> <?php if( comments_open() ): ?> <a href="<?php the_permalink(); ?>#comments-wrap" class="comments-link"><?php comments_number('No Comments', '1 Comment', '% Comments'); ?></a> <?php endif; ?> </span> <div class="description"> <?php if ( has_post_thumbnail() ) : ?> <?php if($themeblvd_blog_thumb == 'square') : ?> <?php the_post_thumbnail('blog', array('class' => 'pretty')); ?> <?php else : ?> <?php the_post_thumbnail('blog-stretch', array('class' => 'pretty stretch')); ?> <?php endif; ?> <?php endif; ?> <?php if($themeblvd_blog_content == 'content') : ?> <?php the_content(); ?> <?php else : ?> <?php the_excerpt(); ?> <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="button"> <?php _e('Read more', 'themeblvd'); ?> </a> <?php endif;?> </div><!-- .description (end) --> <div class="clear"></div> </div><!-- .entry (end) --> <?php endwhile; ?> <div class="clear"></div> <!-- Link to Blog --> <?php if($themeblvd_homepage_blog_link == 'yes') : ?> <div class="nav-entries"> <a href="<?php echo $themeblvd_homepage_blog_url; ?>" title="<?php echo $themeblvd_homepage_blog_text; ?>"> <?php echo $themeblvd_homepage_blog_text; ?> </a> </div> <?php endif; ?> <?php else : ?> <p class="warning"> <?php _e('There are no posts to show.', "themeblvd"); ?> </p> <?php endif; ?> </div><!-- .pad (end) --> </div><!-- #content (end) --> <?php if($themeblvd_sidebar == 'right') : ?> <?php get_sidebar(); ?> <?php endif; ?> <div class="clear"></div> <!-- HOMEPAGE BLOG (end) --> <?php break; ?> <?php endswitch; endforeach; ?> <!-- HOMEPAGE SORTABLE ELEMENTS (end) --> <?php get_footer(); ?> |
Notice all of the markup that’s been commented out for users. Things like that are extremely helpful when editing a theme! And although our site removes space/indentation, the code has plenty of it. For example, all of the if/then/else statements are spread across multiple lines, to make it easier to understand.
The theme is very, very nice:
StudioPress Genesis Framework
The StudioPress Genesis framework and child themes are, by contrast, a mess.
- For one, all of the code is spread across a minimum of two theme folders.
- The framework contains some of the code. The child theme may or may not override that code.
- When the framework is missing the code, the child theme has the new added code.
- And sometimes — CSS, for example — neither one appears to have the code.
And that’s just the beginning!
- The child theme folder has very few files present, The Focus theme, for example, has only functions.php, home.php, and styles.css
This is home.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php remove_action( 'genesis_loop', 'genesis_do_loop' ); add_action( 'genesis_loop', 'focus_grid_loop_helper' ); /** Add support for Genesis Grid Loop */ function focus_grid_loop_helper() { if ( function_exists( 'genesis_grid_loop' ) ) { genesis_grid_loop( array( 'features' => 2, 'feature_image_size' => 0, 'feature_content_limit' => 0, 'grid_image_size'Â Â Â Â Â Â => 'grid-thumbnail', 'grid_image_class'Â Â Â Â Â Â => 'alignnone', 'grid_content_limit' => 250, 'more' => __( '[Continue reading]', 'genesis' ), 'posts_per_page' => 6, ) ); } else { genesis_standard_loop(); } } genesis(); |
Let’s look in the framework! Here’s index.php
1 2 3 4 5 6 7 8 9 |
<?php /** * WARNING: This file is part of the core Genesis framework. DO NOT edit * this file under any circumstances. Please do all modifications * in the form of a child theme. * * Index template, initialises Genesis. * * @package Genesis */ genesis(); |
To actually find anything, you’ll have to:
- Look up code with the Firebug browser add-on, or a browser’s native “inspect element” feature,
- Use a freeware tool like grepWin to search through the theme folders,
- And hope it’s the right one if multiples are present.
Everything is wrapped in Genesis code, in little snippets here and there. The full page is never in a single location, where it can be easily edited. Many times, the code that controls a single page is in multiple files.
Focus isn’t even a fancy, feature-rich theme. It’s just a blog!
Conclusion
Of all the WordPress themes out there, free or premium, I’ve never seen something as screwy as Genesis. It’s really not a WordPress theme, but a PHP template and application system built on top of WordPress. It’s proprietary, it’s hard to edit, and it’s overall a nuisance.
ThemeForest alone has a huge selection of themes that are easy to edit, look great, have more features, and are about half of StudioPress $80 price tag ($45 each). It’s an inferior product that costs more.
And on a final note, I want to mention hosting…
In addition to getting a good theme for your WordPress site, make sure you’re using good hosting! Don’t get an “unlimited” host owned by EIG, or a brand like Godaddy or 1&1 Internet. Don’t use HostGator, BlueHost, JustHost, Fatcow, etc — they’re all owned by EIG, and they all have slow page load times that hurts your SEO and frustrate your users. There are better hosts! If you want unlimited, stick to a reputable company like Site5 or JaguarPC. Or use a host like StableHost, where your resource allocations (space/bandwidth) are guaranteed.
Have comments or feedback? — Be sure to share your thoughts at this forum post.
Read more:
- Part 1: The Decline of Revolution Themes
- Part 2: Missing Code, Regurgitations, and As-Is Templates
- Part 3: Sample Code: StudioPress vs. Others
Copyright Notice: All guides, articles and editorials found on digitalFAQ.com are copyright by The Digital FAQ and/or the respective authors. Articles may not be copied, borrowed, full-quoted or reproduced in any manner, online or in print, which includes blogs and forums, without the written email consent of Site Staff (which may or may not be given, for free or fee). Know that digitalFAQ.com staff does routinely monitor online plagiarism, and we do send takedown notices to site admins and/or web hosts (DMCA et al legal actions) as is necessary. If you would like for others to read articles found on The Digital FAQ, simply link to our content. (Note: Printouts for personal use is specifically allowed.)
Article Category: Web Design and Development
Article Tags: CSS, PHP, StudioPress, WordPress