Are the only two options here third-party plugins or modify the code to hide all of the carts completely in the Category View?
That's pretty easy by creating a category sublayout with the add-to-cart button commented out:
Find your-root-folder\components\com_virtuemart\sublayouts\products.php and load the file products.php into an editor (Notepad++ for example)
Find these lines (at or near line 126):
<div class="vm3pr-<?php echo $rowsHeight[$row]['customfields'] ?>"> <?php
echo shopFunctionsF::renderVmSubLayout('addtocart',array('product'=>$product,'rowHeights'=>$rowsHeight[$row], 'position' => array('ontop', 'addtocart'))); ?>
Comment out the button by adding // as in the two lines below:
<div class="vm3pr-<?php// echo $rowsHeight[$row]['customfields'] ?>"> <?php
//echo shopFunctionsF::renderVmSubLayout('addtocart',array('product'=>$product,'rowHeights'=>$rowsHeight[$row], 'position' => array('ontop', 'addtocart'))); ?>
Save the changed file as products_less-cat-cart-btn.php or a similar filename. Note: The word products_ including the underscore at the begining of the file name is mandatory!
After that you can select this sublayout in the category menu settings > 'Virtuemart category view settings' tab > 'Sublayout for products in category'.
I had already found the code to hide the add to cart button, but thank you (and also, excellent suggestion on Notepad++. I've only recently heard about it and already love that program)
Hiding the Add to Cart button is more of a last resort (and only if my client doesn't mind it not being there in the Category Layout). My main question is, isn't there anyway of conditioning the Add to Cart button for the Category Layout page so it doesn't appear for Parent products that aren't set as orderable? It's a setting in the product description page, why wouldn't that conditioning be used anywhere else for parent items?
Ideally it would be some configurable option in the backend, but I'm not finding anything. (Again, the only option related to this, the box labeled "Parent Orderable", only affects how the button displays (or not displays) on the product description page.
I'd even be happy to identify what line of code the product description page uses to call up the conditioning to either show the Add to Cart button or the "Select a Variant" faux-button; and figure out how to incorporate that into the Category Layout page. I would assume the change would still be made to sublayouts\products.php, replacing the
<div class="vm3pr-<?php echo $rowsHeight[$row]['customfields'] ?>"> <?php
echo shopFunctionsF::renderVmSubLayout('addtocart',array('product'=>$product,'rowHeights'=>$rowsHeight[$row], 'position' => array('ontop', 'addtocart'))); ?>
with whatever line of code is used for the product page, but I don't know which file, or for that matter, which line of code defines what to display on the product page. Since the two pages generate that button differently, I'm assuming the code to get that button (or else, not get that button) is different for the product description page; and if I could use whatever method is used on the Product Page on the Category Layout page, I would again, assume both pages would derive the conditions for if and when to include an Add to Cart button the same way.