Often, when doing SEO checkups, SEO specialist come up with adding Schema.org functionality to website. Mostly e-shops of course, leading to better positions on Google search. But since Schema.org standard has so many fields, Drupal tries to add them to Node Edit page - leading to unnecessary slowdown of editing nodes for site editors.
In my case, website became almost unusable. The Product Node Edit subpage had many fields anyway, because it was product and adding another hundreds of metatag fields slowed the editing process even further.
So the solution for me was to write the custom module to split the editing subpage to two - one for editing the product, and one specifically for editing the metatags.
Took some time to complete but here is the code:
<?php
function grafeon_metatag_menu() {
$items['node/%node/metatag_edit'] = array(
'title' => 'Edit Metatags',
'page callback' => '_grafeon_metatag_node_edit_form',
'page arguments' => array('produkt_node_form', $node),
'access callback' => 'node_access',
'access arguments' => array('update', 1),
'weight' => 0,
'type' => MENU_LOCAL_TASK,
'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE,
'theme arguments' => array('admin_theme'),
'theme callback' => 'variable_get',
);
return $items;
}
function _grafeon_metatag_node_edit_form() {
module_load_include('inc', 'node', 'node.pages');
$nid = arg(1);
$node = node_load($nid);
$form = drupal_get_form("produkt_node_form", $node);
foreach($form as $key => $value) {
if (strpos($key, 'field_') !== false) {
hide($form[$key]);
}
}
hide($form["title_field"]);
hide($form["body"]);
// tabs
hide($form['options']);
hide($form['product_catalog']);
hide($form['path']);
hide($form['redirect']);
hide($form['xmlsitemap']);
hide($form['author']);
hide($form['comment_settings']);
hide($form['revision_information']);
return $form;
}
// Remove the metatag functionality from native product edit form
function grafeon_metatag_form_alter(&$form, &$form_state, $form_id){
if ($form_id == 'produkt_node_form' && arg(2) == "edit") {
hide($form['metatags']);
}
}
The problematic node type was "Produkt", leading to edit form having ID of "produkt_node_form", so you would need to adjust the code to fit your needs - basicly just replacing the ID, which is always <node_type>_node_form. I am too lazy to make it site-wide. But at least it works.