Voici une alternative pour charger le module de recherche dans votre menu. Cela nécessite quelques étapes simples:
1. Remplacez votre mod_menu
module
- Créez un remplacement dans votre dossier de modèles
\templates\YOURTEMPLATE\html\mod_menu\default_url.php
.
- Copiez le contenu suivant dans le fichier:
default_url.php
<?php
/**
* @package Joomla.Site
* @subpackage mod_menu
*
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
// Note. It is important to remove spaces between elements.
$class = $item->anchor_css ? 'class="' . $item->anchor_css . '" ' : '';
$title = $item->anchor_title ? 'title="' . $item->anchor_title . '" ' : '';
if ($item->menu_image)
{
$item->params->get('menu_text', 1) ?
$linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" /><span class="image-title">' . $item->title . '</span> ' :
$linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" />';
}
else
{
$linktype = $item->title;
}
$flink = $item->flink;
$flink = JFilterOutput::ampReplace(htmlspecialchars($flink));
if ($linktype == "CustomSearchBox"){
$document = &JFactory::getDocument();
$renderer = $document->loadRenderer('modules');
$options = array('style' => 'xhtml');
$position = 'CustomSearchBox';
echo $renderer->render($position, $options, null);
}
else {
switch ($item->browserNav) :
default:
case 0:
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 1:
// _blank
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 2:
// window.open
$options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,'.$params->get('window_open');
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" onclick="window.open(this.href,'targetWindow','<?php echo $options;?>');return false;" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
endswitch;
}
J'ai ajouté une if-else
déclaration à partir de la ligne # 29, qui vérifie si le titre de l'élément de menu est "CustomSearchBox". Si tel est le cas, la position du module "CustomSearchBox" est chargée. Sinon, l'élément de menu normal est renvoyé. Vous pouvez remplacer "CustomSearchBox" par tout ce que vous voulez, mais si vous vous souvenez d'utiliser la même valeur dans les étapes suivantes.
2. Créez un nouveau module de recherche
Créez le module de recherche et définissez les paramètres selon vos besoins (je suggère de masquer le titre du module).
Publiez le module dans la position personnalisée "CustomSearchBox"
3. Créez un nouvel élément de menu
L'élément de menu peut être de n'importe quel type, je suggère "URL externe" et le nom DOIT être "CustomSearchBox".
Enregistrez votre élément de menu, et l'élément de menu entier sera remplacé par le champ de recherche!
Faites-moi savoir si quelque chose n'est pas clair.
jQuery
fonctions commeappend()
ouprepend()
qui ne fonctionneront pas sur les navigateurs désactivés par javascript.