18 Nov 2015

Wordpress Template Hierarchy

The Template Hierarchy In Detail #

While the template hierarchy is easier to understand as a diagram, the following sections describe the order in which template files are called by WordPress for a number of query types.

Home Page display #

By default, WordPress sets your site’s home page to display your latest blog posts. This page is called the blog posts index. You can also set your blog posts to display on a separate static page. The template file home.php is used to render the blog posts index, whether it is being used as the front page or on separate static page. If home.php does not exist, WordPress will use index.php.
  1. home.php
  2. index.php
Note: If front-page.php exists, it will override the home.php template.

Front Page display #

The front-page.php template file is used to render your site’s front page, whether the front page displays the blog posts index (mentioned above) or a static page. The front page template takes precedence over the blog posts index (home.php) template. If the front-page.php file does not exist, WordPress will either use the home.php orpage.php files depending on the setup in Settings → Reading. If neither of those files exist, it will use the index.php file.
  1. front-page.php – Used for both “your latest posts” or “a static page” as set in the front page displays section of Settings → Reading.
  2. home.php – If WordPress cannot find front-page.php and “your latest posts” is set in the front page displays section, it will look for home.php. Additionally, WordPress will look for this file when the posts page is set in thefront page displays section.
  3. page.php – When “front page” is set in the front page displays section.
  4. index.php – When “your latest posts” is set in the front page displays section but home.php does not exist or when front page is set but page.php does not exist.
As you can see, there are a lot of rules to what path WordPress takes. Using the chart above is the best way to determine what WordPress will display.

Single Post #

The single post template file is used to render a single post. WordPress uses the following path:
  1. single-{post-type}-{slug}.php – (Since 4.4) First, WordPress looks for a template for the specific post. For example, if post type is product and the post slug is dmc-12, WordPress would look for single-product-dmc-12.php.
  2. single-{post-type}.php – If the post type is product, WordPress would look for single-product.php.
  3. single.php – WordPress then falls back to single.php.
  4. singular.php – Then it falls back to singular.php.
  5. index.php – Finally, as mentioned above, WordPress ultimately falls back toindex.php.

Page #

The template file used to render a static page (page post-type). Note that unlike other post-types, page is special to WordPress and uses the following patch:
  1. custom template file – The page template assigned to the page. Seeget_page_templates().
  2. page-{slug}.php – If the page slug is recent-news, WordPress will look to use page-recent-news.php.
  3. page-{id}.php – If the page ID is 6, WordPress will look to use page-6.php.
  4. page.php
  5. singular.php
  6. index.php

Category #

Rendering category archive index pages uses the following path in WordPress:
  1. category-{slug}.php – If the category’s slug is news, WordPress will look forcategory-news.php.
  2. category-{id}.php – If the category’s ID is 6, WordPress will look forcategory-6.php.
  3. category.php
  4. archive.php
  5. index.php

Tag #

To display a tag archive index page, WordPress uses the following path:
  1. tag-{slug}.php – If the tag’s slug is sometag, WordPress will look for tag-sometag.php.
  2. tag-{id}.php – If the tag’s ID is 6, WordPress will look for tag-6.php.
  3. tag.php
  4. archive.php
  5. index.php

Custom Taxonomies #

Custom taxonomies use a slightly different template file path:
  1. taxonomy-{taxonomy}-{term}.php – If the taxonomy is sometax, and taxonomy’s term is someterm, WordPress will look for taxonomy-sometax-someterm.php. In the case of post formats, the taxonomy is ‘post_format’ and the terms are ‘post-format-{format}. i.e. taxonomy-post_format-post-format-link.php for the link post format.
  2. taxonomy-{taxonomy}.php – If the taxonomy were sometax, WordPress would look for taxonomy-sometax.php.
  3. taxonomy.php
  4. archive.php
  5. index.php

Custom Post Types #

Custom Post Types use the following path to render the appropriate archive index page.
  1. archive-{post_type}.php – If the post type is product, WordPress will look for archive-product.php.
  2. archive.php
  3. index.php
(For rendering a single post type template, refer to the single post display section above.)

Author display #

Based on the above examples, rendering author archive index pages is fairly explanatory:
  1. author-{nicename}.php – If the author’s nice name is matt, WordPress will look for author-matt.php.
  2. author-{id}.php – If the author’s ID were 6, WordPress will look for author-6.php.
  3. author.php
  4. archive.php
  5. index.php

Date #

Date-based archive index pages are rendered as you would expect:
  1. date.php
  2. archive.php
  3. index.php

Search Result #

Search results follow the same pattern as other template types:
  1. search.php
  2. index.php

404 (Not Found) #

Likewise, 404 template files are called in this order:
  1. 404.php
  2. index.php

Attachment #

Rendering an attachment page (attachment post-type) requires following the follow path:
  1. MIME_type.php – it can be any MIME type (For example: image.php,video.phpapplication.php). For text/plain, the following path is used (in order):
    1. text.php
    2. plain.php
    3. text_plain.php
  2. attachment.php
  3. single-attachment.php
  4. single.php
  5. index.php

Filter Hierarchy #

The WordPress template system lets you filter the hierarchy. This means that you can insert and change things at specific points of the hierarchy. The filter (located in theget_query_template() function) uses this filter name: "{$type}_template"where $type is a file name in the hierarchy without the .php extension.
Here is a complete list of all template types in the filter hierarchy:
  • index_template
  • 404_template
  • archive_template
  • author_template
  • category_template
  • tag_template
  • taxonomy_template
  • date_template
  • home_template
  • front_page_template
  • page_template
  • paged_template
  • search_template
  • single_template
  • text_template, plain_template, text_plain_template (all mime types)
  • attachment_template
  • comments_popup

Example #

For example, let’s take the default author hierarchy:
  • author-{nicename}.php
  • author-{id}.php
  • author.php
To add author-{role}.php before author.php, we can manipulate the actual hierarchy using the ‘author_template’ template type. This allows a request for /author/username where username has the role of editor to display using author-editor.php if present in the current themes directory.

17 Sept 2015

Magento. Display new products on the home page (block)

Open Magento admin panel
Go to CMS>Pages>Home page
Switch to the content tab
Insert the following code:

{{block  type="catalog/product_new" column_count="6"  products_count="12" name="home.catalog.product.new"  alias="product_homepage"  template="catalog/product/list.phtml"}}


Where:

column_count="6" – number of the product columns
products_count="12" – number of the displayed products

25 Aug 2015

Get all pictures in the source code of a web page(Firefox)

In Firefox, without any add-ons:

>>menu Tools » Page Info (Command-I on a Mac) (Ctrl + I on a Windows), tabsheet Media.

This also gives you a Save As button for media that cannot be right-clicked on the site itself.

21 Aug 2015

Redirect non-www to www URLs using htaccess/web.config (Apache/IIS)

On an Apache server

Most users reading this article will likely be on an Apache server. Here are the steps you'll need.
Use your host's file manager or an FTP program to access your .htaccess file. Note that it has a dot preceding it.
If you don't find, check to see if there's a htaccess.txt file, which can be renamed to .htaccess if it came with your CMS (edit the file and check its contents to be sure). If there isn't a htaccess.txt file either, simply create a new file called .htaccess.
Then simply insert either of the following lines and modify the code with your domain:
Redirect non-www to www
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]
Redirect www to non-www
RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [L,R=301]
If you had a "RewriteEngine On" in your htaccess file already, insert the above code just after the line reading: "RewriteEngine On".
Afterward, check your site (including some internal pages) and try different www and non-www combinations of your domain to see if the redirect is working as expected.

On an IIS server
On a Windows (IIS) server, find your web.config file and make the following rule changes to your rules tag:
Redirect non-www to www

 <configuration>
 <system.webServer>
 <rewrite>
 <rules>
 <rule name="Redirect to www" stopProcessing="true">
 <match url=".*" />
 <conditions>
 <add input="{HTTP_HOST}" pattern="^yourdomain.com$" />
 </conditions>
 <action type="Redirect" url="http://www.yourdomain.com/{R:0}"
 redirectType="Permanent" />
 </rule>
 </rules>
 </rewrite>
 </system.webServer> 
 </configuration>
 
Redirect www to non-www

 <configuration>
 <system.webServer>
 <rewrite>
 <rules>
 <rule name="Redirect to non-www" stopProcessing="true">
 <match url=".*" >
 <conditions>
 <add input="{HTTP_HOST}" pattern="^yourdomain\.com$" />
 </conditions>
 <action type="Redirect" url="http://yourdomain.com/{R:0}" redirectType="Permanent" />
 </rule>
 </rules>
 </rewrite>
 </system.webServer> 
 </configuration>
 
Afterward, check your site, including some internal pages, and try different www and non-www combinations of your domain to see if the redirect is working as expected.