Нестандартное использование

19.02.2015

Я с битриксом работаю немного не стандартно, принципы моей работы:

Я не люблю стандартные компоненты, так как там не поддерживаемая лапша из >1000 строк кода, часто с ошибками. Обычно я использую свои компоненты, написанные по принципам ООП, наследуемые от моего "базового компонента".

Плюсы такого подхода:

  • Более-менее чистый код;
  • Лучшее быстродействие;
  • Заточенность компонента под задачу;
  • Отсутствие костылей при попытке реализовать нестандартную задачу стандартными компонентами.

Минусы такого подхода:

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

Я ни когда не использую, и не переношу "Комплексные компоненты", т.к. его невозможно понятно, с первого раза, настроить даже опытному контентщику, не говоря о клиенте. И совершенно невозможно нормально кастомизировать.

В последних моих интернет магазинах я использовал из "больших" стандартных компонентов только "Корзину", "Одношаговое оформление заказа" и "Список заказов", о последнем, кстати пожалел, т.к. в последствии его пришлось кастомизировать с помощью result_modifier.php, что, как я считаю не очень хорошо.

Из стандартных компонентов я всегда использую только "Меню" и "Хлебные крошки"

Комментарии:

Вадим

20.02.2015 15:50:56

А ссылку на базовый компонент, и пример кастомизации его в ООП стиле можно где-то посмотреть?

Максим

20.02.2015 16:16:17

Странно, что мне не пришла в голову мысль написать статью на эту тему, в скором времени обязательно напишу!, а если кратко:
О поддержки ооп в компонентах можно прочитать здесь

Как сделано у меня, объявлен класс

class TBaseComponent extends CBitrixComponent{
...
}

В классе объявлены часто используемые функции и параметры, например:

protected $elementsSortDefault = array('SORT' => 'ASC', 'active_from'=>'DESC', 'NAME'=>'ASC');

private function setChainAndMeta(){
...
}

Также переопределена основная функция запуска компонента

function executeComponent() {

}

Она, во-первых обернута в try catch, для возможности бросать исключения, и разбита логически на функции inCacheFunction - то что будет выполняться в кеше, setParams - установка, проверка параметров.

Затем код компонента выглядит так:

class CElements extends TBaseComponent {
function setParams() {...}
function inCacheFunction(){...}
}


PS Постараюсь в скором времени оформить инфу в отдельную статью.

Вадим

20.02.2015 16:28:21

Буду благодарен если вы комментом потом в этот топик ссылку кинете ) благо я подписан

Максим

21.02.2015 16:05:40

Ученик

16.12.2015 16:24:00

"Я ни когда не использую, и не переношу "Комплексные компоненты""

Как обходитесь?

Ученик

16.12.2015 16:39:54

Я про список элементов и детальный просмотр элемента... ЧПУ и тд... Используете несколько страниц и несколько компонентов для того и другого?

Вадим

16.12.2015 16:47:56

Максим, спасибо (нажал кнопку доната, но на Я.Д остались копейки, так что чуть позже надеюсь не забуду Вас "замотивировать")

Максим

16.12.2015 18:18:09

Ученик, да, конкретно две страницы.
index.php - со списковым компонентом
и detail.php - с компонентом для детального просмотра

также нужно в файле urlrewrite.php запись добавить для ЧПУ, например:

array(
"CONDITION" => "#^/news/([A-Za-z0-9\-\_]+)/((\?.*)|$)#",
"RULE" => "CODE=$1",
"ID" => "",
"PATH" => "/news/detail.php",
),

чуть больше действий, зато полная свобода в кастомизации.

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

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

Оставить комментарий:

Представьтесь пожалуйста:
Электронная почта:
Электронный адрес не публикуются
Текст сообщения:
Для подсветки кода, оборачивайте ваш код в теги <code></code>
Введите 5 цифр с картинки:

Рекомендую:

Поделюсь промокодами для хостинга TimeWeb!

Поддержать проект: