Advanced Theming
HTMLy almost can list any posts based tag, category, author, or type. You just need to read the /system/functions.php
to know any get
helper.
HTMLy also automatically include the functions.php
if this file exist in theme folder. When naming the function in theme functions.php
, use themeName_functionName()
, to make sure not conflicted with existing function
Get Specific Posts by Tag
We can display list of posts by tag by using built in function:
// $tag = the tag slug
// $page = the page
// $perpage = how many posts
// $random = true or false
get_tag($tag, $page, $perpage)
Let say we already have Featured
tag and we want displayed it as posts list.
// get the posts with featured tag
// as 1 page, 4 posts, random false
<?php $featured = get_tag('featured', 1, 4);?>
<?php foreach($featured as $f):?>
// the div etc. goes here.
<div class="content">
<div class="title"><?php echo $f->title; ?></div>
//etc....
</div>
<?php endforeach;?>
Get Specific Posts by Category
We can display list of posts by category:
// $category = the category slug
// $page = the page
// $perpage = how many posts
get_category($category, $page, $perpage)
Let say we want to display HTMLy category.
// get the posts categorized as htmly
// as 1 page, 4 posts
<?php $htmly= get_category('htmly', 1, 4);?>
<?php foreach($htmly as $h):?>
// the div etc. goes here.
<div class="content">
<div class="title"><?php echo $h->title; ?></div>
//etc....
</div>
<?php endforeach;?>
Other Get Helper
By Specific Keyword (Search)
get_keyword($keyword, $page, $perpage)
By Specific Type (image, video etc.)
get_type($type, $page, $perpage)
By Author
// $name = username
get_profile_posts($name, $page, $perpage)
Get Image From Post
If the content type is image
by printing:
<?php echo $p->image; ?>
will outputting the featured image. We can get an image from regular post or even video thumbnail by calling this function:
get_image($text)
If in post than it become:
get_image($p->body)
Get Specific Static page
find_page($static)
Example get "about" page. Always use the slug.
$static = find_page('about');
Later we can display it:
<div>
<?php echo $static['current']->title;?>
</div>
For availabe tag see theme variable for static.html.php
Get specific static sub page
<?php $mySub = find_subpage('parent-page-slug', 'sub-page-slug'); ?>
<?php echo $mySub['current']->body;?>
Displaying sub pages in parent page
Perhaps you want to displaying the subpage link or even the content in parent page.
<?php if (isset($is_page)):?>
<?php $subPages = find_subpage($p->slug); ?>
<div class="container">
<div class="row">
<?php foreach ($subPages as $sp):?>
<div class="col-lg-6" style="margin-bottom:2em;">
<div class="card">
<h3 class="card-header"><a href="<?php echo $sp->url;?>" style="color:#1a1a1a;"><?php echo $sp->title;?></a></h3>
<a href="<?php echo $sp->url;?>"><img height="200px" style="object-fit: cover;" class="card-img-top" src="<?php echo get_image($sp->body);?>" alt="<?php echo $sp->title;?>"></a>
<div class="card-body">
<a href="<?php echo $sp->url;?>" class="btn btn-outline-info">Info</a> <a href="<?php echo $sp->url;?>#download" class="btn btn-outline-primary">Download</a> <?php if (login()) { echo '<span><a class="btn btn-info" href="'. $sp->url .'/edit?destination=post">Edit</a></span>'; } ?>
</div>
</div>
</div>
<?php endforeach;?>
</div>
</div>
<?php endif;?>
Demo: HTMLy theme page.
Note: the available variable is like on regular static or sub page.