Jump to content
  • 0

Przeniesienie wyszukiwarki do menu górnego poziomego


webszaja

Question

Witam wszystkich posiadam pytanie takie jak w temacie. W jaki sposób można przenieść pole wyszukiwarki z lupą. Nie chodzi o załączenie opcji pola wyszukiwarki w menu tylko o przeniesienie głównej wyszukiwarki. 

 

Chodzi dokładnie o uzyskanie takiego efektu jak w załączniku.

 

post-816591-0-97819500-1476186230_thumb.png

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

jakiś czas temu napisałem tutorial o tym jak przenieść moduł koszyka do top menu:

https://mypresta.eu/en/art/developer/block-cart-in-top-menu.html

 

na tej samej podstawie przeniesiesz moduł block search do tej pozycji.

wykonaj kroki z tutorialu

  1. - zainstaluj darmowy moduł hooks manager
  2. - utwórz hooka displayInsideMenu
  3. - zmodyfikuj plik blocktopmenu.php jak w tutorialu

--------------------

i tutaj kończy się korzystanie z tutorialu

--------------------

 

  1. następnie w pliku modułu blocksearch.php dodaj funkcję:
    	public function hookDisplayInsideMenu($params)
    	{
    		$key = $this->getCacheId('blocksearch-top'.((!isset($params['hook_mobile']) || !$params['hook_mobile']) ? '' : '-hook_mobile'));
    		if (Tools::getValue('search_query') || !$this->isCached('blocksearch-top.tpl', $key))
    		{
    			$this->calculHookCommon($params);
    			$this->smarty->assign(array(
    				'blocksearch_type' => 'top',
    				'search_query' => (string)Tools::getValue('search_query')
    				)
    			);
    		}
    		Media::addJsDef(array('blocksearch_type' => 'top'));
    		return $this->display(__FILE__, 'blocksearch-top.tpl', Tools::getValue('search_query') ? null : $key);
    	} 
    
  2. w moduły > pozycje odepnij moduł wyszukiwarki z hooka displayTop
  3. w moduły > pozycje >przeszczep moduł - dodaj moduł wyszukiwarki do nowego hooka displayInsideTopMenu

 

następnie pewnie zostaną sprawy kosmetyczne związane z css

  • Like 1
Link to comment
Share on other sites

  • 0

Ok, z tym że nie potrafię znaleść pliku  blocksearch.php widzę tylko  blocksearch.tpl  gdzie to jest? dodałem funkcję  w taki sposób do blockserach.tpl:

 

{*

* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2016 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}
 
<!-- Block search module -->
<div id="search_block_left" class="block exclusive">
<p class="title_block">{l s='Search' mod='blocksearch'}</p>
<form method="get" action="{$link->getPageLink('search', true, null, null, false, null, true)|escape:'html':'UTF-8'}" id="searchbox">
    <label for="search_query_block">{l s='Search products:' mod='blocksearch'}</label>
<p class="block_content clearfix">
<input type="hidden" name="orderby" value="position" />
<input type="hidden" name="controller" value="search" />
<input type="hidden" name="orderway" value="desc" />
<input class="search_query form-control grey" type="text" id="search_query_block" name="search_query" value="{$search_query|escape:'htmlall':'UTF-8'|stripslashes}" />
<button type="submit" id="search_button" class="btn btn-default button button-small"><span><i class="icon-search"></i></span></button>
</p>
</form>
</div>
 
