Рейтинг: 3.3265  
На голосовании
Предложил AndreyChursin 16.08.2017 12:54:17

Bitrix, про MVC знаешь? - не, не слышал.. js строит верстку для шаблона!(

Компонент корзина(sale.basket.basket) написан край как неудачно! И не только он...

В js идет построение верстки, но mvc и шаблонное проектирование вообще против такой парадигмы программирования! js должно только менять значения, а не конструировать верстку. Для js можно оставлять id в верстке и их же передавать массивом в js для дальнейшей работы с данными.

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

p.s. там же, в sale.basket.basket/class.php видел строки ужаса, где ресайзят картинки! в ЯДРЕ компонента, РЕСАЙЗ картинок, и только на 110x110px!
Рейтинг: 7.7918  
На голосовании
Предложил Царук Антон 20.07.2017 16:59:56

Поменять очередность применения фильтра в компоненте catalog.section

Простейшая штука, а так была бы полезна.

В коде компонента вывода списка элементов (например, catalog.section), в месте, где происходит обращение к БД на выборку элементов, сливаются воедино два фильтра - тот, что задан в коде компонента, и внешний, который может быть задан разработчиком без влезания в код.

Сейчас это выглядит так:
array_merge($arrFilter, $arFilter)
$arrFilter - это преднастроенный в коде компонента фильтр.

Такая последовательность (ввиду логики работы array_merge) не позволяет переопределять параметры фильтрации, заложенные в коде компонента. Они всегда будут перезаписывать то, что пришло извне!

Особенно это обидно, когда нужно вывести стандартным компонентом неактивные элементы. Фактически - это сейчас сделать невозможно, надо копировать компонент, делать его кастомным, лишаться  обновлений и т.д. И все ради простейшей задачи.

А дело-то всего лишь в последовательности переменных...
Рейтинг: 2.3736  
На голосовании
Предложил Noraad 08.02.2017 12:52:35

Опции для товара - стандартный функционал

А почему до сих пор не реализованы опции для товара в стандартном функционале? Даже в joomshoping'е есть, а у нас битрикс все таки. Считаю необходимым внедрение функционала дополнительных опций (как в шаблоне битроник) в поставку стандартного ИМ начиная с редакции малый бизнес.
Рейтинг: 3.0194  
На голосовании
Предложил Гелейшев Павел 07.02.2017 12:48:00

Оптимизация компонента bitrix:catalog.section.list

Если в построении URL используется #SECTION_CODE_PATH#, то компонент bitrix:catalog.section.list начинает генерировать ОЧЕНЬ большое количество запросов.

например, при выводе списка из 40 разделов, генерируется 176 запросов.

Если разделов много, то может быть и 1000 запросов.

Необходимо сделать кеширование URL к разделу (по примеру фасетного индекса для умного фильтра) и брать закешированные данные.
Рейтинг: 0.0764  
На голосовании
Предложил Неслуховский Иван 06.02.2017 09:01:25

В визуальном редакторе поддерживать поиск по идентификаторам компонентов и выводить название/описание перед выбором

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

То же с поиском. Если я нашёл в документации компонент (условно говоря bitrix:sale.personal.section), я его никак не найду в списке компонентов.

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

Предлагаемые изменения:
  • выводить название компонента в подсказке при наведении курсора на иконку компонента (как в меню, так и в рабочем поле визуального редактора)
  • то же, но при нажатии на компонент. где-то внизу должно выводиться название
  • описание должно появляться во всплывающей подсказке
  • в поиске компонентов поиск должен идти также по идентификаторам
Рейтинг: 0.7401  
Новая
Предложил Noraad 24.01.2017 00:34:19

Стилизация гугл карт

Почему бы не добавить в компонент map.google.view возможность вставки json стилей для разукрашивания карт?
Рейтинг: 2.2706  
Новая
Предложил Николаев Андрей 23.10.2016 14:46:11

Добавить дополнительные служебные компоненты

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

Пример 1: нет компонента привязки к сущности crm. Да можно вывернуться через system.field.edit, но корявенько получается.
Пример 2: есть компонент выбора пользователя и даже intranet.user.selector.new, но на практике просто взять и использовать нельзя, потому как он требует еще немножко магии

Какие части системы хотелось бы видеть в качестве штатных компонентов:

1) Компонент выбора сотрудников/подразделений. Тут все просто - по аналогии с "набором тегов" в ленте (с красивым выпадающим окошком) выбрать из структуры, найти из экстранет пользователей, выбрать группы и т.п.
Важно сразу учесть несколько моментов:
- Нужно иметь возможность не учитывать права доступа (т.е. выбирать всех пользователей экстранет)
- Давать возможность выбора только определенных сущностей (например только подразделения, только группы, только внешних пользователей)

А на выходе в нужную REQUEST-переменну клал массив по аналогии с лентой (например U1, SG202 и т.п.)

2) Компонент выбора сущности CRM (опять же с возможностью отключения прав доступа)

Это не полный список, но уже качественно улучшит качество разрабатываемых решений (во-первых единый интерфейс, а во-вторых не надо будет костылить с select2 и подобными) и одновременно увеличит скорость разработки (не надо будет писать с 0, когда есть уже готовое)
Рейтинг: 0  
Новая
Предложил Белоконь Дмитрий 07.09.2016 11:12:19

Дать возможность подключать эпилог компонента самостоятельно

Добрый день.
Возник момент с кастомным кешированием в своем компоненте.
Согласно этому курсу (https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=3053), подключение шаблона можно размещать как в кешируемой области, так и вне её.
При подключении шаблона в кешируемой области собственного компонента со сложным кешированием шаблон не отрабатывает вообще - сразу выводится html-кеш.
Разница в том, что в стандартных компонентах используется метод StartResultCache и при этом template.php кешируется полностью и выводится как html-кеш. При этом из кеша на хите достаются переменные VARS из файла кеша и передаются в component_epilog.php, что не происходит, если строить свое кеширование согласно вышеуказанному курсу.  
Покопавшись в исходниках, выяснил, что в метод startResultCache() вшит также метод includeComponentEpilog(), которого нет в классах кастомного кеширования и в документации.
При этом входящие данные для него от родительского компонента в своем дочернем компоненте получить нельзя, так как свойство, в котором хранится путь и данные для метода includeComponentEpilog() лежат в родительском свойстве __component_epilog, которое имеет модификатор доступа private и недоступен в потомке.
В связи с этим кастомное кеширование получается неполноценным, т.к. для использования в шаблонах component_epilog, нужно подключение шаблона обязательно выводить из кешируемой области.
Прошу дать возможность разработчику самостоятельно подключать эпилог компонента в своем компоненте.  
Рейтинг: 1.7355  
На голосовании
Предложил Smirnov Pavel 23.08.2016 15:47:31

В БУС в выпадающем меню компонента в режиме правки добавить пункт "Редактировать JS-файл компонента".

Сейчас, если в публичной части сайта на "Битрикс Управление Сайтом" в режиме правки навестись на компонент, то выпадет менюшка действий с компонентом, в том числе вот эти пункты:
Копировать шаблон компонента
Редактировать шаблон компонента
Редактировать CSS-файл шаблона
Обновить кеш компонента
Отключить компонент
Современные (особенно визуальные) компоненты зачастую содержат, кроме php и css, ещё и javascript-файл. И вот его невозможно отредактировать аналогичным образом через режим правки - только через структуру каталогов или вообще FTP.

Было бы удобнее, если бы добавили пункт "Редактировать JavaScript-файл шаблона".
Рейтинг: 8.5833  
На голосовании
Предложил Самохвалов Никита 05.06.2016 15:18:28

Модули, как целостная подсистема

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

Структура модуля могла бы быть такой:
vendor.module/ 
   admin/ 
   lib/ 
   components/ 
   templates/ 
Итого:
  • разработчику модуля не нужно при выпуске очередного обновления, например, компонентов, писать апдейтер, который будет копировать файлы из модуля в bitrix/components/vendor;
  • все ресурсы модуля находятся в модуле.
Ограничение накладывает работа со статичными ресурсами: JS, CSS, изображения и т. п. Решить это можно через менеджер статики, который будет автоматически собирать статику.
Рейтинг: 4.4458  
На голосовании
Предложил Hakobyan Garegin 31.03.2016 22:10:09

Магазин на нескольких валют

:!: Необходимо сделать встроенный модуль или компонент выбор валюты на сайте, для платформы интернет магазина 1С-Битрикс, как у много других специализированных платформ как MAGENTO, PRESTASHOP или CS-Cart. Это очень важный и необходимый часть для специализированных платформ интернет магазина
Рейтинг: 0.742  
На голосовании
Предложил Платонов Евгений 29.03.2016 18:05:16

На всем стоке.. html теги отображаются "безопасно"

Да исправляется легко(htmlspecialchars_decode).. но надоело! ИДЕЯ для исправления - многие клиенты жалуются



Рейтинг: -1.1876  
На голосовании
Предложил Платонов Евгений 10.03.2016 08:58:46

Предлагаю начать писать код однотипно!

Постоянно встречаю в стандартных компонентах треш-код
Не каждый редактор понимает  :

if(): 
else: 
endif; 
    
foreach():  
endforeach;  
 


Предлагаю писать код в доступном для всех виде
if(){  
}else{ 
}  
 
foreach(){ 
}
 
 
Так же прошу соблюдать  пункт в мониторинге качества как "Определены и соблюдаются правила оформления кода"

Код пишем ступенчато, а не абы как.
Рейтинг: 0.2492  
Ответил 10.03.2016 15:33:05
Простите не хотелось вас обидеть, но предлагаю прочитать книгу:

PHP5 полное руководство, страница 41-42

Первая часть предложения думаю отпадет сама собой.

Вторая же часть очень сильно зависит от вашей IDE или того в чем вы открываете код.  
Рейтинг: 0.5179  
На голосовании
Предложил Медведев Андрей 15.02.2016 16:22:21

добавить поддержку шаблонов по умолчанию - default без точки

Сейчас шаблоны по-умолчанию в компонентах называются ".default".

Во-первых файлы с точкой это скрытые файлы в linux.
Во-вторых для sass например такие папки пропускаются.

Было бы отлично добавить еще поддержку папки default - без точки.
Хотя бы опционально (может в виде настройки в бекофисе - название шаблонов по-умолчанию).

Или искать сверху вниз - если есть default то подключаем его, дальше ищем ".default"
Рейтинг: 0.6111  
Новая
Предложил de1eted 20.11.2015 12:08:13

Создание групп свойств компонента из шаблона

В параметрах компонента мы можем задать группировку свойств:

$arComponentParameters = array(
   "GROUPS" => array(
      "PARAMS" => array(
         "NAME" => GetMessage("IBLOCK_PARAMS"),
         "SORT" => "200"
      ),
      "ACCESS" => array(
         "NAME" => GetMessage("IBLOCK_ACCESS"),
         "SORT" => "400",
      ),
      "FIELDS" => array(
         "NAME" => GetMessage("IBLOCK_FIELDS"),
         "SORT" => "300",
      ),
      "TITLES" => array(
         "NAME" => GetMessage("IBLOCK_TITLES"),
         "SORT" => "1000",
      ),
   ),
... 
А в параметрах шаблона можно задать только сами параметры.
Было бы удобно иметь возможность задавать и группы в файле <путь к шаблону>/.parameters.php
Нужно добавить пять строчек в файл bitrix/modules/main/classes/general/component_util.php [466]:

      if ($templateProperties && is_array($templateProperties))
      {
         /* Добавить */
         if(is_array($arComponentParameters["GROUPS"]))
            $arComponentParameters["GROUPS"] = array_merge ($arComponentParameters["GROUPS"], $templateProperties["TEMPLATE_GROUPS"]);
         else
            $arComponentParameters["GROUPS"] = $templateProperties["TEMPLATE_GROUPS"];
         unset($templateProperties["TEMPLATE_GROUPS"]);
         /* эти пять строчек */ 
            
         if(is_array($arComponentParameters["PARAMETERS"]))
            $arComponentParameters["PARAMETERS"] = array_merge ($arComponentParameters["PARAMETERS"], $templateProperties);
         else
            $arComponentParameters["PARAMETERS"] = $templateProperties;
      }
 
Рейтинг: -0.3645  
На голосовании
Предложил Семашко Евгений 05.11.2015 18:54:54

Добавлять в HTML комментарии к вызовам компонентов

Добавлять в  HTML комментарии к вызовам компонентов, чтобы можно было разобраться где какой компонент может, например, содержать ошибки в верстке.
Рейтинг: 25.0256  
На голосовании
Предложил BX Solutions 27.10.2015 14:19:06

CBitrixComponent добавить свойство application

Раз переходим к ООП, пусть у компонента будет доступно свойство $APPLICATION, которое заменит global $APPLICATION в методах.

И наверно в модули тоже можно.

Dependency injection.
Рейтинг: 2.2655  
На голосовании
Предложил Ерофеев Анатолий 01.10.2015 09:22:01

FILTER_NAME для детальной новости, товара

,Стоит добавить параметр FILTER_NAME в news.detail и catalog.element, по аналогии с catalog.section - чтобы можно было задать дополнительные фильтры на детальной странице товара. На данный момент, если нужно скрыть товары из каталога по сложной логике, требуется сделать GetList-фильтр для catalog.section, а в result_modifier, template, component_epilog детальной страницы писать дополнительный запрос/анализировать $arResult элемента. Оба варианта плохи - в первом случае будут дополнительные запросы, а во втором потребуется переписать код GetList-фильтра (дублирование кода)

Пример:
$GLOBALS["arrFIlter"] = array("PROPERTY_HIDDEN" => "Y");

result_modifier.php, template.php

if ($arResult["PROPERTIES"]["HIDDEN"]["VALUE"] == "Y")
{
// Заморочки с организацией 404-ой страницы.
}