นี่เป็นอีกทางเลือกหนึ่งในการโหลดโมดูลค้นหาในเมนูของคุณ ต้องใช้สองขั้นตอนง่ายๆ:
1. แทนที่mod_menu
โมดูลของคุณ
\templates\YOURTEMPLATE\html\mod_menu\default_url.php
สร้างแทนที่ในโฟลเดอร์แม่แบบของคุณ
- คัดลอกเนื้อหาต่อไปนี้ไปยังไฟล์:
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;
}
ฉันได้เพิ่มif-else
คำแถลงเริ่มต้นที่บรรทัดที่ 29 ซึ่งตรวจสอบว่าชื่อรายการเมนูเป็น "CustomSearchBox" หากเป็นเช่นนั้นโหลดโมดูลตำแหน่ง "CustomSearchBox" หากไม่ใช่รายการเมนูปกติจะถูกส่งคืน คุณสามารถเปลี่ยน "CustomSearchBox" เป็นอะไรก็ได้ที่คุณชอบ แต่ถ้าคุณจำไว้ว่าให้ใช้ค่าเดียวกันในขั้นตอนต่อไปนี้
2. สร้างโมดูลการค้นหาใหม่
สร้างโมดูลการค้นหาและตั้งค่าพารามิเตอร์ตามต้องการ (ฉันแนะนำให้ซ่อนชื่อโมดูล)
เผยแพร่โมดูลไปยังตำแหน่งที่กำหนดเอง "CustomSearchBox"
3. สร้างรายการเมนูใหม่
รายการเมนูสามารถเป็นประเภทใดก็ได้ฉันขอแนะนำ "URL ภายนอก" และชื่อต้องเป็น "CustomSearchBox"
บันทึกรายการเมนูของคุณและรายการเมนูทั้งหมดจะถูกแทนที่ด้วยช่องค้นหา!
แจ้งให้เราทราบหากมีบางสิ่งไม่ชัดเจน
jQuery
ฟังก์ชั่นที่ชอบappend()
หรือใช้prepend()
ไม่ได้กับเบราว์เซอร์ที่ปิดใช้งานจาวาสคริปต์