<script type="text/javascript">
public function hookDisplayInsideMenu($params)
{
$key = $this->getCacheId('blocksearch-top'.((!isset($params['hook_mobile']) || !$params['hook_mobile']) ? '' : '-hook_mobile'));
if (Tools::getValue('search_query') || !$this->isCached('blocksearch-top.tpl', $key))
{
$this->calculHookCommon($params);
$this->smarty->assign(array(
'blocksearch_type' => 'top',
'search_query' => (string)Tools::getValue('search_query')
)
);
}
Media::addJsDef(array('blocksearch_type' => 'top'));
return $this->display(__FILE__, 'blocksearch-top.tpl', Tools::getValue('search_query') ? null : $key);
 
</script>
<!-- /Block search module -->
 
czy jest to dobrze? bo niestety po zrobieniu wszystkiego z instrukcji podczas podpinania modułu wyszukiwarki nie ma dostępnego  hooka displayInsideTopMenu
 
 
 

post-816591-0-18937200-1476190229_thumb.jpg

Link to comment
Share on other sites

  • 0

ok jak edytuję dokładnie ten plik o ot jego treść:

 

<?php
/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2016 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/
 
if (!defined('_PS_VERSION_'))
exit;
 
class BlockSearch extends Module
{
public function __construct()
{
$this->name = 'blocksearch';
$this->tab = 'search_filter';
$this->version = '1.7.1';
$this->author = 'PrestaShop';
$this->need_instance = 0;
 
parent::__construct();
 
$this->displayName = $this->l('Quick search block');
$this->description = $this->l('Adds a quick search field to your website.');
$this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.6.99.99');
}
 
public function install()
{
if (!parent::install() || !$this->registerHook('top') || !$this->registerHook('header') || !$this->registerHook('displayMobileTopSiteMap') || !$this->registerHook('displaySearch'))
return false;
return true;
}
 
public function hookdisplayMobileTopSiteMap($params)
{
$this->smarty->assign(array('hook_mobile' => true, 'instantsearch' => false));
$params['hook_mobile'] = true;
return $this->hookTop($params);
}
 
/*
public function hookDisplayMobileHeader($params)
{
if (Configuration::get('PS_SEARCH_AJAX'))
$this->context->controller->addJqueryPlugin('autocomplete');
$this->context->controller->addCSS(_THEME_CSS_DIR_.'product_list.css');
}
*/
 
public function hookHeader($params)
{
$this->context->controller->addCSS(($this->_path).'blocksearch.css', 'all');
 
if (Configuration::get('PS_SEARCH_AJAX'))
$this->context->controller->addJqueryPlugin('autocomplete');
 
if (Configuration::get('PS_INSTANT_SEARCH'))
$this->context->controller->addCSS(_THEME_CSS_DIR_.'product_list.css');
 
if (Configuration::get('PS_SEARCH_AJAX') || Configuration::get('PS_INSTANT_SEARCH'))
{
Media::addJsDef(array('search_url' => $this->context->link->getPageLink('search', Tools::usingSecureMode())));
$this->context->controller->addJS(($this->_path).'blocksearch.js');
}
}
 
public function hookLeftColumn($params)
{
return $this->hookRightColumn($params);
}
 
public function hookRightColumn($params)
{
if (Tools::getValue('search_query') || !$this->isCached('blocksearch.tpl', $this->getCacheId()))
{
$this->calculHookCommon($params);
$this->smarty->assign(array(
'blocksearch_type' => 'block',
'search_query' => (string)Tools::getValue('search_query')
)
);
}
Media::addJsDef(array('blocksearch_type' => 'block'));
return $this->display(__FILE__, 'blocksearch.tpl', Tools::getValue('search_query') ? null : $this->getCacheId());
}
 
public function hookTop($params)
{
$key = $this->getCacheId('blocksearch-top'.((!isset($params['hook_mobile']) || !$params['hook_mobile']) ? '' : '-hook_mobile'));
if (Tools::getValue('search_query') || !$this->isCached('blocksearch-top.tpl', $key))
{
$this->calculHookCommon($params);
$this->smarty->assign(array(
'blocksearch_type' => 'top',
'search_query' => (string)Tools::getValue('search_query')
)
);
}
Media::addJsDef(array('blocksearch_type' => 'top'));
return $this->display(__FILE__, 'blocksearch-top.tpl', Tools::getValue('search_query') ? null : $key);
}
 
public function hookDisplayNav($params)
{
return $this->hookTop($params);
}
 
public function hookDisplaySearch($params)
    {
        return $this->hookRightColumn($params);
    }
 
private function calculHookCommon($params)
{
$this->smarty->assign(array(
'ENT_QUOTES' => ENT_QUOTES,
'search_ssl' => Tools::usingSecureMode(),
'ajaxsearch' => Configuration::get('PS_SEARCH_AJAX'),
'instantsearch' => Configuration::get('PS_INSTANT_SEARCH'),
'self' => dirname(__FILE__),
));
 
return true;
}
}
 
public function hookDisplayInsideMenu($params)
{
$key = $this->getCacheId('blocksearch-top'.((!isset($params['hook_mobile']) || !$params['hook_mobile']) ? '' : '-hook_mobile'));
if (Tools::getValue('search_query') || !$this->isCached('blocksearch-top.tpl', $key))
{
$this->calculHookCommon($params);
$this->smarty->assign(array(
'blocksearch_type' => 'top',
'search_query' => (string)Tools::getValue('search_query')
)
);
}
Media::addJsDef(array('blocksearch_type' => 'top'));
return $this->display(__FILE__, 'blocksearch-top.tpl', Tools::getValue('search_query') ? null : $key);
 
podmieniam go w pliku /modules/blocksearch/blocksearch.php bo w pliku: themes/default-bootstrap/modules/blocksearch go nie ma czyli dobrze ro robie czy coś nadal zle?
 
Po dokonaniu podmiany, wywala mi całą stronę i zaplecze sklepu wyświetla się error 500 i nie można nic zrobić do momentu podmiany starej wersji pliku blocksearch.php 
Link to comment
Share on other sites

  • 0

kod funkcji dodajemy tuż przed ostatnią klamrą, tak aby znajdował się w:

 

ok, teraz pojawił się problem z samą wyszukiwarką w menu przy widoku RWD ale niestandardowym

 

post-816591-0-86381000-1476815579_thumb.png

 

wyszukiwarka która została przesunięta, teraz brzydko wygląda na samym końcu menu przy takim widoku, pytanie czy dla takiego widoku można ją albo przesunąć w górę albo po prostu czy można wyłączyć całkowicie menu górne od momentu przeglądania na jakiejś rozdzielczości?

 

Dla rwd na mobile mam wyłączone jednak dla tabletów nie bo niektóre rozdzielczości są specyficzne, i tu pytanie czy można ustalić od jakiego momentu np. menu ma po prostu zniknąć całkowicie.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...