OK I know this is a one man discussion =) however I have implemented a sticking plaster fix which I open up the floor for abject criticism and offers of betterment
Here goes
in the contact.xml file I did a hybrid select box like so
<field name="variable_1_value"
label="XXXX_FIELD_VARIABLE_1_VALUE"
alias="variable_1_value"
filter="STRING"
type="ckcombo"
nullLabel="XXXX_JSEARCH_SELECT">
<option value="0">XXXX_FIELDS_BOOL_NO</option>
<option value="1">XXXX_FIELDS_BOOL_YES</option>
</field>
this generates a simple select list for when the type is boolean BUT will also allow strings due to the filter=STRING and not the usual filter="BOOL"
I then modified the contact.php MODEL by adding the following to the query
$this->addSelect('_contact_type_.var_1_desc AS `_contact_type_var_1_desc`');
$this->addSelect('_contact_type_.var_2_desc AS `_contact_type_var_2_desc`');
$this->addSelect('_contact_type_.var_3_desc AS `_contact_type_var_3_desc`');
$this->addSelect('_contact_type_.var_1_type AS `_contact_type_var_1_type`');
$this->addSelect('_contact_type_.var_2_type AS `_contact_type_var_2_type`');
$this->addSelect('_contact_type_.var_3_type AS `_contact_type_var_3_type`');
I then altered the template file to
<dt><label id="jform_variable_1_value-lbl" for="jform_variable_1_value" class=""><?php echo $this->item->_contact_type_var_1_desc; ?></label></dt>
<dd>
<?php if ($this->item->_contact_type_var_1_type == 0) { ?>
<input type="text" id="jform_variable_1_value" name="jform[variable_1_value]" class="inputbox " value="<?php echo $this->item->variable_1_value; ?>" size="32">
<?php } else { ?>
<?php
$field = $fieldSet['jform_variable_1_value'];
echo $field->input; ?><?php }; ?>
</dd>
so if the type is 0 (string) a manually coded input box is generated, if the type is 1 (yes or no select box) the standard field is generated,
It works, happy for now, most of it seems to follow the standard generated component. Ideally I would like to have two entries in the XML and just call it the typical way, but i cant see how this would be done