It is a pretty common use case that a module needs to identify a vocabulary that has significance to itself. The typical place to do this is in the settings hooks. This is a helper function that returns the form element to do this. I don't have stats about how many modules currently use this functionality, but I think it would justify its inclusion in core and make the end experience more consistent (and lower the bar for programming such modules - not that it was high to begin with).

function taxonomy_vocabulary_binding($variable_name, $multiple = FALSE) {
	$form[$variable_name] = array(
    '#title' => t('Vocabularies associated with %variable', array('%variable' => $variable_name)),
    '#default_value' => variable_get($variable_name, array()),
    '#description' => t('These vocabularies will be bound to the variable %variable. You can get this list of vocabulary ids later by using variable_get("%variable", array());.'),
  );
  
  $form[$variable_name]['#type'] = $multiple ? 'checkboxes' : 'radios';
  
  	  
	$options = array();
	foreach(taxonomy_get_vocabularies() as $vid => $vocabulary) {
		$options[$vid] = $vocabulary->name;
	}
	
	$form[$variable_name]['#options'] = $options;
	
	return $form;
}

If Dries and drumm are open to the idea (and have suggestions) I'll roll a patch.

Comments

robertdouglass’s picture

function taxonomy_vocabulary_binding($variable_name, $multiple = FALSE) {
	$form[$variable_name] = array(
    '#title' => t('Vocabularies associated with %variable', array('%variable' => $variable_name)),
    '#default_value' => variable_get($variable_name, array()),
    '#description' => t('These vocabularies will be bound to the variable %variable. You can get this list of vocabulary ids later by using variable_get("%variable", array());.', array('%variable' => $variable_name, '%variable' => $variable_name)),
  );
  
  $form[$variable_name]['#type'] = $multiple ? 'checkboxes' : 'radios';
  
  	  
  $options = array();
  foreach(taxonomy_get_vocabularies() as $vid => $vocabulary) {
    $options[$vid] = $vocabulary->name;
  }

  $form[$variable_name]['#options'] = $options;

  return $form;
}

small fix

robertdouglass’s picture

Status: Active » Needs review

setting to review to hopefully get some feedback =)

Bèr Kessels’s picture

Robert, maybe it is a good idea if you give a concrete example of how and where to use this? I don't really understand why I would want this, but that is probably because I haven't created many such modules?

Do I understand it correctly if this could be the first in a whole range of such functions like
node_type_binding(), user_role_binding(), filter_format_binding() etc?

moshe weitzman’s picture

forum.module, glossary.module, og_vocab, ...

drumm was working on a module which had cool new form elements a long time ago. not sure where that is now.

bdragon’s picture

Version: x.y.z » 6.x-dev
Status: Needs review » Active

Patch?

nancydru’s picture

I assume this is not in D6?

bdragon’s picture

Version: 6.x-dev » 8.x-dev

Moving to 8.

jibran’s picture

Issue summary: View changes

We can save vocabulary settings in yml file because vocabulary is ConfigEntity now. So I think it is irrelevant now. Also see taxonomy.vocabulary.forums.yml for reference.

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.6 was released on February 1, 2017 and is the final full bugfix release for the Drupal 8.2.x series. Drupal 8.2.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.3.0 on April 5, 2017. (Drupal 8.3.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.3.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.6 was released on August 2, 2017 and is the final full bugfix release for the Drupal 8.3.x series. Drupal 8.3.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.4.0 on October 4, 2017. (Drupal 8.4.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.4.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.4 was released on January 3, 2018 and is the final full bugfix release for the Drupal 8.4.x series. Drupal 8.4.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.5.0 on March 7, 2018. (Drupal 8.5.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.5.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.6 was released on August 1, 2018 and is the final bugfix release for the Drupal 8.5.x series. Drupal 8.5.x will not receive any further development aside from security fixes. Sites should prepare to update to 8.6.0 on September 5, 2018. (Drupal 8.6.0-rc1 is available for testing.)

Bug reports should be targeted against the 8.6.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.8.x-dev

Drupal 8.6.x will not receive any further development aside from security fixes. Bug reports should be targeted against the 8.8.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.9.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.7 was released on June 3, 2020 and is the final full bugfix release for the Drupal 8.8.x series. Drupal 8.8.x will not receive any further development aside from security fixes. Sites should prepare to update to Drupal 8.9.0 or Drupal 9.0.0 for ongoing support.

Bug reports should be targeted against the 8.9.x-dev branch from now on, and new development or disruptive changes should be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.2.x-dev

Drupal 8 is end-of-life as of November 17, 2021. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.15 was released on June 1st, 2022 and is the final full bugfix release for the Drupal 9.3.x series. Drupal 9.3.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.4.x-dev branch from now on, and new development or disruptive changes should be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.9 was released on December 7, 2022 and is the final full bugfix release for the Drupal 9.4.x series. Drupal 9.4.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.5.x-dev branch from now on, and new development or disruptive changes should be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

quietone’s picture

Status: Active » Closed (works as designed)

@robertdouglass, thanks for helping to improve Drupal.

Based on the last comment here there are other ways to accomplish this.

The proposal doesn't met the Criteria for evaluating proposed changes. In this case, there is not demonstrated demand and support for the change.