-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmetatag.metatag.inc
325 lines (291 loc) · 12 KB
/
metatag.metatag.inc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
<?php
/**
* Implements hook_metatag_config_default().
*/
function metatag_metatag_config_default() {
$configs = array();
$config = new stdClass();
$config->instance = 'global';
$config->api_version = 1;
$config->disabled = FALSE;
$config->config = array(
'title' => array('value' => '[current-page:title] | [site:name]'),
'generator' => array('value' => 'Drupal 7 (http://drupal.org)'),
'canonical' => array('value' => '[current-page:url:absolute]'),
'shortlink' => array('value' => '[current-page:url:unaliased]'),
);
$configs[$config->instance] = $config;
$config = new stdClass();
$config->instance = 'global:frontpage';
$config->api_version = 1;
$config->disabled = FALSE;
$config->config = array(
'title' => array('value' => \Drupal::config('metatag.settings')->get('site_slogan') ? '[site:name] | [site:slogan]' : '[site:name]'),
'canonical' => array('value' => '[site:url]'),
'shortlink' => array('value' => '[site:url]'),
);
$configs[$config->instance] = $config;
$config = new stdClass();
$config->instance = 'global:403';
$config->api_version = 1;
$config->disabled = FALSE;
$config->config = array(
'canonical' => array('value' => '[site:url]'),
'shortlink' => array('value' => '[site:url]'),
);
$configs[$config->instance] = $config;
$config = new stdClass();
$config->instance = 'global:404';
$config->api_version = 1;
$config->disabled = FALSE;
$config->config = array(
'canonical' => array('value' => '[site:url]'),
'shortlink' => array('value' => '[site:url]'),
);
$configs[$config->instance] = $config;
$config = new stdClass();
$config->instance = 'node';
$config->api_version = 1;
$config->disabled = FALSE;
$config->config = array(
'title' => array('value' => '[node:title] | [site:name]'),
'description' => array('value' => '[node:summary]'),
);
$configs[$config->instance] = $config;
if (\Drupal::moduleHandler()->moduleExists('taxonomy')) {
$config = new stdClass();
$config->instance = 'taxonomy_term';
$config->api_version = 1;
$config->disabled = FALSE;
$config->config = array(
'title' => array('value' => '[term:name] | [site:name]'),
'description' => array('value' => '[term:description]'),
);
$configs[$config->instance] = $config;
}
$config = new stdClass();
$config->instance = 'user';
$config->api_version = 1;
$config->disabled = FALSE;
$config->config = array(
'title' => array('value' => '[user:name] | [site:name]'),
);
$configs[$config->instance] = $config;
// Before returning these, allow the bundled submodules to override them, thus
// extending the "real" defaults before they can then be altered by other
// modules.
// See hook_metatag_bundled_config_alter() in the API documentation.
\Drupal::moduleHandler()->alter('metatag_bundled_config', $configs);
return $configs;
}
/**
* Implements hook_metatag_config_instance_info().
*/
function metatag_metatag_config_instance_info() {
$info['global'] = array('label' => t('Global'));
$info['global:frontpage'] = array('label' => t('Front page'));
$info['global:403'] = array('label' => t('403 access denied'));
$info['global:404'] = array('label' => t('404 page not found'));
// Add instance information for entities.
$entity_types = \Drupal::entityManager()->getDefinitions();
foreach ($entity_types as $entity_type => $entity_info) {
if (metatag_entity_supports_metatags($entity_type)) {
$info[$entity_type] = array('label' => $entity_info['label']);
foreach ($entity_info['bundles'] as $bundle => $bundle_info) {
if (count($entity_info['bundles'] == 1) && $bundle == $entity_type) {
// Skip default bundles (entities that do not really have bundles).
continue;
}
if (metatag_entity_supports_metatags($entity_type, $bundle)) {
$info[$entity_type . ':' . $bundle] = array('label' => $bundle_info['label']);
}
}
}
}
return $info;
}
/**
* Implements hook_metatag_info().
*/
function metatag_metatag_info() {
$info['groups']['advanced'] = array(
'label' => t('Advanced'),
'form' => array(
'#weight' => 100,
),
);
// "Simple" meta tags go first.
$weight = 0;
$info['tags']['title'] = array(
'label' => t('Page title'),
'description' => t("The text to display in the title bar of a visitor's web browser when they view this page. This meta tag may also be used as the title of the page when a visitor bookmarks or favorites this page."),
'class' => 'DrupalTitleMetaTag',
'weight' => ++$weight,
);
$info['tags']['description'] = array(
'label' => t('Description'),
'description' => t("A brief and concise summary of the page's content, preferably 150 characters or less. The description meta tag may be used by search engines to display a snippet about the page in search results."),
'class' => 'DrupalTextMetaTag',
'weight' => ++$weight,
'form' => array(
'#type' => 'textarea',
'#rows' => 2,
'#wysiwyg' => FALSE,
),
);
$info['tags']['abstract'] = array(
'label' => t('Abstract'),
'description' => t("A brief and concise summary of the page's content, preferably 150 characters or less. The abstract meta tag may be used by search engines for archiving purposes."),
'class' => 'DrupalTextMetaTag',
'weight' => ++$weight,
'form' => array(
'#type' => 'textarea',
'#rows' => 2,
'#wysiwyg' => FALSE,
),
);
$info['tags']['keywords'] = array(
'label' => t('Keywords'),
'description' => t("A comma-separated list of keywords about the page. This meta tag is <em>not</em> supported by most search engines."),
'class' => 'DrupalTextMetaTag',
'weight' => ++$weight,
);
// More advanced meta tags.
// @FIXME Provide a valid URL, generated from a route name, as the second argument to l(). See https://www.drupal.org/node/2346779 for more information.
// $info['tags']['robots'] = array(
// 'label' => t('Robots'),
// 'description' => t("Provides search engines with specific directions for what to do when this page is indexed."),
// 'class' => 'DrupalListMetaTag',
// 'group' => 'advanced',
// 'weight' => ++$weight,
// 'form' => array(
// '#options' => array(
// 'index' => t('Allow search engines to index this page (assumed).'),
// 'follow' => t('Allow search engines to follow links on this page (assumed).'),
// 'noindex' => t('Prevents search engines from indexing this page.'),
// 'nofollow' => t('Prevents search engines from following links on this page.'),
// 'noarchive' => t('Prevents cached copies of this page from appearing in search results.'),
// 'nosnippet' => t('Prevents descriptions from appearing in search results, and prevents page caching.'),
// 'noodp' => t('Blocks the !opendirectory description from appearing in search results.', array('!opendirectory' => l('Open Directory Project', 'http://www.dmoz.org/'))),
// 'noydir' => t('Prevents Yahoo! from listing this page in the <a href="@ydir">Yahoo! Directory</a>.', array('@ydir' => 'http://dir.yahoo.com/')),
// 'noimageindex' => t('Prevent search engines from indexing images on this page.'),
// 'notranslate' => t('Prevent search engines from offering to translation this page in search results.'),
// ),
// ),
// );
$info['tags']['news_keywords'] = array(
'label' => t('Google News Keywords'),
'description' => t('A comma-separated list of keywords about the page. This meta tag is used as an indicator in <a href="@google_news">Google News</a>.', array('@google_news' => 'http://support.google.com/news/publisher/bin/answer.py?hl=en&answer=68297')),
'class' => 'DrupalTextMetaTag',
'group' => 'advanced',
'weight' => ++$weight,
);
$info['tags']['standout'] = array(
'label' => t('Google Standout'),
'description' => t("Highlight standout journalism on the web, especially for breaking news; used as an indicator in <a href=\"@google_news\">Google News</a>. Warning: Don't abuse it, to be used a maximum of 7 times per calendar week!", array('@google_news' => 'https://support.google.com/news/publisher/answer/191283?hl=en&ref_topic=2484650')),
'class' => 'DrupalTextMetaTag',
'group' => 'advanced',
'weight' => ++$weight,
);
$info['tags']['generator'] = array(
'label' => t('Generator'),
'description' => t("Describes the name and version number of the software or publishing tool used to create the page."),
'class' => 'DrupalTextMetaTag',
'header' => 'X-Generator',
'context' => array('global'),
'group' => 'advanced',
'weight' => ++$weight,
);
$info['tags']['rights'] = array(
'label' => t('Rights'),
'description' => t("Details about intellectual property, such as copyright or trademarks; does not automatically protect the site's content or intellectual property."),
'class' => 'DrupalTextMetaTag',
'group' => 'advanced',
'weight' => ++$weight,
'replaces' => array(
'copyright',
),
);
$info['tags']['image_src'] = array(
'label' => t('Image'),
'description' => t("An image associated with this page, for use as a thumbnail in social networks and other services."),
'class' => 'DrupalLinkMetaTag',
'group' => 'advanced',
'weight' => ++$weight,
'devel_generate' => array(
'type' => 'image',
),
);
$info['tags']['canonical'] = array(
'label' => t('Canonical URL'),
'description' => t("Preferred page location or URL to help eliminate duplicate content for search engines."),
'class' => 'DrupalLinkMetaTag',
'group' => 'advanced',
'weight' => ++$weight,
'devel_generate' => array(
'type' => 'canonical',
),
);
$info['tags']['shortlink'] = array(
'label' => t('Shortlink URL'),
'description' => t('A brief URL, often created by a URL shortening service.'),
'class' => 'DrupalLinkMetaTag',
'group' => 'advanced',
'weight' => ++$weight,
'devel_generate' => array(
'type' => 'shortlink',
),
);
$info['tags']['publisher'] = array(
'label' => t('Publisher URL'),
'description' => '',
'class' => 'DrupalLinkMetaTag',
'group' => 'advanced',
'weight' => ++$weight,
'devel_generate' => array(
'type' => 'url',
),
);
$info['tags']['author'] = array(
'label' => t('Author URL'),
'description' => t("Used by some search engines to confirm authorship of the content on a page. Should be either the full URL for the author's Google+ profile page or a local page with information about the author."),
'class' => 'DrupalLinkMetaTag',
'group' => 'advanced',
'weight' => ++$weight,
'devel_generate' => array(
'type' => 'url',
),
);
$info['tags']['original-source'] = array(
'label' => t('Original Source'),
'description' => '',
'class' => 'DrupalTextMetaTag',
'group' => 'advanced',
'description' => t("Used to indicate the URL that broke the story, and can link to either an internal URL or an external source. If the full URL is not known it is acceptable to use a partial URL or just the domain name."),
'weight' => ++$weight,
'devel_generate' => array(
'type' => 'url',
),
);
$info['tags']['revisit-after'] = array(
'label' => t('Revisit After'),
'description' => t('Tell search engines when to index the page again. Very few search engines support this tag, it is more useful to use an <a href="@xmlsitemap">XML Sitemap</a> file.', array('@xmlsitemap' => 'http://drupal.org/project/xmlsitemap')),
'class' => 'DrupalDateIntervalMetaTag',
'group' => 'advanced',
'weight' => ++$weight,
'devel_generate' => array(
'type' => 'date',
),
);
$info['tags']['content-language'] = array(
'label' => t('Content language'),
'description' => t("A deprecated meta tag for defining this page's two-letter language code(s)."),
'class' => 'DrupalTextMetaTag',
'group' => 'advanced',
'weight' => ++$weight,
'element' => array(
'#theme' => 'metatag_http_equiv',
),
);
return $info;
}