Идеи пользователя 17890

Рейтинг: 3.9726  
Внедрено
Предложил Пользователь 17890 06.10.2016 18:14:12

bitrix:catalog.element - убрать лишние данные из кеша

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

Нужно это поправить.    

1/ Массив $arResult['SECTION']  и подмассив $arResult["SECTION"]["PATH"]:
зачем сохранять в кеше все поля секций, даже SEARCHABLE_CONTENT?
для сео они все не нужны.

2/ Зачем сохранять все свойства элемента в кеш и даже пустые?
Массив $arResult['PROPERTIES'] - зачем все сохраняются? для сео и прочего лишь некоторые ведь нужны...
Надо лишние убирать.

После удаления лишнего из кеша, объем этого самого кеша уменьшается с 3мб до 90кб.
Считаю, что нужно внедрить это в компонент bitrix:catalog.element.

Пример решения через result_modifier.php компонента bitrix:catalog.element:
// clear unused cache fields
foreach ($arResult['PROPERTIES'] as $k => $prop) {
   if (trim($prop['VALUE']) == '') {
      unset($arResult['PROPERTIES'][$k]);
   }
}

$arDeleteSectionKeys = array('SEARCHABLE_CONTENT', '~SEARCHABLE_CONTENT');
foreach ($arResult['SECTION'] as $k => $s) {
   if ($k == 'PATH') {
      foreach ($s as $ks => $ss) {
         foreach ($ss as $kss => $ss2) {
            if (in_array($kss, $arDeleteSectionKeys)) {
               unset($arResult['SECTION'][$k][$ks][$kss]);
            }
         }
      }
   } else if (in_array($k, $arDeleteSectionKeys)) {
      unset($arResult['SECTION'][$k]);
   }
} 
Рейтинг: 0.0185  
Ответил Жуков Евгений 25.10.2016 15:08:47
iblock 16.6.1. изменения затронут так же news.detail.
п.1 Оставили только часть полей
п.2. Ключ PROPERTIES больше не сохраняется вообще - в нем больше нет необходимости
Рейтинг: 2.0819  
Внедрено
Предложил Пользователь 17890 04.09.2014 15:13:12

Добавить событие OnAfterIblockDelete, т.е. после фактического удаления инфоблока

Оба имеющихся события:
OnBeforeIBlockDelete
OnIBlockDelete
вызываются до фактического удаления инфоблока из базы:

Необходимо еще событие OnAfterIblockDelete, когда удаление уже произошло.
Рейтинг: 0.1463  
Ответил Жуков Евгений 21.04.2015 15:27:27
iblock 15.5.0
Рейтинг: 24.0085  
Внедрено
Предложил Пользователь 17890 22.05.2014 23:56:49

CIBlockSection::GetList() добавить nTopCount

В параметр $arNavStartParams добавить еще обработку nTopCount, чтобы не использовать для этих целей
nPageSize
, который вызывает обработку наличия постраничной навигации на странице, повышающий PAGE_NUMBER на один.
Рейтинг: 0.3976  
Ответил Жуков Евгений 31.08.2015 18:03:13
Вышло в iblock 15.5.5
Рейтинг: 17.3032  
Внедрено
Предложил Пользователь 17890 18.04.2014 14:30:38

Права доступа для Highload инфоблоков

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

На сколько я понял, сейчас этот функционал только для админа.
Рейтинг: 0.2004  
Внедрено
Предложил Пользователь 17890 04.04.2014 16:57:50

Поля сущности Highload - все время 0, исправить ошибку

На разных проектах - последние стабильные обновления. Вижу картину:



Хотя их на самом деле 3 штуки (клик по ссылке [0]):

Читать подробнее...

Рейтинг: 0.531  
Ответил Жуков Евгений 05.04.2014 16:41:33
Выйдет в highloadblock 14.0.6
Рейтинг: 1.3043  
Внедрено
Предложил Пользователь 17890 01.12.2013 17:37:25

Zend OPcache - монитор производительности: Настройки PHP: научиться определять

Сейчас при использовании стандартного и идущего из коробки с версии PHP 5.5 акселератора Zend OPcache,
монитор производительности ругается на то, что не установлен ни какой акселератор:

