Плохой кодер. Бад битрикс


Bitrix — Плохой кодер

captcha

Всем привет! Сегодня небольшая заметочка о капче в форме. Будет кратко и по делу.

image

Всем привет! Сегодня поговорим про то, как получить ссылку на следующий и предыдущий элемент в битриксе. Это достаточно частая задача и используется для перелинковки на сайте (SEO), а также для удобства пользователя. Можно ли получить эти ссылки с помощью стандартного api? Ответ — можно, но не совсем.

maxresdefault

Всем привет! Сегодня хотел бы поговорить не о практической части программирования, а немного о другом.

Почему программисты не любят битрикс?

А точнее почему тру программисты не любят битрикс. Это действительно так, но приводить доводы и ссылки здесь я, конечно же, не буду…

yandex

Всем привет! Последнее время по работе часто приходили задачи по экспорту XML для разных сервисов, в частности для яндекс маркета и google merchant. Вообще для большинства сторонних решений подойдет YML выгрузка для яндекса, что очень даже приятно.

76846_(www.Gde-Fon.com)

Довольно часто в CMS 1c-bitrix требуется создать новый тип свойств как для элементов так и для разделов. И если для элементов создать новый тип свойств не такая сложная задача для программиста, так как материалов я нашел на эту тему в интернете уйма, то создать новый тип свойств для разделов, а именно новый тип пользовательских полей — оказалось куда сложней.

screenshot14

Все мы прекрасно знаем, что в битриксе существует стандартный функционал создания html-форм. Модуль «Формы» доступен, начиная с версии «Стандарт». На версии «Старт» реализовать форму через стандартный функционал не получится, но всегда можно использовать API для этих целей.

bad-code.ru

Создание нового типа или кастомизация пользовательского поля в 1с-bitrix — Плохой кодер

<?php

 

class UserDataFiltr extends CUserTypeEnum

{

 

    // инициализация пользовательского свойства для главного модуля

    function GetUserTypeDescription()

    {

        return array(

            "USER_TYPE_ID" => "properties",

            "CLASS_NAME" => "UserDataFiltr",

            "DESCRIPTION" => "Отображение свойств в фильтре для раздела",

            "BASE_TYPE" => "enum",

        );

    }

 

    function GetEditFormHTML($arUserField, $arHtmlControl)

    {

        if(($arUserField["ENTITY_VALUE_ID"]<1) && strlen($arUserField["SETTINGS"]["DEFAULT_VALUE"])>0)

            $arHtmlControl["VALUE"] = intval($arUserField["SETTINGS"]["DEFAULT_VALUE"]);

 

        $result = '';

        $rsEnum = CIBlockProperty::GetList(Array(), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>IBLOCK_CATALOG));

        if(!$rsEnum)

            return '';

 

        if($arUserField["SETTINGS"]["DISPLAY"]=="CHECKBOX")

        {

            $bWasSelect = false;

            $result2 = '';

            while($arEnum = $rsEnum->GetNext())

            {

                $bSelected = (

                    ($arHtmlControl["VALUE"]==$arEnum["ID"]) ||

                    ($arUserField["ENTITY_VALUE_ID"]<=0 && $arEnum["DEF"]=="Y")

                );

                $bWasSelect = $bWasSelect || $bSelected;

                $result2 .= '<label><input type="radio" value="'.$arEnum["ID"].'" name="'.$arHtmlControl["NAME"].'"'.($bSelected? ' checked': '').($arUserField["EDIT_IN_LIST"]!="Y"? ' disabled="disabled" ': '').'>'.$arEnum["NAME"].'</label><br>';

            }

            if($arUserField["MANDATORY"]!="Y")

                $result .= '<label><input type="radio" value="" name="'.$arHtmlControl["NAME"].'"'.(!$bWasSelect? ' checked': '').($arUserField["EDIT_IN_LIST"]!="Y"? ' disabled="disabled" ': '').'>'.htmlspecialcharsbx(strlen($arUserField["SETTINGS"]["CAPTION_NO_VALUE"]) > 0 ? $arUserField["SETTINGS"]["CAPTION_NO_VALUE"] : GetMessage('MAIN_NO')).'</label><br>';

            $result .= $result2;

        }

        else

