Skip to content

Instantly share code, notes, and snippets.

@bxtimur
Last active November 27, 2020 09:49
Show Gist options
  • Save bxtimur/52acc24731cff344e9ba3653baa1390a to your computer and use it in GitHub Desktop.
Save bxtimur/52acc24731cff344e9ba3653baa1390a to your computer and use it in GitHub Desktop.
<?
$context = Bitrix\Main\Application::getInstance()->getContext();
$request = $context->getCurrent()->getRequest();
/*
Отслеживаем 3 GET-параметра: title, subtitle и text (заголовок, подзаголовок и текст)
Соответствие между GET-параметром и значением хранится в инфоблоке с ID = SUBSTUTUTION_IBLOCK
в свойствах с символьными кодами TITLE, SUBTITLE и TEXT соответственно
А сами значения в TITLE_VAL, SUBTITLE_VAL и TEXT_VAL
*/
if ($request->get("title") || $request->get("subtitle") || $request->get("text")) {
$arLogicFilter = ["LOGIC" => "OR"];
if ($request->get("title"))
$arLogicFilter["PROPERTY_TITLE"] = $request->get("title");
if ($request->get("subtitle"))
$arLogicFilter["PROPERTY_SUBTITLE"] = $request->get("subtitle");
if ($request->get("text"))
$arLogicFilter["PROPERTY_TEXT"] = $request->get("text");
$arSubstitutionFilter = [
"IBLOCK_ID" => SUBSTUTUTION_IBLOCK,
"ACTIVE" => "Y",
$arLogicFilter
];
// Можно закешировать, чтобы каждый хит не отправлял запрос в БД
$objSubstitution = CIblockElement::GetList(
[], $arSubstitutionFilter, false, false, ["ID", "PROPERTY_SUBTITLE_VAL", "PROPERTY_TITLE_VAL", "PROPERTY_TEXT_VAL"]
);
$arSubstitutionValues = [];
while ($arSubstitution = $objSubstitution->GetNext()) {
if ($arSubstitution["PROPERTY_TITLE_VAL_VALUE"])
$arSubstitutionValues["TITLE"] = $arSubstitution["PROPERTY_TITLE_VAL_VALUE"];
if ($arSubstitution["PROPERTY_SUBTITLE_VAL_VALUE"]["TEXT"])
$arSubstitutionValues["SUBTITLE"] = $arSubstitution["~PROPERTY_SUBTITLE_VAL_VALUE"]["TEXT"];
if ($arSubstitution["PROPERTY_TEXT_VAL_VALUE"]["TEXT"])
$arSubstitutionValues["TEXT"] = $arSubstitution["~PROPERTY_TEXT_VAL_VALUE"]["TEXT"];
}
// В итоге в массиве $arSubstitutionValues хранятся необходимые значения для заголовка, подзаголовка и текста, если соответствия есть
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment