By default, sticky posts only stick to the top of the first page of the main blog posts index.
The easiest way to show sticky posts in other contexts is probably via a custom loop, e.g.:
$sticky_posts = new WP_Query( array(
'post__in' => get_option( 'sticky_posts' )
) );
if ( $sticky_posts->have_posts() ) : while ( $sticky_posts->have_posts() ) : $sticky_posts->the_post() );
// Loop markup here
endwhile; endif;
// IMPORTANT
wp_reset_postdata();
You would place that before your normal loop output, and wrap it in any conditionals that you might need (to account for context, pagination, etc.)