        {

            $bWasSelect = false;

            $result2 = '';

            while($arEnum = $rsEnum->GetNext())

            {

                $bSelected = (

                    ($arHtmlControl["VALUE"]==$arEnum["ID"]) ||

                    ($arUserField["ENTITY_VALUE_ID"]<=0 && $arEnum["DEF"]=="Y")

                );

                $bWasSelect = $bWasSelect || $bSelected;

                $result2 .= '<option value="'.$arEnum["ID"].'"'.($bSelected? ' selected': '').'>'.$arEnum["NAME"].'</option>';

            }

 

            if($arUserField["SETTINGS"]["LIST_HEIGHT"] > 1)

            {

                $size = ' size="'.$arUserField["SETTINGS"]["LIST_HEIGHT"].'"';

            }

            else

            {

                $arHtmlControl["VALIGN"] = "middle";

                $size = '';

            }

 

            $result = '<select name="'.$arHtmlControl["NAME"].'"'.$size.($arUserField["EDIT_IN_LIST"]!="Y"? ' disabled="disabled" ': '').'>';

            if($arUserField["MANDATORY"]!="Y")

            {

                $result .= '<option value=""'.(!$bWasSelect? ' selected': '').'>'.htmlspecialcharsbx(strlen($arUserField["SETTINGS"]["CAPTION_NO_VALUE"]) > 0 ? $arUserField["SETTINGS"]["CAPTION_NO_VALUE"] : GetMessage('MAIN_NO')).'</option>';

            }

            $result .= $result2;

            $result .= '</select>';

        }

        return $result;

    }

 

    function GetEditFormHTMLMulty($arUserField, $arHtmlControl)

    {

        if(($arUserField["ENTITY_VALUE_ID"]<1) && strlen($arUserField["SETTINGS"]["DEFAULT_VALUE"])>0)

            $arHtmlControl["VALUE"] = array(intval($arUserField["SETTINGS"]["DEFAULT_VALUE"]));

        elseif(!is_array($arHtmlControl["VALUE"]))

            $arHtmlControl["VALUE"] = array();

 

        $rsEnum = CIBlockProperty::GetList(Array(), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>IBLOCK_CATALOG));

        if(!$rsEnum)

            return '';

 

        $result = '';

 

        if($arUserField["SETTINGS"]["DISPLAY"]=="CHECKBOX")

        {

            $result .= '<input type="hidden" value="" name="'.$arHtmlControl["NAME"].'">';

            $bWasSelect = false;

            while($arEnum = $rsEnum->GetNext())

            {

                $bSelected = (

                    (in_array($arEnum["ID"], $arHtmlControl["VALUE"])) ||

                    ($arUserField["ENTITY_VALUE_ID"]<=0 && $arEnum["DEF"]=="Y")

                );

                $bWasSelect = $bWasSelect || $bSelected;

                $result .= '<label><input type="checkbox" value="'.$arEnum["ID"].'" name="'.$arHtmlControl["NAME"].'"'.($bSelected? ' checked': '').($arUserField["EDIT_IN_LIST"]!="Y"? ' disabled="disabled" ': '').'>'.$arEnum["NAME"].'</label><br>';

            }

        }

        else

        {

            $result = '<select multiple name="'.$arHtmlControl["NAME"].'" size="'.$arUserField["SETTINGS"]["LIST_HEIGHT"].'"'.($arUserField["EDIT_IN_LIST"]!="Y"? ' disabled="disabled" ': ''). '>';

 

            $result .= '<option value=""'.(!$arHtmlControl["VALUE"]? ' selected': '').'>'.htmlspecialcharsbx(strlen($arUserField["SETTINGS"]["CAPTION_NO_VALUE"]) > 0 ? $arUserField["SETTINGS"]["CAPTION_NO_VALUE"] : GetMessage('MAIN_NO')).'</option>';

            while($arEnum = $rsEnum->GetNext())

            {

                $bSelected = (

                    (in_array($arEnum["ID"], $arHtmlControl["VALUE"])) ||

                    ($arUserField["ENTITY_VALUE_ID"]<=0 && $arEnum["DEF"]=="Y")

                );

                $result .= '<option value="'.$arEnum["ID"].'"'.($bSelected? ' selected': '').'>'.$arEnum["NAME"].'</option>';

            }

            $result .= '</select>';

        }

        return $result;

    }

 

    function GetAdminListEditHTML($arUserField, $arHtmlControl)

    {

        $rsEnum = CIBlockProperty::GetList(Array(), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>IBLOCK_CATALOG));

        if(!$rsEnum)

            return '';

 

        if($arUserField["SETTINGS"]["LIST_HEIGHT"] > 1)

            $size = ' size="'.$arUserField["SETTINGS"]["LIST_HEIGHT"].'"';

        else

            $size = '';

 

        $result = '<select name="'.$arHtmlControl["NAME"].'"'.$size.($arUserField["EDIT_IN_LIST"]!="Y"? ' disabled="disabled" ': '').'>';

        if($arUserField["MANDATORY"]!="Y")

        {

            $result .= '<option value=""'.(!$arHtmlControl["VALUE"]? ' selected': '').'>'.htmlspecialcharsbx(strlen($arUserField["SETTINGS"]["CAPTION_NO_VALUE"]) > 0 ? $arUserField["SETTINGS"]["CAPTION_NO_VALUE"] : GetMessage('MAIN_NO')).'</option>';

        }

        while($arEnum = $rsEnum->GetNext())

        {

            $result .= '<option value="'.$arEnum["ID"].'"'.($arHtmlControl["VALUE"]==$arEnum["ID"]? ' selected': '').'>'.$arEnum["NAME"].'</option>';

        }

        $result .= '</select>';

        return $result;

    }

 

    function GetAdminListEditHTMLMulty($arUserField, $arHtmlControl)

    {

        if(!is_array($arHtmlControl["VALUE"]))

            $arHtmlControl["VALUE"] = array();

 

        $rsEnum = CIBlockProperty::GetList(Array(), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>IBLOCK_CATALOG));

        if(!$rsEnum)

            return '';

 

        $result = '<select multiple name="'.$arHtmlControl["NAME"].'" size="'.$arUserField["SETTINGS"]["LIST_HEIGHT"].'"'.($arUserField["EDIT_IN_LIST"]!="Y"? ' disabled="disabled" ': '').'>';

        if($arUserField["MANDATORY"]!="Y")

        {

            $result .= '<option value=""'.(!$arHtmlControl["VALUE"]? ' selected': '').'>'.htmlspecialcharsbx(strlen($arUserField["SETTINGS"]["CAPTION_NO_VALUE"]) > 0 ? $arUserField["SETTINGS"]["CAPTION_NO_VALUE"] : GetMessage('MAIN_NO')).'</option>';

        }

        while($arEnum = $rsEnum->GetNext())

        {

            $result .= '<option value="'.$arEnum["ID"].'"'.(in_array($arEnum["ID"], $arHtmlControl["VALUE"])? ' selected': '').'>'.$arEnum["NAME"].'</option>';

        }

        $result .= '</select>';

        return $result;

    }

}

 

