remove website route, wip
diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py
index c6f49a1..40126e0 100644
--- a/erpnext/setup/doctype/item_group/item_group.py
+++ b/erpnext/setup/doctype/item_group/item_group.py
@@ -9,22 +9,16 @@
 from frappe.website.render import clear_cache
 from frappe.website.doctype.website_slideshow.website_slideshow import get_slideshow
 
-condition_field = "show_in_website"
-template = "templates/generators/item_group.html"
 
 class ItemGroup(NestedSet, WebsiteGenerator):
 	nsm_parent_field = 'parent_item_group'
+	condition_field = "show_in_website"
+	template = "templates/generators/item_group.html"
+	parent_website_route_field = "parent_item_group"
 
 	def autoname(self):
 		self.name = self.item_group_name
 
-	def validate(self):
-		WebsiteGenerator.validate(self)
-		if not self.parent_website_route:
-			if frappe.db.get_value("Item Group", self.parent_item_group, "show_in_website"):
-				self.parent_website_route = frappe.get_website_route("Item Group",
-					self.parent_item_group)
-
 	def on_update(self):
 		NestedSet.on_update(self)
 		WebsiteGenerator.on_update(self)
@@ -60,14 +54,16 @@
 	child_groups = ", ".join(['"' + i[0] + '"' for i in get_child_groups(product_group)])
 
 	# base query
-	query = """select t1.name, t1.item_name, t1.page_name, t1.website_image, t1.item_group,
-			t1.web_long_description as website_description, t2.name as route
-		from `tabItem` t1, `tabWebsite Route` t2
-		where t1.show_in_website = 1 and (item_group in (%s)
-			or t1.name in (select parent from `tabWebsite Item Group` where item_group in (%s)))
-			and t1.name = t2.docname and t2.ref_doctype='Item' """ % (child_groups, child_groups)
+	query = """select name, item_name, page_name, website_image, item_group,
+			web_long_description as website_description,
+			concat(parent_website_route, "/", page_name) as route
+		from `tabItem`
+		where show_in_website = 1
+			and (item_group in (%s)
+			or name in (select parent from `tabWebsite Item Group` where item_group in (%s)))
+			""" % (child_groups, child_groups)
 
-	query += """order by t1.weightage desc, t1.modified desc limit %s, %s""" % (start, limit)
+	query += """order by weightage desc, modified desc limit %s, %s""" % (start, limit)
 
 	data = frappe.db.sql(query, {"product_group": product_group}, as_dict=1)
 
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.py b/erpnext/setup/doctype/sales_partner/sales_partner.py
index 0209df3..9031af5 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.py
+++ b/erpnext/setup/doctype/sales_partner/sales_partner.py
@@ -6,14 +6,15 @@
 from frappe.utils import cstr, filter_strip_join
 from frappe.website.website_generator import WebsiteGenerator
 
-condition_field = "show_in_website"
-template = "templates/generators/sales_partner.html"
-
 class SalesPartner(WebsiteGenerator):
+	page_title_field = "partner_name"
+	condition_field = "show_in_website"
+	template = "templates/generators/sales_partner.html"
 	def autoname(self):
 		self.name = self.partner_name
 
 	def validate(self):
+		self.parent_website_route = "partners"
 		super(SalesPartner, self).validate()
 		if self.partner_website and not self.partner_website.startswith("http"):
 			self.partner_website = "http://" + self.partner_website
@@ -27,9 +28,6 @@
 		else:
 			return ''
 
-	def get_page_title(self):
-		return self.partner_name
-
 	def get_context(self, context):
 		address = frappe.db.get_value("Address",
 			{"sales_partner": self.name, "is_primary_address": 1},
@@ -46,7 +44,3 @@
 			})
 
 		return context
-
-	def get_parent_website_route(self):
-		parent_website_sitemap = super(SalesPartner, self).get_parent_website_route()
-		return parent_website_sitemap or "partners"
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 21ed057..c158014 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -12,10 +12,12 @@
 
 class WarehouseNotSet(frappe.ValidationError): pass
 
-condition_field = "show_in_website"
-template = "templates/generators/item.html"
-
 class Item(WebsiteGenerator):
+	page_title_field = "item_name"
+	condition_field = "show_in_website"
+	template = "templates/generators/item.html"
+	parent_website_route_field = "item_group"
+
 	def onload(self):
 		super(Item, self).onload()
 		self.get("__onload").sle_exists = self.check_if_sle_exists()
@@ -49,9 +51,6 @@
 		self.cant_change()
 		self.validate_item_type_for_reorder()
 
-		if not self.parent_website_route:
-			self.parent_website_route = frappe.get_website_route("Item Group", self.item_group)
-
 		if not self.get("__islocal"):
 			self.old_item_group = frappe.db.get_value(self.doctype, self.name, "item_group")
 			self.old_website_item_groups = frappe.db.sql_list("""select item_group from `tabWebsite Item Group`
@@ -216,14 +215,6 @@
 			item_description=%s, modified=NOW() where item_code=%s""",
 			(self.item_name, self.description, self.name))
 
-	def get_page_title(self):
-		if self.name==self.item_name:
-			page_name_from = self.name
-		else:
-			page_name_from = self.name + " - " + self.item_name
-
-		return page_name_from
-
 	def get_tax_rate(self, tax_type):
 		return { "tax_rate": frappe.db.get_value("Account", tax_type, "tax_rate") }