I need to customize the list view. I've copied default_hotspot.php to the htlm template directory to override it. Fine.
But I need to render specific fields from the customs ones in some specific position. Can't just "throw them" one after each other as per the standard template/layout.
Thus I needed to catch individual values to produce something like :
<script type="text/template" id="hotspot-list-item">
<div class="hs-place-summary">
{{#if multimedia}}
<div class="hs-galleria"></div>
{{/if}}
<h3>{{ title }}</h3>
<div class="basulm-hs-type">
{{{cf-typeterrain}}}
</div>
<div class="hs-hotspots-overview-short">
{{{cutDescription}}}
</div>
where "typeterrain" is the slug of the custom field I need to render under the title on each view.
But this placeholder did not exist in the json stream.
So, I've hacked components/com_hotspots/helpers/hotspot.php around line 67 this way :
// Add the custom fields to the array
if ($customFieldsConfig)
{
$customFieldsRegistry = new JRegistry($hotspot->customfields);
$jsonHotspot['customfields'] = preg_replace("@[\\r|\\n|\\t]+@", '', $layout->render(
array(
'customfieldsItem' => $customFieldsRegistry->toArray(),
'customfieldsConfig' => $customFieldsConfig
)
)
);
//
// apchea : adding individual custom fields key/value pairs
//
foreach($customFieldsRegistry as $key=>$cf) {
// echo $key." --> ".$cf;
$k = "cf-" . $key;
$jsonHotspot[$k] = $cf;
}
//
// end apchea
//
}
Is this the right way ? Or does something else already exist ? Or clever way to do it ?
If not, would you consider include it in the next release ?
Thanks,
Laurent