CMS Битрикс для новичка

Geers
На сайте с 12.04.2011
Offline
487
#111
Kepus:
Всем доброго времени суток! Хочу создать свой интернет-магазин с возможностью последующего расширения. Проанализировав все CMS я пришел к выводу, что лучше Битрикс нет ничего. Хотелось бы спросить у знающих людей, сложно ли его освоить и создать сайт? У меня есть навыки работы с WordPress и OpenCart.

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

Aisamiery
На сайте с 12.04.2015
Offline
315
#112

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

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

Я так же думал как и вы, пока не сделал несколько проектов, просто когда я разобрался в системе моё мнение изменилось. А разобратся пришлось, потому что там мало конкуренции, хорошо платят и интересные проекты.

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
B
На сайте с 13.02.2008
Offline
262
#113
Aisamiery:
в вашем файле лежит контроллер, у которого свои модели и шаблон

И всё это лежит в одном php файле вместе с контентом, который правит пользователь? Я этого не понимаю. В чем логика такого решения? Почему контент не лежит как у всех в базе данных отдельно от кода?

---------- Добавлено 31.12.2016 в 11:49 ----------

Aisamiery:
А разобратся пришлось, потому что там мало конкуренции, хорошо платят и интересные проекты.

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

TA
На сайте с 12.06.2009
Offline
116
TiA
#114
Aisamiery:
Но и плюс в этом, вы, как программист не ограничены ничем.

Программисты Битрикса себя явно не ограничивали :D

Хочется HTML в "контроллере" - влепим, нужно подключить JS - прямо в коде его и прописываем, требуется вытащить что-то из базы - пишем ручками SQL, нужно передать параметры в метод - да не вопрос:

