I received the following email from a developer yesterday.
As a newcomer to the web world and genesis included, I’m attempting to learn from others and looking at great designs that inspire me. This brings me to my question. Would you be willing to share your experience or even go as far as sharing your code for your custom designed portfolio page here?
After writing out my response, I figured others might be interested as well. Here’s the code, followed by a description of what each function does below.
First, the functions.php file:
be_portfolio_query()customizes the query on the portfolio pages. This must go in functions.php since it needs to run before main query, which happens before the template is determined. More information on customizing the query.
I specify the post type so the projects show up on the taxonomy archive pages AND so that the archive-projects.php file is used for the taxonomy archive pages. I could’ve also done this second part using the template_include filter.
be_portfolio_body_class()adds a consistent body class to all the pages using this template, for styling (if I didn’t use this, I’d have to write styles with body.post-type-archive-projects and body.tax-type )
be_collect_testimonials(), I wanted to display a testimonial between certain projects, and wanted that testimonial to be from one of the projects featured on this page. So before the projects are listed, I loop through them all and pull out all the testimonials. I can then use this in a function lower down in the page
be_sort_projects()adds the links before the project listing that lets you go from the main portfolio (all projects) to one of the taxonomy archives
be_project_post_classes()– This looks at the loop counter and adds column classes to the posts, breaking it into multiple columns. See this tutorial for more information.
be_outer_wrap_close()add a wrapping div around all the posts and testimonials so they can be cleared with CSS
be_project_archive_content()is the content of each project. It has the image and then displays the taxonomy terms (Project Type) below it
be_project_divider()adds a dividing line after every 3 posts, except after the 6th one (where a testimonial is the divider)
be_project_quote()adds a testimonial after the 6th project (it’s #5 since it starts counting at 0) OR after the last project if there are less than 6. I also have it choosing different testimonials for different taxonomies so the same testimonial isn’t used on every page