Полный цикл в digital

Свой модуль "прокрутка страницы"

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

  • Пака модуля falbar.totop название в системе используется как индификатор, так что рекомендуется добавлять помимо названия и имя партнера. Соответственно falbar – имя партнера, totop – название модуля;
  • Папка install набор скриптов для установки и удаления модуля:
    assets в этой папке я разместил JavaScript и CSS нашей кнопки, которые будут подключаться в пользовательской части
    index.php файл в котором содержится описание модуля и реализуется установка и удаление
    step.php шаг установки не обязательный файл
    unset.php шаг удаления не обязательный файл
    version.php в нем указывается версия и время обновления нашего модуля
  • Папка lang все языковые параметры я вынес в соответствующие ленговые файлы
  • Папка lib параметры которые нужны для настройки кнопки на стороне клиента необходимо получить, вот для этого и понадобиться класс Main реализованный в файле Main.php
  • Файл include.php подключается при вызове модуля в коде (его мы использовать не будем и оставим пустым)
  • Файл options.php страница настроек модуля для пользователя подключаемая в административной части

Файл version.php

Указываем в массиве два параметра версию и время обновление модуля:

<?
/*
* Файл local/modules/falbar.totop/install/version.php
*/
$arModuleVersion = array(
"VERSION" => "1.0.0",
"VERSION_DATE" => "0000-00-00 00:00:00"
);

Файл install/index.php

Теперь нам нужно написать класс, в котором будет реализована установка и удаление модуля. Имя класса должно соответствовать папке модуля и являться наследником от CModule. Метод doInstall() вызывается при установке модуля из панели управления, метод doUninstall() при деинсталляции модуля. Метод doInstall() подключает файл step.php, а метод doUninstall() — файл unstep.php

<?
/*
* Файл local/modules/falbar.totop/install/index.php
*/
/*
* подключаем пролог битрикс
*/
require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");
/*
* подключение класса через пространство имен
*/
// финальный класс для работы с языковыми файлами
use Bitrix\Main\Localization\Loc;
// управление (регистрация) модуля в системе/базе
use Bitrix\Main\ModuleManager;
// класс для работы с параметрами модулей хранимых в базе данных
use Bitrix\Main\Config\Option;
// класс кратко и долгосрочной регистрации обработчиков событий
use Bitrix\Main\EventManager;
// абстрактный класс для любых приложений, любой конкретный класс приложения является наследником этого абстрактного
класса
use Bitrix\Main\Application;
// класс для работы с директориями
use Bitrix\Main\IO\Directory;

/*
* подключаем языковые файлы
*/
Loc::loadMessages(__FILE__);