<?$APPLICATION->IncludeComponent("bitrix:catalog", "", array(
"IBLOCK_TYPE" => "catalog",
"IBLOCK_ID" => "#CATALOG_IBLOCK_ID#",
"TEMPLATE_THEME" => "site",
"HIDE_NOT_AVAILABLE" => "N",
"BASKET_URL" => "#SITE_DIR#personal/cart/",
"ACTION_VARIABLE" => "action",
"PRODUCT_ID_VARIABLE" => "id",
"SECTION_ID_VARIABLE" => "SECTION_ID",
"PRODUCT_QUANTITY_VARIABLE" => "quantity",
"PRODUCT_PROPS_VARIABLE" => "prop",
"SEF_MODE" => "Y",
"SEF_FOLDER" => "#SITE_DIR#catalog/",
"AJAX_MODE" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000000",
"CACHE_FILTER" => "Y",
"CACHE_GROUPS" => "Y",
"SET_TITLE" => "Y",
"ADD_SECTION_CHAIN" => "Y",
"ADD_ELEMENT_CHAIN" => "Y",
"SET_STATUS_404" => "Y",
"DETAIL_DISPLAY_NAME" => "N",
"USE_ELEMENT_COUNTER" => "Y",
"USE_FILTER" => "Y",
"FILTER_NAME" => "",
"FILTER_VIEW_MODE" => "VERTICAL",
"FILTER_FIELD_CODE" => array(
0 => "",
1 => "",
),
"FILTER_PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"FILTER_PRICE_CODE" => array(
0 => "BASE",
),
"FILTER_OFFERS_FIELD_CODE" => array(
0 => "PREVIEW_PICTURE",
1 => "DETAIL_PICTURE",
2 => "",
),
"FILTER_OFFERS_PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"USE_REVIEW" => "Y",
"MESSAGES_PER_PAGE" => "10",
"USE_CAPTCHA" => "Y",
"REVIEW_AJAX_POST" => "Y",
"PATH_TO_SMILE" => "/bitrix/images/forum/smile/",
"FORUM_ID" => "11",
"URL_TEMPLATES_READ" => "",
"SHOW_LINK_TO_FORUM" => "Y",
"USE_COMPARE" => "N",
"PRICE_CODE" => array(
0 => "BASE",
),
"USE_PRICE_COUNT" => "N",
"SHOW_PRICE_COUNT" => "1",
"PRICE_VAT_INCLUDE" => "Y",
"PRICE_VAT_SHOW_VALUE" => "N",
"PRODUCT_PROPERTIES" => array(
),
"USE_PRODUCT_QUANTITY" => "Y",
"CONVERT_CURRENCY" => "N",
"QUANTITY_FLOAT" => "N",
"OFFERS_CART_PROPERTIES" => array(
0 => "SIZES_SHOES",
1 => "SIZES_CLOTHES",
2 => "COLOR_REF",
),
"SHOW_TOP_ELEMENTS" => "N",
"SECTION_COUNT_ELEMENTS" => "N",
"SECTION_TOP_DEPTH" => "1",
"SECTIONS_VIEW_MODE" => "TILE",
"SECTIONS_SHOW_PARENT_NAME" => "N",
"PAGE_ELEMENT_COUNT" => "15",
"LINE_ELEMENT_COUNT" => "3",
"ELEMENT_SORT_FIELD" => "desc",
"ELEMENT_SORT_ORDER" => "asc",
"ELEMENT_SORT_FIELD2" => "id",
"ELEMENT_SORT_ORDER2" => "desc",
"LIST_PROPERTY_CODE" => array(
0 => "NEWPRODUCT",
1 => "SALELEADER",
2 => "SPECIALOFFER",
3 => "",
),
"INCLUDE_SUBSECTIONS" => "Y",
"LIST_META_KEYWORDS" => "UF_KEYWORDS",
"LIST_META_DESCRIPTION" => "UF_META_DESCRIPTION",
"LIST_BROWSER_TITLE" => "UF_BROWSER_TITLE",
"LIST_OFFERS_FIELD_CODE" => array(
0 => "NAME",
1 => "PREVIEW_PICTURE",
2 => "DETAIL_PICTURE",
3 => "",
),
"LIST_OFFERS_PROPERTY_CODE" => array(
0 => "SIZES_SHOES",
1 => "SIZES_CLOTHES",
2 => "COLOR_REF",
3 => "MORE_PHOTO",
4 => "ARTNUMBER",
5 => "",
),
"LIST_OFFERS_LIMIT" => "0",
"SECTION_BACKGROUND_IMAGE" => "UF_BACKGROUND_IMAGE",
"DETAIL_PROPERTY_CODE" => array(
0 => "NEWPRODUCT",
1 => "MANUFACTURER",
2 => "MATERIAL",
),
"DETAIL_META_KEYWORDS" => "KEYWORDS",
"DETAIL_META_DESCRIPTION" => "META_DESCRIPTION",
"DETAIL_BROWSER_TITLE" => "TITLE",
"DETAIL_OFFERS_FIELD_CODE" => array(
0 => "NAME",
1 => "",
),
"DETAIL_OFFERS_PROPERTY_CODE" => array(
0 => "ARTNUMBER",
1 => "SIZES_SHOES",
2 => "SIZES_CLOTHES",
3 => "COLOR_REF",
4 => "MORE_PHOTO",
5 => "",
),
"DETAIL_BACKGROUND_IMAGE" => "BACKGROUND_IMAGE",
"LINK_IBLOCK_TYPE" => "",
"LINK_IBLOCK_ID" => "",
"LINK_PROPERTY_SID" => "",
"LINK_ELEMENTS_URL" => "link.php?PARENT_ELEMENT_ID=#ELEMENT_ID#",
"USE_ALSO_BUY" => "Y",
"ALSO_BUY_ELEMENT_COUNT" => "4",
"ALSO_BUY_MIN_BUYES" => "1",
"OFFERS_SORT_FIELD" => "sort",
"OFFERS_SORT_ORDER" => "desc",
"OFFERS_SORT_FIELD2" => "id",
"OFFERS_SORT_ORDER2" => "desc",
"PAGER_TEMPLATE" => "round",
"DISPLAY_TOP_PAGER" => "N",
"DISPLAY_BOTTOM_PAGER" => "Y",
"PAGER_TITLE" => "Товары",
"PAGER_SHOW_ALWAYS" => "N",
"PAGER_DESC_NUMBERING" => "N",
"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000000",
"PAGER_SHOW_ALL" => "N",
"ADD_PICT_PROP" => "MORE_PHOTO",
"LABEL_PROP" => "NEWPRODUCT",
"PRODUCT_DISPLAY_MODE" => "Y",
"OFFER_ADD_PICT_PROP" => "MORE_PHOTO",
"OFFER_TREE_PROPS" => array(
0 => "SIZES_SHOES",
1 => "SIZES_CLOTHES",
2 => "COLOR_REF",
3 => "",
),
"SHOW_DISCOUNT_PERCENT" => "Y",
"SHOW_OLD_PRICE" => "Y",
"MESS_BTN_BUY" => "Купить",
"MESS_BTN_ADD_TO_BASKET" => "В корзину",
"MESS_BTN_COMPARE" => "Сравнение",
"MESS_BTN_DETAIL" => "Подробнее",
"MESS_NOT_AVAILABLE" => "Нет в наличии",
"DETAIL_USE_VOTE_RATING" => "Y",
"DETAIL_VOTE_DISPLAY_AS_RATING" => "rating",
"DETAIL_USE_COMMENTS" => "Y",
"DETAIL_BLOG_USE" => "Y",
"DETAIL_VK_USE" => "N",
"DETAIL_FB_USE" => "Y",
"AJAX_OPTION_ADDITIONAL" => "",
"USE_STORE" => "Y",
"FIELDS" => array(
0 => "STORE",
1 => "SCHEDULE",
),
"USE_MIN_AMOUNT" => "N",
"STORE_PATH" => "#SITE_DIR#store/#store_id#",
"MAIN_TITLE" => "Наличие на складах",
"MIN_AMOUNT" => "10",
"DETAIL_BRAND_USE" => "Y",
"DETAIL_BRAND_PROP_CODE" => "BRAND_REF",
"SIDEBAR_SECTION_SHOW" => "Y",
"SIDEBAR_DETAIL_SHOW" => "Y",
"SIDEBAR_PATH" => "#SITE_DIR#catalog/sidebar.php",
"SEF_URL_TEMPLATES" => array(
"sections" => "",
"section" => "#SECTION_CODE#/",
"element" => "#SECTION_CODE#/#ELEMENT_CODE#/",
"compare" => "compare/",
)
),
false
);?>

Две сотни параметров в массиве и все капсом. Секретари и менеджеры этого и так не увидят, а у программиста полная свобода говнокодить.

Aisamiery:
А разобратся пришлось, потому что там мало конкуренции, хорошо платят и интересные проекты.

Вот вы и подтвердили то, о чем я говорил ранее:

TiA:
Маркетологи 1С могут сколько угодно рассказывать сказки о "фреймворке", но по факту там даже банального разделения кода на модель, вид и контроллер нет. Все собрано в кучу.

Не всем интересно в этом всем копаться с перспективой работать только на рынке РФ.
Профессиональная верстка и разработка сайтов на WordPress (http://www.maultalk.com/topic139110s0.html)
Aisamiery
На сайте с 12.04.2015
Offline
315
#115

borisd, нет, это вызов контроллера, который лежит в своём пространстве имён, со своими языковыми файлами, моделями, библиотеками, шаблонами и переносится в другой проект простым копированием папки.

А не в базе, потому что для многого контента подключение к базе и не нужно, тот же вп кешем делает точно такие же файлики, а контенщику плевать где лежит, у него визуальный редактор одинаковый

---------- Добавлено 31.12.2016 в 13:47 ----------

TiA, опять же говорите с луны, там есть типа орм, там есть queryBuilder, а если вы пишите sql ручками, то говнокодите вы, а не битрикс.

---------- Добавлено 31.12.2016 в 13:48 ----------

borisd, вон тут сидят разработчики и плюються, а вы говорите привлекает

TA
На сайте с 12.06.2009
Offline
116
TiA
#116
Aisamiery:
TiA, опять же говорите с луны, там есть типа орм, там есть queryBuilder, а если вы пишите sql ручками, то говнокодите вы, а не битрикс.

Возьмем, например, файл /bitrix/modules/blog/mysql/blog.php, получение списка записей:


$arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);

$r = $obUserFieldsSql->GetFilter();
if(strlen($r)>0)
$strSqlUFFilter = " (".$r.") ";

if (is_array($arGroupBy) && count($arGroupBy)==0)
{
$strSql =
"SELECT ".$arSqls["SELECT"]." ".
$obUserFieldsSql->GetSelect()." ".
"FROM b_blog B ".
" ".$arSqls["FROM"]." ".
$obUserFieldsSql->GetJoin("B.ID")." ";
if (strlen($arSqls["WHERE"]) > 0)
$strSql .= "WHERE ".$arSqls["WHERE"]." ";
if(strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUFFilter) > 0)
$strSql .= " AND ".$strSqlUFFilter." ";
elseif(strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUFFilter) > 0)
$strSql .= " WHERE ".$strSqlUFFilter." ";

if (strlen($arSqls["GROUPBY"]) > 0)
$strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";

//echo "!1!=".htmlspecialcharsbx($strSql)."<br>";

$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
if ($arRes = $dbRes->Fetch())
return $arRes["CNT"];
else
return False;
}

Где тут ORM и queryBuilder? :D Это самый обычный говнокод. Такого "счастья" в Bitrix полно даже в самых базовых модулях вроде bitrix/modules/iblock/classes/mysql/iblockelement.php.

Aisamiery
На сайте с 12.04.2015
Offline
315
#117

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

---------- Добавлено 31.12.2016 в 15:04 ----------

TiA, а вам не пофиг что в ядре? Или вы думаете в ядре доктрины не SQL а мифический человекомесяц? Вас ядро не должно волновать, оно от вашего проекта инкапсулировано, протестиронано на тысячах проектах и оно работает, а для вас оно предоставляет все нужные обертки от этого говнокода, но говнокода в ядре полно везде, в том числе и в вашем любимом продукте если он старше хотя бы 10 лет.

---------- Добавлено 31.12.2016 в 15:10 ----------

TiA, а так же вы должны понимать что такое совместимость, нельзя без последствий взять и переписать огромный проект, так чтоб это не повлияло на клиентские проекты, но вам же пофиг на всех, вам любимому неугодно. Это не опенсурс, это коммерческий продукт, который дает гарантию на многое, а бесплатное не дает никакой. То есть делая проекты на коммерческом продукте, даже через 5 лет вы можете быть уверены что тот функционал который вы сделаете не сломается при очередном обновлении. А OpenSource, а там каждое обновление ветки не совместимо с предыдущим и фактически чуть ли ни каждый год/два клиенту приходится переделывать на новой версии продукта и после этого как раз и становится интересно, какая система сделана для отжима денег, или может вы бесплатно потом обновляете клиентские проекты после обновлений системы?

TA
На сайте с 12.06.2009
Offline
116
TiA
#118
Aisamiery:
TiA, а вам не пофиг что в ядре? Или вы думаете в ядре доктрины не SQL а мифический человекомесяц? Вас ядро не должно волновать, оно от вашего проекта инкапсулировано, протестиронано на тысячах проектах и оно работает, а для вас оно предоставляет все нужные обертки от этого говнокода, но говнокода в ядре полно везде, в том числе и в вашем любимом продукте если он старше хотя бы 10 лет.

Сначала вы с таким усердием рассказывали об ORM, Query Builder, фреймворках и т.д., а теперь "а разве не пофиг что в ядре?" :D Основная проблема на самом деле в том, что говнокод там не только в ядре, но и в большинстве стандартных модулей, с которыми так или иначе приходится иметь дело.

В случае с Magento 2, например, код разбит на большое количество модулей, а сама система накладывает достаточно много ограничений на их функционирование и вводит кучу проверок. Как следствие, у программиста нет другого выбора кроме как писать в ее рамках. В итоге система в целом гораздо меньше подвержена ошибкам, проще тестируется и расширяется. Вот, например, метод модели товара, который возвращает связанные товары в Magento:


public function getRelatedProducts()
{
if (!$this->hasRelatedProducts()) {
$products = [];
$collection = $this->getRelatedProductCollection();
foreach ($collection as $product) {
$products[] = $product;
}

$this->setRelatedProducts($products);

}

return $this->getData('related_products');
}

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

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

Aisamiery
На сайте с 12.04.2015
Offline
315
#119

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

TiA, Сколько надо денег, чтобы переписать все проекты с магенто 1 на магенто 2, а потом на магенто 3? Или сколько надо денег, чтоб самостоятельно поддерживать магенто 1 после прекращения её саппорта?

/**
* Retrieve collection related product
*
* @return \Magento\Catalog\Model\ResourceModel\Product\Link\Product\Collection
*/
public function getRelatedProductCollection()
{
$collection = $this->getLinkInstance()->useRelatedLinks()->getProductCollection()->setIsStrongMode();
$collection->setProduct($this);
return $collection;
}

Мне даже интересно стало, гдеж искать концы? Я не говорю что магенто плохо, но про читаемость вот не надо, я вам тоже оберну абстракции в абстракции и код будет выглядеть вот так:


$estate = $this->getEstate($this->arParams['REQUEST_NUMBER'])

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

melkozaur
На сайте с 06.04.2010
Offline
532
#120

Все нормальные люди салаты режут под коньячок, а битриксоиду некогда - веру защищает :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий