To answer my own question, the way I was able to get around it was to do the following:
In the extension's registerScripts function, comment out everything except the last two lines of the function (keep just this:
$cs = Yii::app()->clientScript; $cs->registerScript($id, $embeddedScript, CClientScript::POS_LOAD);
Create a snippet PHP file called application.components.HighchartsSnippet with just the following:
<?php $basePath = Yii::app()->basePath . DIRECTORY_SEPARATOR . 'extensions/highcharts/assets' . DIRECTORY_SEPARATOR; $baseUrl = Yii::app()->getAssetManager()->publish($basePath, false, 1, YII_DEBUG); $scriptFile = YII_DEBUG ? '/highcharts.src.js' : '/highcharts.js'; $cs = Yii::app()->clientScript; $cs->registerCoreScript('jquery'); $cs->registerScriptFile($baseUrl . $scriptFile);
On the PARENT view page of whenever you use Highcharts, insert the following line:
Do not use that import on any of the view files that call the Highcharts widget. JUST the parent (or just the main view). That ensures the Highcharts library is only ever loaded once.
Kludgy, but it works for now until perhaps there's a fix in the widget itself that checks for the existence of the chart object before re-registering it.