AddEventHandler("main", "OnUserTypeBuildList", array("UserDataFiltr", "GetUserTypeDescription"));

bad-code.ru

Плохой кодер — О коде и о сайтах в целом

captcha

Всем привет! Сегодня небольшая заметочка о капче в форме. Будет кратко и по делу.

marafon-begom-po-zolotomy-kolcy-kostroma-2017-072-1021x580

Всем доброе время суток пупсики. Пришло время подводить итоги месяца по марафону. Итак, что имеем на данный момент?

image

Всем привет! Сегодня поговорим про то, как получить ссылку на следующий и предыдущий элемент в битриксе. Это достаточно частая задача и используется для перелинковки на сайте (SEO), а также для удобства пользователя. Можно ли получить эти ссылки с помощью стандартного api? Ответ — можно, но не совсем.

cover_1458137444-1024x512

Всем привет! Ну что…пришло время первого отчета. Как говорится главное начать и я начал!) Ближе к делу ребят.

34

Всем привет! Решил стартовать немножко необычный марафончик. Устал сидеть в зоне комфорта если честно и поэтому появилась такая идея. Появилась она неспонтанно, а в следствии долгих недель раздумий о дальнейшем своем развитии.

maxresdefault

Всем привет! Сегодня хотел бы поговорить не о практической части программирования, а немного о другом.

Почему программисты не любят битрикс?

А точнее почему тру программисты не любят битрикс. Это действительно так, но приводить доводы и ссылки здесь я, конечно же, не буду…

yandex

Всем привет! Последнее время по работе часто приходили задачи по экспорту XML для разных сервисов, в частности для яндекс маркета и google merchant. Вообще для большинства сторонних решений подойдет YML выгрузка для яндекса, что очень даже приятно.

76846_(www.Gde-Fon.com)

Довольно часто в CMS 1c-bitrix требуется создать новый тип свойств как для элементов так и для разделов. И если для элементов создать новый тип свойств не такая сложная задача для программиста, так как материалов я нашел на эту тему в интернете уйма, то создать новый тип свойств для разделов, а именно новый тип пользовательских полей — оказалось куда сложней.

screenshot14

Все мы прекрасно знаем, что в битриксе существует стандартный функционал создания html-форм. Модуль «Формы» доступен, начиная с версии «Стандарт». На версии «Старт» реализовать форму через стандартный функционал не получится, но всегда можно использовать API для этих целей.

 

На сегодняшний день вставка карт гугла или яндекса на сайт стала практически незаменимым элементом в проектировании. Обычная вставка через iframe не дает такой гипкости (вообще не даёт гипкости) в настройке, как даёт API. Сегодня постараемся немного расширить наши знания в создании карт и вставим на сайт гугл карту с полигонами и наложениями. Собственно, что такое полигоны и наложения?

bad-code.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта