Project

General

Profile

Paste
Download (5.91 KB) Statistics
| Branch: | Revision:

root / drupal7 / modules / taxonomy / taxonomy.api.php @ b0dc3a2e

1
<?php
2

    
3
/**
4
 * @file
5
 * Hooks provided by the Taxonomy module.
6
 */
7

    
8
/**
9
 * @addtogroup hooks
10
 * @{
11
 */
12

    
13
/**
14
 * Act on taxonomy vocabularies when loaded.
15
 *
16
 * Modules implementing this hook can act on the vocabulary objects before they
17
 * are returned by taxonomy_vocabulary_load_multiple().
18
 *
19
 * @param $vocabulary
20
 *   An array of taxonomy vocabulary objects.
21
 */
22
function hook_taxonomy_vocabulary_load($vocabularies) {
23
  $result = db_select('mytable', 'm')
24
    ->fields('m', array('vid', 'foo'))
25
    ->condition('m.vid', array_keys($vocabularies), 'IN')
26
    ->execute();
27
  foreach ($result as $record) {
28
    $vocabularies[$record->vid]->foo = $record->foo;
29
  }
30
}
31

    
32
/**
33
 * Act on taxonomy vocabularies before they are saved.
34
 *
35
 * Modules implementing this hook can act on the vocabulary object before it is
36
 * inserted or updated.
37
 *
38
 * @param $vocabulary
39
 *   A taxonomy vocabulary object.
40
 */
41
function hook_taxonomy_vocabulary_presave($vocabulary) {
42
  $vocabulary->foo = 'bar';
43
}
44

    
45
/**
46
 * Act on taxonomy vocabularies when inserted.
47
 *
48
 * Modules implementing this hook can act on the vocabulary object when saved
49
 * to the database.
50
 *
51
 * @param $vocabulary
52
 *   A taxonomy vocabulary object.
53
 */
54
function hook_taxonomy_vocabulary_insert($vocabulary) {
55
  if ($vocabulary->machine_name == 'my_vocabulary') {
56
    $vocabulary->weight = 100;
57
  }
58
}
59

    
60
/**
61
 * Act on taxonomy vocabularies when updated.
62
 *
63
 * Modules implementing this hook can act on the vocabulary object when updated.
64
 *
65
 * @param $vocabulary
66
 *   A taxonomy vocabulary object.
67
 */
68
function hook_taxonomy_vocabulary_update($vocabulary) {
69
  db_update('mytable')
70
    ->fields(array('foo' => $vocabulary->foo))
71
    ->condition('vid', $vocabulary->vid)
72
    ->execute();
73
}
74

    
75
/**
76
 * Respond to the deletion of taxonomy vocabularies.
77
 *
78
 * Modules implementing this hook can respond to the deletion of taxonomy
79
 * vocabularies from the database.
80
 *
81
 * @param $vocabulary
82
 *   A taxonomy vocabulary object.
83
 */
84
function hook_taxonomy_vocabulary_delete($vocabulary) {
85
  db_delete('mytable')
86
    ->condition('vid', $vocabulary->vid)
87
    ->execute();
88
}
89

    
90
/**
91
 * Act on taxonomy terms when loaded.
92
 *
93
 * Modules implementing this hook can act on the term objects returned by
94
 * taxonomy_term_load_multiple().
95
 *
96
 * For performance reasons, information to be added to term objects should be
97
 * loaded in a single query for all terms where possible.
98
 *
99
 * Since terms are stored and retrieved from cache during a page request, avoid
100
 * altering properties provided by the {taxonomy_term_data} table, since this
101
 * may affect the way results are loaded from cache in subsequent calls.
102
 *
103
 * @param $terms
104
 *   An array of term objects, indexed by tid.
105
 */
