Skip to main content

Drupal 7 Menu Link update through update.php

This is for hook_update_N function

If we have a default menu, use below code in install file.
/**
 * Implements hook_update_N to create menu reports.
 */
function mymodule_update_7120() {
  $menus = array(
    'menu_name' => 'my_parent_menu',
    'title' => 'My parent menu title',
    'description' => 'My parent menu description',
  );
  $links = array(
    'link_title' => 'My menu link title',
    'link_path' => 'custom_path_for_menu_link',
    'menu_name' => 'my_parent_menu',
    'weight' => 0,
    'expanded' => 0,
  );
  // Save menu group into menu_custom table
  // Look the table first if the data does exist
  $exists = db_query("SELECT title FROM {menu_custom} WHERE menu_name=:menu_name", array(':menu_name' => $menus['menu_name']))->fetchField();
  // Save the record if the data does not exist
  if (!$exists) {
    menu_save($menu);
  }
  // Look the table first if the data does exist
  $exists_link = db_query("SELECT mlid from {menu_links} WHERE link_title=:link_title AND link_path=:link_path", array(':link_title' =>  $links['link_title'], ':link_path' => $links['link_path']))->fetchField();
  // Save the record if the data does not exist
  if (!$exists_link) {
     menu_link_save($links);
    menu_item_visibility_menu_link_insert($links_menu);
  }
}


If you are using a menu_visibilty module to assign menu items to particular role then.

Use below code of the above code under menu_link_save ($links):
   $mlid = menu_link_save($links); 
   $links_menu = array (
      'mlid' => $mlid,
      'roles' => array ('8','11'),
      );

Here 8,11 are role_id's.

Comments

Popular posts from this blog

Set the default language in Notepad++

I am showing this for the PHP language. In Notepad++   Click on Settings -> Preferences   Click on the New Document tab   Change the Default Language to PHP See below inage   To add an extension to load PHP editor for different extensions.   Click on Settings -> Style Configurator   In Language scroll down to PHP and click it.   In below it will show default ext.     Add your extensions at user exit. (Don't need '.').       eg:  inc install module   Click on Save & Close See below image for reference.

Files that Drupal Themes Use

A drupal theme is a collection of files that define the presentation layer. You can also create one or more "sub-themes" or variations on a drupal theme. Only the .info file is required, but most themes and sub-themes will use other files as well. The following diagram illustrates the files that are found in a typical drupal theme and sub-theme. Drupal 6: Drupal 7: .info   (required) All that is required for Drupal to see your theme is a ".info" file. Should the theme require them, meta data, style sheets ,  JavaScripts ,  block regions  and more can be defined here. Everything else is optional in drupal theme. The internal name of the theme is also derived from this file. For example, if it is named "drop.info", then Drupal will see the name of the theme as "drop".  Drupal 5 and below used the name of the enclosing folder of the theme. Info files for themes are new in Drupal 6. In version 5, .info files were used solely for dru...

Smart pagination or page break in Drupal 7(CK editor)

1. Install Smart Paging module   Go to Administration › Configuration › Administer Smart Paging settings.   Under 'Default page break method', select "Manual placement of page break placeholder". 2.  Install  'Ckeditor' Module   Go to Administration › Configuration > Ckediotr profiles > Filtered HTML   Edit the settings of the Advanced (Filtered HTML) Profile. Under 'Editor Appearance' section, In plugins check the required options like " Plugin for inserting a Drupal teaser and page breaks. ". 3.  Edit the configuration settings of input formats (Filtered HTML, Full HTML, Plain Text)   Go to Administration › Configuration > Text formats. Edit the required input format. For example say "Filtered HTML". Under  "Enabled filters" section, check the 'Smart Paging' option and uncheck all the remaining checkboxes. 4. Go to Content type 'article' and create new content. We will s...