Проблема такая, когда добавляю в корзину товар, потом в поиске ввожу нужное мне наименование, открывается страница с результатами и там всегда в начале новой страницы поиска появляется товар из корзину.
Ссылка на сайт
Вот сейчас у меня в корзине гвозди
В поиске ввожу штукатурка
Когда нажимаю показать еще
И в начале новой страницы всегда появляются товары из корзины в таком виде
Код файла result_modifier.php из поиска
Шаблон поиска
Ссылка на сайт
Вот сейчас у меня в корзине гвозди
В поиске ввожу штукатурка
Когда нажимаю показать еще
И в начале новой страницы всегда появляются товары из корзины в таком виде
Код файла result_modifier.php из поиска
| Код |
|---|
<?php
if ($_REQUEST['action'] == 'add_item_popup') {
$APPLICATION->RestartBuffer();
if ($iItemId = intval($_REQUEST['id'])) {
CModule::includeModule('catalog');
$iQuantity = $_REQUEST['quantity'] ? : 1;
Add2BasketByProductID($iItemId, $iQuantity);
$arItem = CIBlockElement::GetByID($iItemId)->Fetch();
$sBasketPath = htmlspecialchars($_REQUEST['basket_url']);
$sPriceCode = htmlspecialchars($_REQUEST['price_code']);
$arParams = array(
"IBLOCK_TYPE" => $arItem['IBLOCK_TYPE_ID'],
"IBLOCK_ID" => $arItem['IBLOCK_ID'],
"ELEMENT_ID" => $arItem['ID'],
"BASKET_URL" => $sBasketPath,
"PRICE_CODE" => array(
$sPriceCode
),
"SET_TITLE" => "N",
"SET_STATUS_404" => "N",
"CACHE_TYPE" => "N",
"CACHE_TIME" => "36000000",
"CACHE_NOTES" => "",
"CACHE_GROUPS" => "Y",
"OFFERS_CART_PROPERTIES" => array(),
"ADD_TO_BASKET_ACTION" => array(),
"CURRENCY_ID" => "RUB",
'QUANTITY' => $iQuantity
);
//echo '<pre>'.print_r($arParams, true).'</pre>';
$APPLICATION->IncludeComponent(
"bitrix:catalog.element",
"add_item_popup",
$arParams
);
}
die();
}
$arResult['ELEMENTS'] = Array();
$arIDS = Array();
if (CModule::IncludeModule('sale') && CModule::IncludeModule('catalog') && CModule::IncludeModule('iblock') && count($arResult["SEARCH"]) > 0) {
foreach ($arResult['SEARCH'] as $arItem) {
if ($arItem['MODULE_ID'] == 'iblock' && $arItem['PARAM1'] == 'catalog') {
$arIDS[$arItem['PARAM2']][] = $arItem['ITEM_ID'];
}
}
foreach ($arIDS as $iblockID => $arIDFilter) {
if (!empty($arIDFilter)) {
$arPrices = CIBlockPriceTools::GetCatalogPrices($iblockID, $arParams["CATALOG_PRICE_CODE"]);
$arSelect = array(
"ID",
"IBLOCK_ID",
"IBLOCK_SECTION_ID",
"NAME",
"ACTIVE_FROM",
"DETAIL_PAGE_URL",
"DETAIL_TEXT",
"DETAIL_TEXT_TYPE",
"DETAIL_PICTURE",
"PREVIEW_TEXT",
"PREVIEW_TEXT_TYPE",
"PREVIEW_PICTURE",
"PROPERTY_*"
);
foreach ($arPrices as &$value) {
if (!$value['CAN_VIEW'] && !$value['CAN_BUY'])
continue;
$arSelect[] = $value["SEL ECT"];
$arFilter["CATALOG_SHOP_QUANTITY_" . $value["ID"]] = $arParams["SHOW_PRICE_COUNT"];
}
$rsItems = CIBlockElement::GetList(Array(), Array('IBLOCK_ID' => $iblockID, '=ID' => $arIDFilter), false, false, $arSelect);
while ($arItem = $rsItems->GetNext()) {
$arItem["PRICES"] = CIBlockPriceTools::GetItemPrices($iblockID, $arPrices, $arItem, $arParams['PRICE_VAT_INCLUDE'], $arConvertParams);
if (!empty($arItem["PRICES"])) {
foreach ($arItem['PRICES'] as &$arOnePrice) {
if ('Y' == $arOnePrice['MIN_PRICE']) {
$arItem['MIN_PRICE'] = $arOnePrice;
break;
}
}
unset($arOnePrice);
}
$arItem["CAN_BUY"] = CIBlockPriceTools::CanBuy($iblockID, $arPrices, $arItem);
$arResult['ELEMENTS'][] = $arItem;
}
}
}
}
|
Шаблон поиска
| Код |
|---|
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
/** @var array $arParams */
/** @var array $arResult */
/** @global CMain $APPLICATION */
/** @global CUser $USER */
/** @global CDatabase $DB */
/** @var CBitrixComponentTemplate $this */
/** @var string $templateName */
/** @var string $templateFile */
/** @var string $templateFolder */
/** @var string $componentPath */
/** @var CBitrixComponent $component */
$arCloudParams = array(
"SEARCH" => $arResult["REQUEST"]["~QUERY"],
"TAGS" => $arResult["REQUEST"]["~TAGS"],
"CHECK_DATES" => $arParams["CHECK_DATES"],
"arrFILTER" => $arParams["arrFILTER"],
"SORT" => $arParams["TAGS_SORT"],
"PAGE_ELEMENTS" => $arParams["TAGS_PAGE_ELEMENTS"],
"PERIOD" => $arParams["TAGS_PERIOD"],
"URL_SEARCH" => $arParams["TAGS_URL_SEARCH"],
"TAGS_INHERIT" => $arParams["TAGS_INHERIT"],
"FONT_MAX" => $arParams["FONT_MAX"],
"FONT_MIN" => $arParams["FONT_MIN"],
"COLOR_NEW" => $arParams["COLOR_NEW"],
"COLOR_OLD" => $arParams["COLOR_OLD"],
"PERIOD_NEW_TAGS" => $arParams["PERIOD_NEW_TAGS"],
"SHOW_CHAIN" => $arParams["SHOW_CHAIN"],
"COLOR_TYPE" => $arParams["COLOR_TYPE"],
"WIDTH" => $arParams["WIDTH"],
"CACHE_TIME" => $arParams["CACHE_TIME"],
"CACHE_TYPE" => $arParams["CACHE_TYPE"],
"RESTART" => $arParams["RESTART"],
);
if (is_array($arCloudParams["arrFILTER"])) {
foreach ($arCloudParams["arrFILTER"] as $strFILTER) {
if ($strFILTER == "main") {
$arCloudParams["arrFILTER_main"] = $arParams["arrFILTER_main"];
} elseif ($strFILTER == "forum" && IsModuleInstalled("forum")) {
$arCloudParams["arrFILTER_forum"] = $arParams["arrFILTER_forum"];
} elseif (strpos($strFILTER, "iblock_") === 0) {
if (isset($arParams["arrFILTER_" . $strFILTER]) && is_array($arParams["arrFILTER_" . $strFILTER])) {
foreach ($arParams["arrFILTER_" . $strFILTER] as $strIBlock)
$arCloudParams["arrFILTER_" . $strFILTER] = $arParams["arrFILTER_" . $strFILTER];
}
} elseif ($strFILTER == "blog") {
$arCloudParams["arrFILTER_blog"] = $arParams["arrFILTER_blog"];
} elseif ($strFILTER == "socialnetwork") {
$arCloudParams["arrFILTER_socialnetwork"] = $arParams["arrFILTER_socialnetwork"];
}
}
}
$APPLICATION->IncludeComponent("bitrix:search.tags.cloud", ".default", $arCloudParams, $component);
?><br/>
<div class="search-page">
<fo rm action="" method="get">
<input type="hidden" name="tags" value="<? echo $arResult["REQUEST"]["TAGS"] ?>"/>
<? if ($arParams["USE_SUGGEST"] === "Y"):
if (strlen($arResult["REQUEST"]["~QUERY"]) && is_object($arResult["NAV_RESULT"])) {
$arResult["FILTER_MD5"] = $arResult["NAV_RESULT"]->GetFilterMD5();
$obSearchSuggest = new CSearchSuggest($arResult["FILTER_MD5"], $arResult["REQUEST"]["~QUERY"]);
$obSearchSuggest->SetResultCount($arResult["NAV_RESULT"]->NavRecordCount);
}
?>
<? $APPLICATION->IncludeComponent(
"bitrix:search.suggest.input",
"",
array(
"NAME" => "q",
"VALUE" => $arResult["REQUEST"]["~QUERY"],
"INPUT_SIZE" => 40,
"DROPDOWN_SIZE" => 10,
"FILTER_MD5" => $arResult["FILTER_MD5"],
),
$component, array("HIDE_ICONS" => "Y")
);?>
<? else: ?>
<input type="text" name="q" value="<?= $arResult["REQUEST"]["QUERY"] ?>" size="40"/>
<? endif; ?>
<? if ($arParams["SHOW_WHERE"]): ?>
<sel ect name="where">
<option value=""><?= GetMessage("SEARCH_ALL") ?></option>
<? foreach ($arResult["DROPDOWN"] as $key => $value): ?>
<option
value="<?= $key ?>"<? if ($arResult["REQUEST"]["WHERE"] == $key) echo " selected" ?>><?= $value ?></option>
<? endforeach ?>
</select>
<? endif; ?>
<input type="submit" value="<?= GetMessage("SEARCH_GO") ?>"/>
<input type="hidden" name="how" value="<? echo $arResult["REQUEST"]["HOW"] == "d" ? "d" : "r" ?>"/>
<? if ($arParams["SHOW_WHEN"]): ?>
<sc ript>
var switch_search_params = function () {
var sp = document.getElementById('search_params');
var flag;
var i;
if (sp.style.display == 'none') {
flag = false;
sp.style.display = 'block'
}
else {
flag = true;
sp.style.display = 'none';
}
var from = document.getElementsByName('from');
for (i = 0; i < from.length; i++)
if (from[i].type.toLowerCase() == 'text')
from[i].disabled = flag;
var to = document.getElementsByName('to');
for (i = 0; i < to.length; i++)
if (to[i].type.toLowerCase() == 'text')
to[i].disabled = flag;
return false;
}
</sc ript>
<br/><a class="search-page-params" href="#"
oncl ick="return switch_search_params()"><? echo GetMessage('CT_BSP_ADDITIONAL_PARAMS') ?></a>
<div id="search_params" class="search-page-params"
st yle="display:<? echo $arResult["REQUEST"]["FROM"] || $arResult["REQUEST"]["TO"] ? 'block' : 'none' ?>">
<? $APPLICATION->IncludeComponent(
'bitrix:main.calendar',
'',
array(
'SHOW_INPUT' => 'Y',
'INPUT_NAME' => 'fr om',
'INPUT_VALUE' => $arResult["REQUEST"]["~FR OM"],
'INPUT_NAME_FINISH' => 'to',
'INPUT_VALUE_FINISH' => $arResult["REQUEST"]["~TO"],
'INPUT_ADDITIONAL_ATTR' => 'size="10"',
),
null,
array('HIDE_ICONS' => 'Y')
); ?>
</div>
<? endif ?>
</form>
<br/>
<? if (isset($arResult["REQUEST"]["ORIGINAL_QUERY"])):
?>
<div class="search-language-guess">
<?echo GetMessage("CT_BSP_KEYBOARD_WARNING", array("#query#" => '<a href="' . $arResult["ORIGINAL_QUERY_URL"] . '">' . $arResult["REQUEST"]["ORIGINAL_QUERY"] . '</a>'))?>
</div><br/><?
endif; ?>
<? if ($arResult["REQUEST"]["QUERY"] === false && $arResult["REQUEST"]["TAGS"] === false): ?>
<? elseif ($arResult["ERROR_CODE"] != 0): ?>
<p><?= GetMessage("SEARCH_ERROR") ?></p>
<? ShowError($arResult["ERROR_TEXT"]); ?>
<p><?= GetMessage("SEARCH_CORRECT_AND_CONTINUE") ?></p>
<br/><br/>
<p><?= GetMessage("SEARCH_SINTAX") ?><br/><b><?= GetMessage("SEARCH_LOGIC") ?></b></p>
<table border="0" cellpadding="5">
<tr>
<td align="center" valign="top"><?= GetMessage("SEARCH_OPERATOR") ?></td>
<td valign="top"><?= GetMessage("SEARCH_SYNONIM") ?></td>
<td><?= GetMessage("SEARCH_DESCRIPTION") ?></td>
</tr>
<tr>
<td align="center" valign="top"><?= GetMessage("SEARCH_AND") ?></td>
<td valign="top">and, &, +</td>
<td><?= GetMessage("SEARCH_AND_ALT") ?></td>
</tr>
<tr>
<td align="center" valign="top"><?= GetMessage("SEARCH_OR") ?></td>
<td valign="top">or, |</td>
<td><?= GetMessage("SEARCH_OR_ALT") ?></td>
</tr>
<tr>
<td align="center" valign="top"><?= GetMessage("SEARCH_NOT") ?></td>
<td valign="top">not, ~</td>
<td><?= GetMessage("SEARCH_NOT_ALT") ?></td>
</tr>
<tr>
<td align="center" valign="top">( )</td>
<td valign="top"> </td>
<td><?= GetMessage("SEARCH_BRACKETS_ALT") ?></td>
</tr>
</table>
<? elseif (count($arResult["SEARCH"]) > 0): ?>
<?
$obSectionComponent = new CBitrixComponent();
$obSectionComponent->initComponent('bitrix:catalog.section');
$obSectionComponent->arParams = array(
'DISPLAY_TOP_PAGER' => 'N',
'DISPLAY_BOTTOM_PAGER' => 'Y',
'BASKET_URL' => $arParams['BASKET_URL']
);
$obSectionComponent->arResult = array(
'ITEMS' => $arResult['ELEMENTS'],
'PRICES' => $arParams['CATALOG_PRICE_CODE'],
'NAV_STRING' => $arResult["NAV_STRING"],
);
$obSectionComponent->includeComponentTemplate();
?>
<? else: ?>
<? ShowNote(GetMessage("SEARCH_NOTHING_TO_FOUND")); ?>
<? endif; ?>
</div>
|