Order by price is an easy answer, you simply need to insert a <QureyOverride tag into the <ItemList and specify a different sort order.
Displaying a list of products in each category requires is a bigger customization, I assume that you are looking for something simlar to our own products page? If thats the case here is a cut of the markup from the shopHome.aspx page.
<%-- display a list of categories and within each category a list of products --%>
<FRS:ItemCategoryList runat="server" Tag="div" CssClass="productCategory">
<ItemTemplate>
<FRS:ItemList runat="server">
<QueryOverrides runat="server" SortBy="Price" SortOrder="Ascending" />
<LeaderTemplate>
<div>
<FRS:AssetViewerContainer ID="AssetViewerContainer1" Tag="div" CssClass="browseCategoryImage" runat="server"/>
<FRS:ItemCategoryData runat="server" Property="description" Tag="div" CssClass="browseCategoryDescription" />
</div>
<FRS:ItemCategoryData runat="server" LinkTo="CategoryPage" LinkCssClass="specialButton browseCategoryMoreInfo" Text="More Information"></FRS:ItemCategoryData>
<div style="clear:both;"></div>
</LeaderTemplate>
<HeaderTemplate>
<table class="productList">
</HeaderTemplate>
<FooterTemplate>
</table>
<hr />
<br />
</FooterTemplate>
<ItemTemplate>
<tr>
<td class="productCatName">
<FRS:ItemData runat="server" Property="subtitle" LinkTo="ItemDetail"/>
</td>
<td>
<FRS:ItemData runat="server" Property="CurrentPrice"/>
</td>
<td>
<FRS:AddToCartButton CausesValidation="false" ID="AddToCartBtn" runat="server"
CssClass="CommonTextButton" ResourceName="Shop_AddToCart" NotAuthenticatedRedirect="" NotAuthenticatedResourceName="" />
</td>
<td>
<FRS:BuyNowButton CausesValidation="false" id="BuyNowButton" runat="server"
CssClass="CommonTextButton" ResourceName="Shop_BuyNow" NotAuthenticatedRedirect="" NotAuthenticatedResourceName=""/>
</td>
</tr>
</ItemTemplate>
</FRS:ItemList>
</ItemTemplate>
</FRS:ItemCategoryList>
Cheers,
Rob