Прекомпиляторне установлен Установите один из акселераторов:
APC
eAccelerator
XCache
Zend Accelerator
Windows Cache Extension for PHP
Нужно научить монитор производительности понимать установленный Zend OPcache (который дефолтный с версии PHP 5.5 - php_opcache.*)
Рейтинг: 0.8802  
Ответил Красичков Андрей 05.12.2013 12:35:32
Реализовано, выйдет в следующем обновлении модуля perfmon. Там же и корректная обработка APCu собранном в режиме совместимости (по умолчанию)
Рейтинг: 0.4  
Внедрено
Предложил Пользователь 17890 08.11.2013 19:13:37

Кому был отправлен выпуск рассылки год назад?

Нужно фиксировать хотя-бы емейлы получателей выпуска на момент его оправки.

Т.к. список подписчиков постоянно скачет и восстановить кому конкретно был отправлен прошлый выпуск невозможно.

UPD это в старой версии 11.5 не было, а в новой я нашел поле "Отчет об отправке".
Т.е. вопрос снят.
Рейтинг: 0.1755  
Ответил Жуков Евгений 09.11.2013 12:41:41
В свойствах выпуска Вы можете посмотреть, кому был отправлен выпуск.
Рейтинг: 0.2974  
Внедрено
Предложил Пользователь 17890 03.09.2013 12:19:12

CCurrencyRates::ConvertCurrency() какой из этих методов вызывается и когда?

Модуль торгового каталога и интернет магазина зависит от модуля валют (без него не работает).
Итого, кто мне объяснит наличие такого же класса и метода CCurrencyRates::ConvertCurrency() во всех этих трех модулях?

вот где есть класс CCurrencyRates и метод у него ConvertCurrency():

modules\catalog\mysql\currency.php
modules\sale\mysql\currency.php
modules\currency\mysql\currency_rate.php

Зачем первые два? Когда они используются?

Нужно убрать из торгового каталога и интернет магазина этот класс, оставить только там, где ему место - в модуле валют.
Рейтинг: 0.1861  
Ответил Жуков Евгений 03.09.2013 13:16:52
Ни в sale, ни в catalog нет такого класса. Он есть только в модуле currency. Обратитесь в техподдержку, раз на Вашей установке наблюдается такая картина.
Рейтинг: 39.1076  
Внедрено
Предложил Пользователь 17890 30.08.2013 15:07:19

Чек-лист: увеличить ширину поля добавления нового итема чек-листа

Чувствуешь себя скованно при добавлении длинного итема чек-листа:

Рейтинг: 0.1718  
Ответил 14.11.2013 17:20:33
Реализовано в версии tasks 14.0.9
Рейтинг: 41.8046  
Внедрено
Предложил Пользователь 17890 21.08.2013 00:13:11

Использовать mysqli вместо устаревшего mysql

Интересно, есть в планах? mysql-расширение уже объявлено как deprecated
Рейтинг: 1.2901  
Ответил Dumbravanu Vadim 13.05.2014 14:24:38
В обновлении ядра 14.5.2 будет поддержка mysqli.

\bitrix\php_interface\dbconn.php
define("BX_USE_MYSQLI", true);

\bitrix\.settings.php
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
Рейтинг: 0.1033  
Внедрено
Предложил Пользователь 17890 01.08.2013 07:21:02

Сделать нормальную автозагрузку классов через API

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

Выходит, что сейчас максимум что можно - это сделать автозагрузку в рамках своего модуля, как описано в блоге. А если мне не нужен модуль? А если мне нужна некая своя "библиотека классов", которые я, допустим, в компонентах дергаю? Мне все время include необходимого класса писать в init.php? Хочется по-людски управлять этим процессом...

Я делал следующий хак: подрубал файл в dbconn.php и переопределял функцию __autoload(). (До того, как битрикс эту функцию "захавает" под себя).
Это все под PHP 5.3 было. Хака, чтобы использовать spl_autoload_register() я не нашел.

Что я предлагаю, и что было бы удобно:
некий способ, который позволит повесить событие и указать свой обработчик автозагрузки. При этом система битрикс будет искать неопределенный класс используя этот произвольный обработчик.

Сейчас с этим полный "баян", а хочется что-то хорошее...
Рейтинг: 66.1323  
Внедрено
Предложил Пользователь 17890 06.07.2012 21:13:52

Расширенные права доступа к инфоблокам

Всем привет!

Что значат эти голые коды операций над инфоблоками, где мне найти пояснения к ним?

У меня просто гора вопросов....

Сделали бы с кратким текстуальным описанием, как тут:


Либо хотя-бы было возможно найти описание по ним.


Итого предложение:
1. добавить описания в интерфейс
2. добавить описание в спавку. Тыкните носом, если она уже есть.