Keep the products in a central location and you can also use Ditto/TVs/PHx to aggregate and template results.
You can easily make the add to cart link yourself, rather than using the one that TreasureChest creates, as long as the TreasureChest JavaScript code is loaded on that page (service=`global`) e.g:
<p class="productAdd"><a href="#" onclick="return false;" class="addToCart" title="Yoga VII" name="40" rel="id"><span>Add To Cart</span></a></p>
You can maybe also use TVs (e.g. create them to contain an array of relevant item row IDs) and Ditto extenders to automatically pull up Treasure chest item info from the DB and populate placeholders.
For instance an extender to get price & tax info from the TreasureChest table via Ditto into custom placeholders:
tcPriceGetter.extender.inc.php
<?php
if (!function_exists("tcPriceGetter")) {
function tcPriceGetter($resource) {
global $modx;
$productID = $resource["tcProductID"];
$table = $modx->getFullTableName('treasure_chest');
$query = "SELECT amount + tax FROM $table WHERE id=$productID";
$result = $modx->db->query($query);
$tcPrice = $modx->db->getValue($result);
return ($tcPrice < 1) ? 'No price found' : $tcPrice;
}
}
$placeholders['tcPrice'] = array(array("tcProductID","*"),"tcPriceGetter");
?>
And Ditto template:
<li>
<a class="imgPreviewLink" href="[~[+id+]~]" title="[+longtitle+]">
<img src="/assets/snippets/treasure_chest/images/phpthumb/phpThumb.php?src=../products/[+alias+].jpg&w=125&f=png" alt="[+pagetitle+]">
</a>
<h3>
<a href="[~[+id+]~]" title="[+longtitle+]">[+pagetitle+]</a>
</h3>
<p class="productPrice">£[+tcPrice+]</p>
<p class="viewItemLink"><a href="[~[+id+]~]" title="[+longtitle+]">View item</a></p>
<p class="productAdd"><a href="#" onclick="return false;" class="addToCart" title="[+pagetitle+]" name="[+tcProductID+]" rel="id"><span>Add To Cart</span></a></p>
</li>