With "product" custom fields, you can add information to your products. So the fields appear in the product edition page, not the product page.
With "item" custom fields , it's your customers who can add information to the products they buy.
1. You can only restrict custom fields to categories. However, since one product can have several categories, you can always create a new category, leave it unpbulished, add it to your product and use it in your custom field so that the custom field will only display for that product.
2. You mean like a custom field of the type "custom text" ?
3. Yes. you need to edit the file "show" of the view "product" via the menu Display->Views and move the code:
<div id="hikashop_product_quantity_main" class="hikashop_product_quantity_main"><?php
$this->row =& $this->element;
$this->ajax = 'if(hikashopCheckChangeForm(\'item\',\'hikashop_product_form\')){ return hikashopModifyQuantity(\''.$this->row->product_id.'\',field,1'.$form.'); } else { return false; }';
$this->setLayout('quantity');
echo $this->loadTemplate();
?>
</div>
<?php
before the code:
if(!$this->params->get('catalogue') && ($this->config->get('display_add_to_cart_for_free_products') || !empty($this->element->prices))){
if(!empty($this->itemFields)){
and change the line:
$form = '';
to:
$form = ',\'hikashop_product_form\'';