You need to decide how to split your products into shipping groups. Usually the product type or category is a good guide. In terms of shipping the highest price of the products in the cart from a specific group will be used, plus half the price of subsequent products in the same group.
To setup shipping groups go to the Attribute Management under Catalog. Then find the attribute “shipping_group”. In Manage Label/Options add each of the shipping groups. In the example below we have BOOKS and DVDs. Products will then be assigned to either of these.
This extension will handle the shipping price calculation as follows:
If 5 books are in cart, with a shipping price of $10 for the first item, and $5 for the rest, the total price would be $10 + 4*$5.
Within this shipping method you can set an overall maximum shipping cost. If empty it will be ignored.
Setting to "Yes" will apply the base shipping price to each product in cart if the product is not assigned to a shipping group. If set to no then will only apply the base shipping price to the highest price product in the cart which has no shipping group assigned.
For example; if there are 2 products with a base shipping of $10 and $3 respectively, and add-on as $2 flat. There are no shipping groups. You have 2 of each product in the cart.
With this switch set to "No" then the shipping will be $10+$3*$2. With it set to Yes it will be $10+$3+2*$2.