106
function hook_taxonomy_term_load($terms) {
107
  $result = db_select('mytable', 'm')
108
    ->fields('m', array('tid', 'foo'))
109
    ->condition('m.tid', array_keys($terms), 'IN')
110
    ->execute();
111
  foreach ($result as $record) {
112
    $terms[$record->tid]->foo = $record->foo;
113
  }
114
}
115

    
116
/**
117
 * Act on taxonomy terms before they are saved.
118
 *
119
 * Modules implementing this hook can act on the term object before it is
120
 * inserted or updated.
121
 *
122
 * @param $term
123
 *   A term object.
124
 */
125
function hook_taxonomy_term_presave($term) {
126
  $term->foo = 'bar';
127
}
128

    
129
/**
130
 * Act on taxonomy terms when inserted.
131
 *
132
 * Modules implementing this hook can act on the term object when saved to
133
 * the database.
134
 *
135
 * @param $term
136
 *   A taxonomy term object.
137
 */
138
function hook_taxonomy_term_insert($term) {
139
  db_insert('mytable')
140
    ->fields(array(
141
      'tid' => $term->tid,
142
      'foo' => $term->foo,
143
    ))
144
    ->execute();
145
}
146

    
147
/**
148
 * Act on taxonomy terms when updated.
149
 *
150
 * Modules implementing this hook can act on the term object when updated.
151
 *
152
 * @param $term
153
 *   A taxonomy term object.
154
 */
155
function hook_taxonomy_term_update($term) {
156
  db_update('mytable')
157
    ->fields(array('foo' => $term->foo))
158
    ->condition('tid', $term->tid)
159
    ->execute();
160
}
161

    
162
/**
163
 * Respond to the deletion of taxonomy terms.
164
 *
165
 * Modules implementing this hook can respond to the deletion of taxonomy
166
 * terms from the database.
167
 *
168
 * @param $term
169
 *   A taxonomy term object.
170
 */
171
function hook_taxonomy_term_delete($term) {
172
  db_delete('mytable')
173
    ->condition('tid', $term->tid)
174
    ->execute();
175
}
176

    
177
/**
178
 * Act on a taxonomy term that is being assembled before rendering.
179
 *
180
 * The module may add elements to $term->content prior to rendering. The
181
 * structure of $term->content is a renderable array as expected by
182
 * drupal_render().
183
 *
184
 * @param $term
185
 *   The term that is being assembled for rendering.
186
 * @param $view_mode
187
 *   The $view_mode parameter from taxonomy_term_view().
188
 * @param $langcode
189
 *   The language code used for rendering.
190
 *
191
 * @see hook_entity_view()
192
 */
193
function hook_taxonomy_term_view($term, $view_mode, $langcode) {
194
  $term->content['my_additional_field'] = array(
195
    '#markup' => $additional_field,
196
    '#weight' => 10,
197
    '#theme' => 'mymodule_my_additional_field',
198
  );
199
}
200

    
201
/**
202
 * Alter the results of taxonomy_term_view().
203
 *
204
 * This hook is called after the content has been assembled in a structured
205
 * array and may be used for doing processing which requires that the complete
206
 * taxonomy term content structure has been built.
207
 *
208
 * If the module wishes to act on the rendered HTML of the term rather than the
209
 * structured content array, it may use this hook to add a #post_render
210
 * callback. Alternatively, it could also implement
211
 * hook_preprocess_taxonomy_term(). See drupal_render() and theme()
212
 * documentation respectively for details.
213
 *
214
 * @param $build
215
 *   A renderable array representing the term.
216
 *
217
 * @see hook_entity_view_alter()
218
 */
219
function hook_taxonomy_term_view_alter(&$build) {
220
  if ($build['#view_mode'] == 'full' && isset($build['an_additional_field'])) {
221
    // Change its weight.
222
    $build['an_additional_field']['#weight'] = -10;
223
  }
224

    
225
  // Add a #post_render callback to act on the rendered HTML of the term.
226
  $build['#post_render'][] = 'my_module_node_post_render';
227
}
228

    
229
/**
230
 * @} End of "addtogroup hooks".
231
 */