/*
* класс для подключения/удаления модуля
*/
class falbar_totop extends CModule{

/*
* основные свойства модуля
*/
public function __construct() {
// если файл version.php существует
if(file_exists(__DIR__."/version.php")) {
// создаем пустой массив из файла version.php
$arModuleVersion = array();
// подключаем файл version.php
include_once(__DIR__."/version.php");
// переменные для основных свойств
$this->MODULE_ID = str_replace("_", ".", get_class($this));
$this->MODULE_VERSION = $arModuleVersion["VERSION"];
$this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"];
$this->MODULE_NAME = Loc::getMessage("FALBAR_TOTOP_NAME");
$this->MODULE_DESCRIPTION = Loc::getMessage("FALBAR_TOTOP_DESCRIPTION");
$this->PARTNER_NAME = Loc::getMessage("FALBAR_TOTOP_PARTNER_NAME");
$this->PARTNER_URI = Loc::getMessage("FALBAR_TOTOP_PARTNER_URI");
}
return false;
}

/*
* метод установки модуля, запускается автоматически при инициализации установки в админке
*/
public function DoInstall(){
global $APPLICATION;
// проверка версии Битрикс
if(CheckVersion(ModuleManager::getVersion("main"), "14.00.00")){
// вызов метода копирующего css и js
$this->InstallFiles();
// вызов метода для добавления базы
$this->InstallDB();
// регистрация модуля в системе
ModuleManager::registerModule($this->MODULE_ID);
// вызов метода для регистрации OnBeforeEndBufferContent
$this->InstallEvents();
} else {
// если версия битрикс меньше 14, значит выводим сообщение
$APPLICATION->ThrowException(
Loc::getMessage("FALBAR_TOTOP_INSTALL_ERROR_VERSION")
);
}
// подключаем файл step.php который сообщает об успешной установке
$APPLICATION->IncludeAdminFile(
Loc::getMessage("FALBAR_TOTOP_INSTALL_TITLE")." \"".Loc::getMessage("FALBAR_TOTOP_NAME")."\"",__DIR__."/step.php"
);
return false;
}

/*
* метод копирующей css и js
*/
public function InstallFiles(){
// копируем js
CopyDirFiles(
__DIR__."/assets/scripts",
Application::getDocumentRoot()."/bitrix/js/".$this->MODULE_ID."/",
true,
true
);
// копируем css
CopyDirFiles(
__DIR__."/assets/styles",
Application::getDocumentRoot()."/bitrix/css/".$this->MODULE_ID."/",
true,
true
);
return false;
}

/*
* метод для работы с базой
*/
public function InstallDB(){
return false;
}

/*
* метод для регистрации OnBeforeEndBufferContent. перед тем, как страница будет отрисоваться, мы добавим свой HTML код,
в котором сохраним настройки для нашей кнопки. этот весь механизм реализован в файле Main.php
*/
public function InstallEvents() {
EventManager::getInstance()->registerEventHandler(
"main",
"OnBeforeEndBufferContent",
$this->MODULE_ID,
"Falbar\ToTop\Main",
"appendScriptsToPage"
);
return false;
}

/*
* удаление модуля
*/
public function DoUninstall(){
global $APPLICATION;
// вызов метода удаляющего css и js
$this->UnInstallFiles();
// вызов метода для удаления информации базы
$this->UnInstallDB();
// вызов метода для удаления регистрации OnBeforeEndBufferContent
$this->UnInstallEvents();
// удаление информации о регистрации модуля в системе
ModuleManager::unRegisterModule($this->MODULE_ID);
// подключаем файл unstep.php который сообщает об успешном удалении
$APPLICATION->IncludeAdminFile(
Loc::getMessage("FALBAR_TOTOP_UNINSTALL_TITLE")." \"".Loc::getMessage("FALBAR_TOTOP_NAME")."\"",__DIR__."/unstep.php"
);
return false;
}

/*
* метод удаляет добавленные файлы js и css из системы
*/
public function UnInstallFiles(){
// удаляем директорию по указанному полному пути до папки
Directory::deleteDirectory(
Application::getDocumentRoot()."/bitrix/js/".$this->MODULE_ID
);
// удаляем директорию по указанному полному пути до папки
Directory::deleteDirectory(
Application::getDocumentRoot()."/bitrix/css/".$this->MODULE_ID
);
return false;
}

/*
* метод удаляет данные из базы
*/
public function UnInstallDB(){
Option::delete($this->MODULE_ID);
return false;
}

/*
* метод удаляет регистрационную запись обработчика события OnBeforeEndBufferContent
*/
public function UnInstallEvents(){
EventManager::getInstance()->unRegisterEventHandler(
"main",
"OnBeforeEndBufferContent",
$this->MODULE_ID,
"Falbar\ToTop\Main",
"appendScriptsToPage"
);
return false;
}

}

Файл lang/ru/install/index.php

<?
/*
 * Файл local/modules/falbar.totop/lang/ru/install/index.php
 */
