Готовые тиражные решения на 1С-Битрикс
Техническая поддержка:
+7-908-208-1965
Отдел продаж, с 7:00 до 18:00 (по Москве)
Звонок по России бесплатный
Вы также можете заказать звонок

FAQ ROMZA: SeoFilter — СЕО для умного фильтра

20:34:08 - 16.01.2018

1. Как показать/скрыть свойства СКУ в умной фильтре?
Перейдите в параметры необходимого раздела:
2017-09-01_12-39-39.png
Во вкладке "Свойства элементов" в списке "Свойства торговых предложений" напротив нужных свойств поставьте галочки:
2017-09-01_12-41-22.png
1. Самостоятельная интеграция модуля
  1. Скачиваем и устанавливаем модуль из Маркетплейс:
    Установка из Маркетплейс

  2. Находим текущий используемый шаблон в компоненте "Умный фильтр" Открываем страницу любого раздела и включаем режим правки
     Режим правки

  3. Находим на странице компонент "Умный фильтр" и жмем редактировать шаблон компонента
    Компонент умный фильтр

  4. В открывшимся окне видим путь до файла шаблона, жмем "редактировать в панели управления"
    Путь до шаблона

  5. В Административной части заходим в папку шаблона и открываем на редактирование (или создаем файл result_modifier.php)
    Папка шаблона

  6. Добавляем код в самый низ файла
    if (\Bitrix\Main\Loader::includeModule('yenisite.seofilter')) {
    	CRZSeoFilter::init($this);
    }
    
    Код в result_modifier

  7. На этом этапе у Вас заработает установка всех СЕО параметров, кроме SEO текстов для описания (RZ_SEO_TOP, RZ_SEO_BOT, RZ_SEO_MID) и не будет поддержки работы фильтра по AJAX.

  8. Начнем с описаний. В нужных местах шаблона вам надо разместить заглушки по имени области
    #RZ_SEO_TOP# — Верхнее описание
    #RZ_SEO_BOT# — Нижнее описание
    #RZ_SEO_MID# — Дополнительное описание

    Эти заглушки будут заменены на описания из фильтра, либо если фильтр не активен, то будет произведена замена из поля "Описание" [DESCRIPTION] для текущего раздела.

    !!! ВНИМАНИЕ !!! в логике работы предусмотрено разделение описания раздела по тегу #DELIMETER#, 
    то есть если ваше описание раздела выглядит как 
    "Верхний текст #DELIMETER# нижний сео текст"
    то модуль автоматически разобьет такое описание на два 
    "Верхний текст" и "нижний сео текст" и соответственно заменит хэштеги #RZ_SEO_TOP# и #RZ_SEO_BOT#

  9. !!! ВНИМАНИЕ !!! для выполнения дальнейших пунктов необходимо обладать навыками веб-разработчика, также настоятельно рекомендуем перед редактированием файлов создать для них резервные копии

  10. Чтобы использовать поддержку AJAX применения фильтра, вам достаточно использовать встроенную в модуль функцию window.rzSeoFilter которая в качестве единственного аргумента принимает объект который будет доступен а $arResult['SEO_FILTER']. На примере стандартного шаблона Умного фильтра (который входит в поставку Битрикс) достаточно добавить такую строку в файл script.js в папке шаблона:
    if ('SEO_FILTER' in result && typeof window.rzSeoFilter != 'undefined') {
    	window.rzSeoFilter(result.SEO_FILTER);
    }
    
    В функцию
    JCSmartFilter.prototype.postHandler
    Стандартный компонент фильтра

    Теперь все СЕО параметры (кроме текстов описания RZ_SEO_TOP, RZ_SEO_BOT, RZ_SEO_MID) будут заменятся "на лету". Учтите что тег H1 должен быть единственным на странице!


  11. Теперь для полноценной AJAX поддержки осталось только добавить замену на AJAX нужных описаний, вот примерный код которым можно воспользоватся в той же функции 
    JCSmartFilter.prototype.postHandler
    Все необходимые данные уже есть у нас в объекте result.SEO_FILTER
    if('SEO_TEXT' in result.SEO_FILTER) {
    	if('RZ_SEO_TOP' in result.SEO_FILTER.SEO_TEXT) {
    		var $desc = $('.rz_category_desc_top'); // нужный селектор верхнего описания
    		if($desc.length) {
    			$desc.html(result.SEO_FILTER.SEO_TEXT.RZ_SEO_TOP);
    		}
    	}
    	if('RZ_SEO_BOT' in result.SEO_FILTER.SEO_TEXT) {
    		var $desc = $('.rz_category_desc_bottom');  // нужный селектор нижнего описания
    		if($desc.length) {
    			$desc.html(result.SEO_FILTER.SEO_TEXT.RZ_SEO_BOT);
    		}
    	}
    }
    
  12. Конечный результат
2. Управление наследованием правил по подразделам
Данный функционал работает следующим образом:
К примеру у вас есть правило для корневого подраздела:
2017-04-27_1236.png
Это означает, что для любого подраздела будет срабатывать это правило.
В данном примере рассматривается правило, которое применяется при фильтрации товаров по наличию.
Вот пример в разделе:
2017-04-27_1240.png
В подразделе:
2017-04-27_1241.png
Как мы видим, и в разделе и в подразделе-изменились метаданные.
Предположим, что вам не нужно, чтобы данное правило работало в подразделе.
Для этого идем в подраздел в админке сайта, и отключаем наследование:
2017-04-27_1242.png
Нажимаем эту кнопку-и наследование отключается.
Таким образом, в подразделе данное правило работать не будет.


3. Как создать правило для SEO Filter
Для создания правила для работы SEO Filter нужно перейти в каталог товаров и перейти в редактирование нужного раздела:

2017-06-06_0807.png

В открывшемся окне нужно перейти на вкладку "ROMZA: SEO Умного фильтра"

2017-07-05_0852.png

Для добавления правила нужно нажать "Добавить" и заполнить все необходимые поля, а так же обязательно добавить условие по которому это правило будет срабатывать.
4. Как правильно создать условие для SEO Filter и зачем условие нужно?
Для того, что бы созданное правило сработало, обязательно нужно указать условие при котором будет работать это правило.
Это связано с тем, что модуль позволяет создать несколько разных правил и для того что бы они сработали нужно условие.

Если у Вас одно правило но срабатывает на разные условия, то их можно указать сразу в этом же правиле. Например у Вас правило с SEO текстом подходит для любого бренда, то в правиле создается множество условий по каждому бренду:

2017-07-05_0915.png

Логический оператор "ИЛИ" указывает на то, что правило будет работать если выбрать один из указанных брендов в условиях.
Если поставить оператор "И", то правило сработает если выбраны оба бренда что указаны в условии.

В одном правиле при создании условия нельзя указывать одновременно "И" и "ИЛИ". 
5. Правило срабатывает при несколько выбранных значениях, что делать?
Рассмотрим такую ситуацию. У Вас в Seo Filter настроено правило в котором стоит условие на определенный бренд. Например Apple.
Если в разделе выбрать бренд Apple? то правило срабатывает, однако если к выбранному бренду выбрать еще один какой нибудь, то правило не отменяется и все равно работает.

Логика работы такова: Если бренд выбран то условие выполняется и неважно сколько брендов при этом выбрал пользователь.
Что бы этого избежать, нужно условие прописывать следующим образом:

2017-07-11_1559.png

В этом условии указано что правило будет работать только если выбран бренд Balteco и если вместе с ним выбрать еще Bas то правило уже не сработает.
6. Как добавить страницы SEO filter в поисковые системы
Что бы страницы, созданные SEO Filter появились в поисковых системах, необходимо ссылки на сгенерированные страницы явно указать на Вашем сайте, или добавить их в Карту сайта, что бы робот от поисковой системы их увидел и проиндексировал.
7. Периодически пропадает авторизация пользователя на сайте
Возможные проблемы и способы их решения:
  • Лишние переносы строк (или иные символы) в скриптах конфигурации. Необходимо убедиться, что в коде файлов dbconn.php, init.php и after_connect.php, расположенных в папке bitrix/php_interface, не содержится переносов строк перед "".
  • Файлы с сессиями продукта создаются, но PHP не хватает прав, чтобы к ним обратиться. Попробуйте в файле /bitrix/php_interface/dbconn.php закомментировать строку:
    //@umask(~BX_DIR_PERMISSIONS);
  • Установлен лимит времени на бездействие пользователя, при превышении которого сессия удаляется. Вам необходимо в настройках группы пользователя на вкладке Безопасность увеличить значение Время жизни сессии (минут).

    Значение по умолчанию можно изменить в файле php.ini (Bitrix Environment\Apache2\zendserver\etc): параметр session.gc_maxlifetime.

  • Значение параметра Маска сети для привязки сессии в настройках безопасности группы пользователей. Если оно равно, например, 255.255.255.255, то это означает, что при изменении IP пользователя, авторизация будет сброшена.
  • Значение параметра session.cookie_domain в файле php.ini на сервере. Если оно задано - убедитесь, что оно соответствует URL вашего сайта. Если значение параметра session.cookie_domain равно www.site.ru, а Вы обращаетесь к системе по URL site.ru, то в этом случае сессия не будет сохранена, и, соответственно, авторизация не сохранится.

    Для решения проблемы необходимо установить в настройках PHP корректное значение параметра session.cookie_domain.

  • Неверно прописан домен в настройках главного модуля и для сайта отдельно.

    Проверьте значение поля URL сайта на странице административного режима Настройки > Настройки продукта > Настройки модулей > Главный модуль.

    Проверить значение поля URL сервера можно, открыв настройки нужного сайта на странице административного раздела Настройки > Настройки продукта > Сайты > Список сайтов.

    Примечание: также одной из причин может быть некорректное значение в параметрах сайта поля Путь к корневой папке веб-сервера для этого сайта, либо Доменное имя. Доменное имя можно сменить или удалить путем внесения изменений в файл /hosts.

  • При переносе сайта не скопировался файл /.access.php. В данном файле хранятся права групп пользователей к сайту, и если данного файла нет, то для всех пользователей право доступа устанавливается как Запрещен.

    Проблема решается одним из способов:

    • вам надо на странице административного раздела Контент > Структура сайта > Файлы и папки в меню действий корневой папки сайта выбрать пункт Свойства папки и на вкладке Доступ установить для группы Все пользователи (в том числе неавторизованные) право Чтение;
    • в корневую папку сайта загрузить файл .access.php со следующим содержанием:
      <? $PERM["/"]["*"]="R"; ?>
      
  • Если при многосайтовости вас выкидывает на форму авторизации при переходе по публичным страницам сайта, проверьте содержимое файла .access.php на идентичность следующему коду:
    <?
    $PERM["/"]["*"]="R";
    ?>
    
  • Авторизация не учитывается на вашем домене.

    На закладке Авторизация страницы настроек главного модуля (Настройки > Настройки продукта > Настройки модулей > Главный модуль) поставьте галочку в поле Распространять авторизацию на все домены.

  • Проблема может быть в работе сервера (нужна поддержка сессий в php, должна быть указана папка сохранения сессий и права на запись в эту папку).

    Проверьте исправность работы сервера с сессиями с помощью данного скрипта и в случае наличия неполадок обратитесь к администратору сервера.

