Multiple autotags within single NewsPublisher Form?

Auto-tags in NewsPublisher work so long as a single autotag is used within a given NewsPublisher form.

A case statement added to newspublisher.class.php assigns a tpl to any autotag TV included in the NewsPublisher call:

case 'autotag':
 $formTpl .= $this->_displaySimple($name, 'TagOuterTpl', '');

I seek a method whereby multiple autotag template variables can be ‘shown’ in the same NewsPublisher form. Is it possible to specify TV names in autotag case statements, enabling assignment of unique tpls per named autotag TV?

For reference, my TagOuterTpl looks like:

<div id="np-[[+npx.fieldName]]-container" class="np-text custom-container">
   <div class="tag-input-wrap">
      <label class="fieldlabel" for="np-[[+npx.fieldName]]" [[+npx.readonly]] title="[[]]">[[+npx.caption]]: </label>
      <input contenteditable name="[[+npx.fieldName]]" class="text tag-input" id="np-[[+npx.fieldName]]" type="text"  value="[[+np.[[+npx.fieldName]]]]"  maxlength="[[+npx.maxlength]]" />

The [[*template]] tags switch chunks containing [[taglister]] calls based on template. Works great for a single autotag per NP form.

For example, [[$tag-form-tpl_chartTag]]:

    <div class="tag-block">
        [[!tagLister? &tv=`chartTag` &parents=`6` &tagKey=`chartTag` &tpl=`npTagTpl` &target=`[[*id]]` &limit=`100` &activeCls=`current` &toPlaceholder=`available-tags`]]
        [[+available-tags:notempty=`<label class="fieldlabel">Existing chart tags:</label>`]]
    function toggleTag(t){
      var val = document.getElementById("np-[[+npx.fieldName]]").value;
      var tags = val ? val.split(',') : [];
      var index = tags.indexOf(t);
      if(index > -1){
        tags.splice(index, 1);
      document.getElementById("np-[[+npx.fieldName]]").value = tags.join(',');
 $('form').submit(function(e) {
        $('.submit').each(function() {
            var pH = $.trim($(this).val());
            var pHn = pH.replace(/,\s*$/, '');
 $(function() {
    var [[+npx.fieldName]]Tags = [ [[!tagLister? &tv=`chartTag` &tpl=`tag-item-alt` &parents=`6` &limit=`100` &outputSeparator=`,`]] ];
    function split( val ) {
      return val.split( /,\s*/ );
    function extractLast( term ) {
      return split( term ).pop();
    $( "#np-[[+npx.fieldName]]" )
      // don't navigate away from the field on tab when selecting an item
      .bind( "keydown", function( event ) {
        if ( event.keyCode === $.ui.keyCode.TAB &&
            $( this ).data( "ui-autocomplete" ) ) {
        minLength: 0,
        source: function( request, response ) {
          // delegate back to autocomplete, but extract the last term
          response( $.ui.autocomplete.filter(
            [[+npx.fieldName]]Tags, extractLast( request.term ) ) );
        focus: function() {
          // prevent value inserted on focus
          return false;
        select: function( event, ui ) {
          var terms = split( this.value );
          // remove the current input
          // add the selected item
          terms.push( ui.item.value );
          // add placeholder to get the comma-and-space at the end
          terms.push( "" );
          this.value = terms.join( ", " );
          return false;

I suppose you added your custom case for autotags to this switch statement in the code:

The variable $name that you use in your code is the name of the TV. So you should be able to do something like this:

case 'autotag':
	if ($name == 'myAutotag1'){
		$formTpl .= $this->_displaySimple($name, 'TagOuterTpl', '');
	} elseif ($name == 'myAutotag2') {
		$formTpl .= $this->_displaySimple($name, 'OtherTagOuterTpl', '');

Your supposition is correct.