$MESS["FALBAR_TOTOP_NAME"]                  = "Кнопка наверх";
$MESS["FALBAR_TOTOP_DESCRIPTION"]           = "Добавляет кнопку наверх на сайт.";
$MESS["FALBAR_TOTOP_PARTNER_NAME"]          = "hmarketing";
$MESS["FALBAR_TOTOP_PARTNER_URI"]           = "https://hmarketing.ru";
$MESS["FALBAR_TOTOP_INSTALL_ERROR_VERSION"] = "Версия главного модуля ниже 14. Не поддерживается технология D7, необходимая модулю. Пожалуйста обновите систему.";
$MESS["FALBAR_TOTOP_INSTALL_TITLE"]         = "Установка модуля";
$MESS["FALBAR_TOTOP_UNINSTALL_TITLE"]       = "Деинсталляция модуля";

Файл install/step.php

<?
/*
* Файл local/modules/falbar.totop/install/step.php
*/
/*
* подключение класса через пространство имен
*/
use Bitrix\Main\Localization\Loc;

/*
* подключаем языковые файлы
*/
Loc::loadMessages(__FILE__);

/*
* защита формы от ботов
*/
if(!check_bitrix_sessid()){
return;
}

/*
* вывод информации в админке
*/
if($errorException = $APPLICATION->GetException()){
// если что-то пошло не так
echo(CAdminMessage::ShowMessage($errorException->GetString()));
}else{
// сообщение об установки модуля
echo(CAdminMessage::ShowNote(Loc::getMessage("FALBAR_TOTOP_STEP_BEFORE")."
".Loc::getMessage("FALBAR_TOTOP_STEP_AFTER")));
}
?>

<?
/*
* кнопка вернутся в список модулей
*/
?>
<form action="<? echo($APPLICATION->GetCurPage()); ?>">
<input type="hidden" name="lang" value="<? echo(LANG); ?>" />
<input type="submit" value="<? echo(Loc::getMessage("FALBAR_TOTOP_STEP_SUBMIT_BACK")); ?>">
</form>

Файл lang/ru/install/step.php

<?
/*
 * Файл local/modules/falbar.totop/lang/ru/install/step.php
 */
$MESS["FALBAR_TOTOP_STEP_BEFORE"]        = "Модуль";
$MESS["FALBAR_TOTOP_STEP_AFTER"]         = "установлен";
$MESS["FALBAR_TOTOP_STEP_SUBMIT_BACK"]   = "Вернуться в список";

Файл install/unstep.php

<?
/*
* Файл local/modules/falbar.totop/install/unstep.php
*/
/*
* подключение класса через пространство имен
*/
use Bitrix\Main\Localization\Loc;

/*
* подключаем языковые файлы
*/
Loc::loadMessages(__FILE__);

/*
* защита формы от ботов
*/
if(!check_bitrix_sessid()){
return;
}

/*
* вывод информации в админке
*/
echo(CAdminMessage::ShowNote(Loc::getMessage("FALBAR_TOTOP_UNSTEP_BEFORE")."
".Loc::getMessage("FALBAR_TOTOP_UNSTEP_AFTER")));
?>

<?
/*
* кнопка вернутся в список модулей
*/
?>
<form action="<? echo($APPLICATION->GetCurPage()); ?>">
<input type="hidden" name="lang" value="<? echo(LANG); ?>" />
<input type="submit" value="<? echo(Loc::getMessage("FALBAR_TOTOP_UNSTEP_SUBMIT_BACK")); ?>">
</form>

Файл lang/ru/install/unstep.php

<?
/*
 * Файл local/modules/falbar.totop/lang/ru/install/unstep.php
 */
$MESS["FALBAR_TOTOP_UNSTEP_BEFORE"]      = "Модуль";
$MESS["FALBAR_TOTOP_UNSTEP_AFTER"]       = "удален";
$MESS["FALBAR_TOTOP_UNSTEP_SUBMIT_BACK"] = "Вернуться в список";

Файл options.php

Выше мы уже узнали, что страница настроек находится в файле options.php, сейчас он пуст. Надо описать настройки модуля и поместить их в массив. Через панель управления контент менеджер сможет:

  • Включать/выключать модуль
  • Изменять ширину/высоту/радиус и цвет кнопки
  • Менять положение кнопки и скорость анимации

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

<?
/*
* Файл local/modules/falbar.totop/options.php
*/
/*
* подключение класса через пространство имен
*/
// финальный класс для работы с языковыми файлами
use Bitrix\Main\Localization\Loc;
// класс отвечает за обычный http-хит на сайте
use Bitrix\Main\HttpApplication;
// класс для загрузки необходимых файлов, классов и модулей
use Bitrix\Main\Loader;
// класс для работы с параметрами модулей хранимых в базе данных
use Bitrix\Main\Config\Option;

/*
* подключаем языковые файлы
*/
Loc::loadMessages(__FILE__);

/*
* получаем id модуля
*/
$request = HttpApplication::getInstance()->getContext()->getRequest();
$module_id = htmlspecialcharsbx($request["mid"] != "" ? $request["mid"] : $request["id"]);

/*
* подключаем наш модуль
*/
Loader::includeModule($module_id);

/*
* настройки модуля для админки в том числе значения по умолчанию
*/
$aTabs = array(
array(
// первая вкладка «Основные настройки»
"DIV" => "edit",
"TAB" => Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_NAME"),
"TITLE" => Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_NAME"),
"OPTIONS" => array(
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_COMMON"),
array(
"switch_on", // имя элемента формы
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_SWITCH_ON"), // поясняющий текст — «Включить прокрутку»
"Y", // значение по умолчанию «да»
array("checkbox") // тип элемента формы — checkbox
),
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_APPEARANCE"),
array(
"width",
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_WIDTH"),
"50",
array("text", 5)
),
array(
"height",
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_HEIGHT"),
"50",
array("text", 5)
),
array(
"radius",
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_RADIUS"),
"50",
array("text", 5)
),
array(
"color",
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_COLOR"),
"#bf3030",
array("text", 5)
),
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_POSITION_ON_PAGE"),
array(
"side",
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_SIDE"),
"left",
array("selectbox", array(
"left" => Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_SIDE_LEFT"),
"right" => Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_SIDE_RIGHT")
))
),
array(
"indent_bottom",
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_INDENT_BOTTOM"),
"10",
array("text", 5)
),
array(
"indent_side",
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_INDENT_SIDE"),
"10",
array("text", 5)
),
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_ACTION"),
array(
"speed",
Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_SPEED"),
"normal",
array("selectbox", array(
"slow" => Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_SPEED_SLOW"),
"normal" => Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_SPEED_NORMAL"),
"fast" => Loc::getMessage("FALBAR_TOTOP_OPTIONS_TAB_SPEED_FAST")
))
)
)
)
);

/*
* сохранения выбранных пользователем настроек
*/
if($request->isPost() && check_bitrix_sessid()){
// цикл по вкладкам
foreach($aTabs as $aTab){
foreach($aTab["OPTIONS"] as $arOption){
// если это название секции
if(!is_array($arOption)){
continue;
}
// если это примечание
if($arOption["note"]){
continue;
}
// сохраняем введенные настройки
if($request["apply"]){
$optionValue = $request->getPost($arOption[0]);
if($arOption[0] == "switch_on"){
if($optionValue == ""){
$optionValue = "N";
}
}
// устанавливаем выбранные значения параметров и сохраняем в базу данных
Option::set($module_id, $arOption[0], is_array($optionValue) ? implode(",", $optionValue) : $optionValue);
}elseif($request["default"]){
// устанавливаем дефолтные значения параметров и сохраняем в базу данных
Option::set($module_id, $arOption[0], $arOption[2]);
}
}
}
// редирект на прежнию страницу
LocalRedirect($APPLICATION->GetCurPage()."?mid=".$module_id."&lang=".LANG);
}

/*
* отрисовываем форму, для этого создаем новый экземпляр класса CAdminTabControl, куда и передаём массив с настройками
*/
$tabControl = new CAdminTabControl(
"tabControl",
$aTabs
);
$tabControl->Begin();
?>

<?// HTML код формы?>
<form action="<? echo($APPLICATION->GetCurPage()); ?>?mid=<? echo($module_id); ?>&lang=<?
echo(LANG); ?>" method="post">
<?
foreach($aTabs as $aTab){
if($aTab["OPTIONS"]){
$tabControl->BeginNextTab();
__AdmSettingsDrawList($module_id, $aTab["OPTIONS"]);
}
}
$tabControl->Buttons();
?>
<input type="submit" name="apply" value="<? echo(Loc::GetMessage("FALBAR_TOTOP_OPTIONS_INPUT_APPLY")); ?>"
class="adm-btn-save" />
<input type="submit" name="default" value="<? echo(Loc::GetMessage("FALBAR_TOTOP_OPTIONS_INPUT_DEFAULT")); ?>"
/>
<?echo(bitrix_sessid_post());?>
</form>
<?
// обозначаем конец отрисовки формы
$tabControl->End();
?>

В обработчике мы также используем массив с параметрами для удобства сохранения, хотя это один из способов, в конце, конечно, нужно сделать редирект. Все настройки мы сохраняем при помощи статического метода set() у класса Option, который нужен именно для работы с настройками модуля.

Файл lang/ru/options.php

<?
/*
 * Файл local/modules/falbar.totop/lang/ru/options.php
 */
$MESS["FALBAR_TOTOP_OPTIONS_TAB_NAME"]             = "Настройки";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_COMMON"]           = "Общие";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_SWITCH_ON"]        = "Включить:";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_APPEARANCE"]       = "Внешний вид";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_WIDTH"]            = "Ширина (пикселей):";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_HEIGHT"]           = "Высота (пикселей):";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_RADIUS"]           = "Радиус (пикселей):";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_COLOR"]            = "Цвет фона:";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_POSITION_ON_PAGE"] = "Положение на странице";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_SIDE"]             = "Положение кнопки:";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_SIDE_LEFT"]        = "Слева";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_SIDE_RIGHT"]       = "Справа";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_INDENT_BOTTOM"]    = "Отступ от нижнего края (пикселей):";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_INDENT_SIDE"]      = "Боковой отступ (пикселей):";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_ACTION"]           = "Поведение";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_SPEED"]            = "Скорость прокрутки:";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_SPEED_SLOW"]       = "Низкая";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_SPEED_NORMAL"]     = "Средняя";
$MESS["FALBAR_TOTOP_OPTIONS_TAB_SPEED_FAST"]       = "Высокая";
$MESS["FALBAR_TOTOP_OPTIONS_INPUT_APPLY"]          = "Применить";
$MESS["FALBAR_TOTOP_OPTIONS_INPUT_DEFAULT"]        = "По умолчанию";

