I have tried to change the product's breadcrumbs to Home>>category>>sub-category>>product-name.
Meanwhile, I want to set the canonial URL to mysite.com/cat/sub-cat/product-name-111,
not like the OC default mysite.com/product-name-111.
I fout that I can go to a category or product page through many URLs.
e.g.
mysite.com/cat1/cat2/iphone this page can be reached through:
mysite.com/cat2/iphone and mysite.com/iphone.
It should not work like this... If i set a product name as iphone, this will sure cause conflict problem on URL.
I think all canonial URL should be set to mysite.com/cat1/cat2/product, and breadcrumb set to home>>cat1>>cat2>>product-name. NOT mysite.com/xxx because this link is not default display for category products.
If I do seo backlink building for product page, which URL should I use???
mysite.com/cat1/cat2/product-name OR mysite.com/product-name

This is a big problem.
Can anyone help?
I solved it myself. Change the 1 line to 2 line of catalog/controller/product/product.php.
And there is another guy has post to change the featured products' breadcrumb. It think its perfect now.
---change this---
$this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical');
---to- this--
$this->document->addLink($this->url->link('product/product',$url . '&product_id=' . $this->request->get['product_id']), 'canonical');