8. Что делать-если вы забыли пароль администратора?

Для восстановления пароля администратора сохраните следующий скрипт в php-файл c любым именем:

<?
require($_SERVER['DOCUMENT_ROOT']."/bitrix/header.php");
echo $USER->Update(1,array("PASSWORD"=>'Bitrix*123456'));
echo $USER->LAST_ERROR;
require($_SERVER['DOCUMENT_ROOT']."/bitrix/footer.php");
?>

Закачайте через FTP на сайт и откройте его в браузере. После этого у пользователя с ID=1 (по умолчанию - администратор) установится пароль: Bitrix*123456

После этого авторизуйтесь и в панели управления установите свой пароль.

Внимание! Обязательно удалите этот файл после восстановления пароля!

Если доступ для неавторизованных пользователей закрыт, то перед процедурой восстановления пароля надо поправить файл .access.php в корне сайта, заменив:

$PERM["/"]["*"]="D";
на:
$PERM["/"]["*"]="R";
А после сброса вернуть изменения назад. 
1. Включить расширенный вывод ошибок можно в файле настроек .settings.php
Если вы наблюдаете такую ошибку: Включить расширенный вывод ошибок можно в файле настроек .settings.php

Вам необходимо перейти: Административная панель - Файлы и папки - bitrix - .setting.php
8.png


Найти строчку: 'debug' => false,
false заменить на true

9.png
2. Как сделать бекап сайтов, находящихся в многосайтовости?

Если в системе есть несколько сайтов, то создавать резервные копии можно в любой комбинации из них. Для этого используйте чекбоксы, появляющиеся в форме создания резервной копии.

Резервное копирование при использовании многосайтовости имеет свои особенности:

  • Можно выбирать сайты для копирования, оставляя в архивах только нужные вам проекты.
  • Восстановление сайтов потребует дополнительных действий со стороны администратора.
  • Этот способ копирования работает только для сайтов DOCUMENT_ROOT которых различны. (То есть для многосайтовости на разных доменах)
  • База данных полностью копируется в архив. Даже тех сайтов, которые не были указаны в чекбоксах выбора сайтов.

При выборе сайтов для архивирования учтите, что в состав архива полностью копируется только первый по сортировке сайт (из выбранных) в списке сайтов. Соответственно, при восстановлении полностью в работоспособном состоянии восстанавливается только этот сайт.

Публичная часть остальных сайтов сохраняется в архиве в папках вида /bitrix/backup/sites/_ID_сайта_. После распаковки архива администратор должен будет вручную перенести папки публичной части архивируемых сайтов в соответствующие папки на сервере. (В процессе распаковки появится предупреждение, что архив содержит несколько публичных частей.)

Многосайтовость надо восстановить вручную (восстановить симлинки). Только после этого остальные сайты будут работоспособны.