Файл lib/Main.php

Тут могут быть разные пути для решения этой задачи. В самом начале статьи, когда мы описывали код установки модуля, мы привязались к событию перед отрисовкой страницы и указали метод appendScriptsToPage() класса Main как обработчик.

В методе мы определили, что он будет отрабатывать только на стороне клиента. Далее сформировали HTML код с набором настроек в json формате для удобства и добавили его в HEAD документа. В конце подключили скрипты и стили нашего Битрикс модуля кнопка наверх.

На этом все - параметры переданы, осталось их обработать на стороне клиента.

<?
/*
* Файл local/modules/falbar.totop/lib/Main.php
*/
/*
* подключение класса через пространство имен
*/
// определяем пространство имен Falbar\ToTop
namespace Falbar\ToTop;
// класс для работы с параметрами модулей хранимых в базе данных
use Bitrix\Main\Config\Option;
// класс для подключение стилей и скриптов
use Bitrix\Main\Page\Asset;

/*
* привязались к событию перед отрисовкой страницы и указали метод appendScriptsToPage() класса Main как обработчик
*/
class Main{
public function appendScriptsToPage(){
// проверяем административный раздел
if(!defined("ADMIN_SECTION") && $ADMIN_SECTION !== true){
// информация о пути к файлу
$module_id = pathinfo(dirname(__DIR__))["basename"];
// добавляем строку json со скриптом из которого будем чит параметры кнопки
Asset::getInstance()->addString(
"<script id=\"".str_replace(".", "_", $module_id)."-params\" data-params='".json_encode(
array(
"switch_on" => Option::get($module_id, "switch_on", "Y"),
"width" => Option::get($module_id, "width", "50"),
"height" => Option::get($module_id, "height", "50"),
"radius" => Option::get($module_id, "radius", "50"),
"color" => Option::get($module_id, "color", "#bf3030"),
"side" => Option::get($module_id, "side", "left"),
"indent_bottom" => Option::get($module_id, "indent_bottom", "10"),
"indent_side" => Option::get($module_id, "indent_side", "10"),
"speed" => Option::get($module_id, "speed", "normal")
)
)."'></script>",
true
);
// подключаем js и css
Asset::getInstance()->addJs("/bitrix/js/".$module_id."/jquery.min.js");
Asset::getInstance()->addJs("/bitrix/js/".$module_id."/script.min.js");
Asset::getInstance()->addCss("/bitrix/css/".$module_id."/style.min.css");
}
return false;
}
}

