it-swarm-eu.dev

Jak v nabídkách přidám odkaz hash?

Existuje způsob, jak přidat hashed odkaz v nabídce pod drupal menu), jen aby se položka nabídky, která skočí dolů na kotvu nebo id na stránce?

20
mohamad salama

Bohužel, pokud vím, Drupal to nemůže udělat z pole. Můžete však použít modul Speciální položky k vytvoření nové položky nabídky, a vložte do nastavení cesty „nolink“.

16
user842

Postupujte podle zpráv uvedených v komentář k dokumentaci l() .

Chcete-li vytvořit odkaz na pojmenovanou kotvu (např. "#Namedanchor"), budete muset použít malé obejít.

l('linktext', '', array('fragment' => 'namedanchor', 'external' => TRUE));

Chcete-li vytvořit odkaz pouze na hash (na „#“), musíte jej upravit:

l('linktext', '', array('fragment' => ' ', 'external' => TRUE));

(Všimněte si, že fragment neobsahuje mezeru.)

V Drupal 7, nastavte "HTML" na TRUE, pak připojte hash znak.

15
Sebastian

http://drupal.org/node/123103#comment-4955236

uzel/16 # gohere

adresa URL auto to změní

about-us # gohere

13
squarecandy

Zkuste použít modul Void Men :

Nabídka Void umožňuje konfigurovat speciální hodnoty pro značky pro použití v systému nabídek Drupal 7. Můžete přizpůsobit až 10 různých prázdných značek s libovolnou hodnotou, kterou si přejete, a volně je používat v systému nabídky Drupal.
...
Jako dodatečný bonus a díky funkčnosti tohoto modulu můžete také použít skutečné kotvy jako položky nabídky, které neslouží jinému účelu než zástupným symbolům. Toho je dosaženo pomocí značky void, která je nastavena na javascript: void (0); nebo dokonce jednoduchý hash tag #. Výhodou použití tohoto modulu oproti special_menu_items pro to je, že vaše nabídky nebudou vyžadovat žádné další styling k účtování přidaných značek rozpětí používaných special_menu_items a budou platné W3C, protože každá kotva musí mít atribut href.

Je to velmi pěkné řešení!

6
Andriyun

Právě narazil na stejný problém. Potřeboval jsem programově přidávat položky menu s hash-odkazy. Můj kód:

// the URL with hash in it is in the form  'normal_part_of_url'#'hash_part_of_url'
$item = array( 
  'link_path' => %normal_part_of_url%,
  'link_title' => %your_link_title%,
  'menu_name' => %menu_where_to_add_links%,
  'options' => array('fragment'=>%hash_part_of_url%)
);
menu_link_save($item);
2
EDWH

Pouze nastavení external na TRUE to pro mě udělá. Testováno v Druaplu 7.32.

l('Some Name', '#', array('external' => TRUE));

1
timofey.com

Práce s překladovými funkcemi Drupals také funguje.

/**
 * Implements hook_menu().
 *
 * Defines a valid link to use when creating menu items.
 */
function greenacorn_menu() {
  $items['<main-content>'] = array(
    'page callback' => 'drupal_not_found',
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
  );

  return $items;
}

/**
 * Implements hook_menu_link_alter().
 *
 * Flags the link to be altered at runtime.
 *
 * Note: Changes here would be saved back to the database.
 */
function greenacorn_menu_link_alter(&$item, $menu) {
  if ($item['link_path'] == '<main-content>') {
    $item['options']['alter'] = TRUE;
  }
}

/**
 * Implements hook_translated_menu_link_alter().
 *
 * Refactors the link to go to the fragment #main-content.
 */
function greenacorn_translated_menu_link_alter(&$item, $map) {
  if ($item['link_path'] == '<main-content>') {
    $item['href'] = '';
    $item['localized_options']['fragment'] = 'main-content';
  }
}
0
Alan D.

Nainstalujte speciální položky nabídky a nabídku DHTML pro hierarchické nabídky poté:

  • přidejte svou x-example slovní zásobu a přidejte do ní své termíny
  • klikněte na Upravit x-příklad než v taxonomii menu sekce nastavení umístění menu
  • přejít na bloky nastavit nabídku na blok
  • v nabídce úpravy správce uvidíte automaticky přidané výrazy
  • klikněte na úpravu položky nabídky a poté za toto <void> v cíli

nyní zpět na domovskou stránku a uvidíte, že v nabídce, kterou jsme upravili, klikneme ty, které nikam nechodí

0
elaz
function test_menu() {
  $items = array();
  $items['sample'] = array(
   'title' => t('Sample page'),
   'type' => MENU_NORMAL_ITEM,
    'menu_name' => 'main-menu',
    'page callback' => 'samplepage',
    'access callback' => TRUE,
    'options' => array('fragment' => 'sampleHash'),
  );
  return $items;
}

Pomocí výše uvedeného kódu můžete do nabídky přidat hashový odkaz.

0
Guru
/**
 * Implements hook_module_implements_alter().
 */
function MODULE_module_implements_alter(&$implementations, $hook) {
  if ($hook == 'url_outbound_alter') {
    $stored = $implementations['MODULE'];
    unset($implementations['MODULE']);
    $implementations['MODULE'] = $stored;
  }
}

/**
 * Implements hook_url_outbound_alter().
 */
function MODULE_url_outbound_alter(&$path, &$options, $original_path) {
  if (strpos($path, '#') !== FALSE) {
    $fragment = substr($path, strpos($path, "#") + 1);
    $path = str_replace('#' . $fragment, '', $path);
    $options['fragment'] = $fragment;
  }
}
0
ccx105