Before giving any solution I should thank Snowman22 on opencart.com as he mentioned truly, OcBlog posts are not accessible via SEO keyword. Here is the solution.
SEO Keywords are interpreting in the seo_url controller. so open catalog\controller\startup\seo_url.php and add this before line 44:
if ($url[0] == 'post_id') {
$this->request->get['post_id'] = $url[1];
}
and change line 44 from:
if ($query->row['query'] && $url[0] != 'information_id' && $url[0] != 'manufacturer_id' && $url[0] != 'category_id' && $url[0] != 'product_id') {
to:
if ($query->row['query'] && $url[0] != 'information_id' && $url[0] != 'post_id' && $url[0] != 'manufacturer_id' && $url[0] != 'category_id' && $url[0] != 'product_id') {
Then add this after line 63:
elseif (isset($this->request->get['post_id'])) {
$this->request->get['route'] = 'blog/post';
}
Finally change line 79 from:
if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {
to:
if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id') || ($data['route'] == 'blog/post' && $key == 'post_id')) {
You made it!
you can access to blog posts via their SEO keyword now 🙂