Файл include.php

Файл подключается в тот момент, когда речь идет о подключении модуля в коде, в нем должны находиться включения всех файлов с библиотеками функций и классов модуля. В нашем случае данный файл можно оставить пустым, подключение класса происходит в файле install/index.php при регистрации обработчика события OnBeforeEndBufferContent.

<?
/*
 * Файл local/modules/falbar.totop/lib/include.php
 */
/*
 * ленивое подключение своего класса на уровне ядра замена стандартного require_once
 */
CModule::AddAutoloadClasses(
"falbar.totop",
array(
"Falbar\\ToTop\\Main" => "lib/Main.php",
)
);

JavaScript и CSS кнопки наверх Битрикс модуля

Вот мы и подобрались к финальной части и осталось самое простое, на мой взгляд. Опишем стандартные стили нашей кнопки по умолчанию:

#falbar_totop-button{
position: fixed;
cursor: pointer;
display: none;
}
#falbar_totop-button:before{
content: "";
width: 0;
height: 0;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 10px solid #fff;
margin: 10px auto 0;
display: block;
}

Незабываем код упаковать и добавить в style.min.css. Для работы кнопки нам нужна библиотека jQuery, качаем её с официального сайта и также добавляем её в соответствующий файл. Теперь напишем JavaScript, который и будет добавлять кнопку с учетом настроек:

var params = $("#falbar_totop-params").data().params;
if(params.switch_on == "Y"){
var style = "width: " + params.width + "px;";
style += "height: " + params.height + "px;";
style += "border-radius: " + params.radius + "px;";
style += "background-color: " + params.color + ";";
style += "bottom: " + params.indent_bottom + "px;";
style += params.side + ": " + params.indent_side + "px;";
var speed = 600;
if(params.speed == "slow"){
speed = 300;
}else if(params.speed == "fast"){
speed = 1000;
};
$("body").append("<div id=\"falbar_totop-button\" style=\"" + style
+"\"></div>");
var button = $("#falbar_totop-button");
$(window).on("load", function(){
if($(this).scrollTop() > 300){
button.fadeIn(600);
}
return false;
});
$(window).on("scroll", function(){
if($(this).scrollTop() > 300){
button.fadeIn(600);
}else{
button.fadeOut(600);
};
return false;
});
button.on("click", function(){
$("html, body").animate({
scrollTop: 0
}, speed);
return false;
});
};
});
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг