diff --git a/erpnext/website/blog.py b/erpnext/website/blog.py
index 0c287ad..8c367fe 100644
--- a/erpnext/website/blog.py
+++ b/erpnext/website/blog.py
@@ -1,6 +1,45 @@
 import webnotes
 
 @webnotes.whitelist(allow_guest=True)
+def get_blog_list(args=None):
+	"""
+		args = {
+			'limit_start': 0,
+			'limit_page_length': 10,
+		}
+	"""
+	import webnotes
+	
+	if not args: args = webnotes.form_dict
+	
+	query = """\
+		select
+			cache.name as name, cache.html as content,
+			blog.owner as owner, blog.creation as published,
+			blog.title as title
+		from `tabWeb Cache` cache, `tabBlog` blog
+		where cache.doc_type = 'Blog' and blog.page_name = cache.name
+		order by published desc, name asc"""
+	
+	from webnotes.widgets.query_builder import add_limit_to_query
+	query, args = add_limit_to_query(query, args)
+	
+	result = webnotes.conn.sql(query, args, as_dict=1)
+
+	# strip html tags from content
+	import webnotes.utils
+	import website.web_cache
+	
+	for res in result:
+		from webnotes.utils import global_date_format, get_fullname
+		res['full_name'] = get_fullname(res['owner'])
+		res['published'] = global_date_format(res['published'])
+		res['content'] = split_blog_content(res['content'])
+		res['content'] = res['content'][:1000]
+
+	return result
+
+@webnotes.whitelist(allow_guest=True)
 def get_recent_blog_list(args=None):
 	"""
 		args = {
@@ -64,4 +103,23 @@
 	comment_html = website.web_cache.build_html(template_args)
 
 	return comment_html
-	
\ No newline at end of file
+
+def get_content(blog_page_name):
+	import website.web_cache
+	content = website.web_cache.get_html(blog_page_name)
+	
+	content = split_blog_content(content)
+	
+	import webnotes.utils
+	content = webnotes.utils.escape_html(content)
+
+	return content
+	
+def split_blog_content(content):
+	content = content.split("<!-- begin blog content -->")
+	content = len(content) > 1 and content[1] or content[0]
+
+	content = content.split("<!-- end blog content -->")
+	content = content[0]
+
+	return content
\ No newline at end of file
diff --git a/erpnext/website/doctype/blog/blog.py b/erpnext/website/doctype/blog/blog.py
index bb7b660..8847596 100644
--- a/erpnext/website/doctype/blog/blog.py
+++ b/erpnext/website/doctype/blog/blog.py
@@ -44,7 +44,7 @@
 		# temp fields
 		from webnotes.utils import global_date_format, get_fullname
 		self.doc.full_name = get_fullname(self.doc.owner)
-		self.doc.updated = global_date_format(self.doc.modified)
+		self.doc.updated = global_date_format(self.doc.creation)
 
 		self.markdown_to_html(['content'])
 
diff --git a/erpnext/website/templates/js/blog.js b/erpnext/website/templates/js/blog.js
index 1212a84..3ccc7d4 100644
--- a/erpnext/website/templates/js/blog.js
+++ b/erpnext/website/templates/js/blog.js
@@ -18,24 +18,15 @@
 wn.pages['{{ name }}'].onload = function(wrapper) {
 	erpnext.blog_list = new wn.ui.Listing({
 		parent: $(wrapper).find('#blog-list').get(0),
-		query: 'select tabBlog.name, title, left(content, 1000) as content, tabBlog.creation, \
-			ifnull(first_name, "") as first_name, ifnull(last_name, "") as last_name \
-			from tabProfile, tabBlog\
-		 	where ifnull(published,0)=1 and tabBlog.owner = tabProfile.name \
-			order by tabBlog.creation desc',
+		method: 'website.blog.get_blog_list',
 		hide_refresh: true,
 		no_toolbar: true,
 		render_row: function(parent, data) {
 			if(data.content && data.content.length==1000) {
 				data.content += repl('... <a href="%(name)s.html">(read on)</a>', data);
 			}
-			data.content = wn.markdown(data.content);
-			if(data.last_name) data.last_name = ' ' + data.last_name;
-			data.date = prettyDate(data.creation);
 			parent.innerHTML = repl('<h2><a href="%(name)s.html">%(title)s</a></h2>\
-				<p><div class="help">By %(first_name)s%(last_name)s, %(date)s</div></p>\
-				<p>%(content)s</p><br>', data)
-				//<a href="%(name)s.html">Read Full Text</a><br>', data);
+				<p>%(content)s</p><br>', data);
 		},
 		page_length: 10
 	});
