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

Рейтинг: 0  
Внедрено
Предложил Пользователь 163266 09.11.2016 15:22:47

SetResultCacheKeys

Создать параметр для компонентов (тип array), использующих кеширование, который будет передавать дополнительные ключи массива $arResult для их сохранения в кеше (ф-ция SetResultCacheKeys) с последующим извлечением в файле component_epilog.php. Сейчас в компонентах сохраняется предустановленный и неизменяемый набор ключей в кеш. Предлагаю целиком заменить его на массив, передаваемый из параметра. А предустановленные ключи передать через параметр

Цель такого решения: не придется кастомить компонент всего лишь для того, чтобы сохранить и получить еще один ключ массива $arResult в component_epilog.php
Рейтинг: 1.1804  
Ответил Жуков Евгений 09.11.2016 20:35:47
Вы можете добавить свой ключ для сохранения в result_modifier.php, либо сохранить нужные данные в переменную $templateData в template.php
Рейтинг: 1.002  
На голосовании
Предложил Пользователь 163266 15.06.2015 12:26:06

Внести лог. операции в фильтр по элементам инфоблока в админку

Мне кажется, эту идею уже должен был кто-то предложить, или подобную. И все же.

У нас есть GetList по элементам инфоблока в коде. У которого есть операции над свойствами в фильтре : >=, <, AND, OR, и т.д. и т.п. Было бы очень круто, если бы разработчики Битрикса вынесли эти операции (или хотя бы часть из них) в админку, в фильтр для списка элементов инфоблока. Чтобы можно было быстро фильтровать, не прибегая к коду, для проверки. Сейчас большинство свойств фильтруются "в лоб", по значению. Нет например диапазона, как у ID.
Рейтинг: 2.1462  
На голосовании
Предложил Пользователь 163266 06.11.2014 16:55:45

Возможность сбрасывать идентификаторы (primary keys) при сдаче проекта

При сдаче проекта имеем много тестовых данных, которые подчищаем: пользователи, заказы, эл-ты инфоблоков. После подчистки, ID сущностей, разумеется, не сбрасываются, а продолжаются. Один раз клиент спросил меня о возможности сброса номеров заказа. Может заведем кнопку "Обнулить счетчики"? С подтверждением действия. В MySQL такая возможность есть:
ALT ER   TABLE имя_таблицы AUTO_INCREMENT = 1;  
/*правда ни разу не выполнял на таблицах Битрикса, да и вообще */


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

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

UPD: сейчас выполнил запрос на сброс первичного ключа при заполненной таблице b_iblock_element. Добавил новый элемент в инфоблок через админку. Новый ID продолжился.

Удалил все строки из таблицы и еще раз выполнил предложенный выше запрос на сброс первичного ключа. Добавил эл-т в инфоблок через админку. ID эл-та присвоилось значение "1". Следующему - "2". Что и хотелось видеть. Как и думал, сброс первичного ключа работает при очищенных записях в таблице.
Рейтинг: 3.7537  
На голосовании
Предложил Пользователь 163266 06.11.2014 09:53:41

Осуществить проверку успешности доставки почты через CEvent::Send, CEvent::SendImmediate

В Битриксе есть функционал по проверке системы: Настройки->Инструменты->Проверка сайта. Одним из пунктов является тестирование работоспособности php-функции mail. На основе успешности этого теста делается вывод об успешности работоспособности почты.

Но чаще всего мы пользуемся функциями (CEvent::Send,  CEvent::SendImmediate) Битрикса, используя функционал почтовых шаблонов.

Поэтому предлагаю тестировать не только ф-цию mail, но и ф-цию CEvent::Send или CEvent::SendImmediate. Дело в том, что успешная отправка письма на определенный ящик с помощью ф-ции mail не означает, что отправка на этот же ящик будет успешна и с помощью ф-ции CEvent::Send. Очень много убеждался в этом, особенно это касается таких почтовиков, как Gmail, Mail, Yandex.

У нас что ни проект, обязательно упираемся в проблему почты и  СEvent::Send (здесь дело не в кроне и не в отсутствии хитов - письмо не доходит до адресата). Было бы просто прекрасно, если бы тест выдавал список действий, который нужно совершить на сервере или в настройках сайта, чтобы CEvent:Send отправлял и на Гмайл и на др. "каверзные" почтовики. Обычно в логи ложится ошибка о спаме. Могут ли программисты Битрикса взять эту проблему на себя?

Это было бы очень круто - сразу проверить, работает ли CEvent::Send и, если она не работает, выполнить какие-нибудь настройки/рекомендации и после убедиться, что она работает.

UPD: написал, а сам думаю: а решаема ли эта задача... В любом случае, она очень непростая. Мб, как-нибудь читать логи почты?..
Рейтинг: 1.0714  
На голосовании
Предложил Пользователь 163266 28.10.2014 10:41:11

Проверка на существование картинки

Коллеги, добрый день. Предлагаю в следующих версиях продукта дополнять проверку на существование картинки (анонсной или детальной, любой в принципе) в шаблонах, где присутствует вывод картинок (список товаров, список новостей, корзина, детальная новость - не важно), функцией file_exists

Сейчас примерный алгоритм вывода изображения следующий (считайте псевдокодом):

if(!empty($arItem["PREVIEW_PICTURE"]["SRC"] ))
     выводим img c src = $arItem["PREVIEW_PICTURE"]["SRC"];
else 
      выводим img c src = "путь_к_no_photo.png";

ну или другие варианты. К слову, где-то вообще наличие пути из базы не проверяется и тег img сразу выводится.

Считаю эту проверку в стандартных версиях продукта неполной.

Предлагаю дальше делать так:

if(!empty($arItem["PREVIEW_PICTURE"]["SRC"] && file_exists($_SERVER['DOCUMENT_ROOT'].$arItem["PREVIEW_PICTURE"]["SRC"]  ))
     выводим img c src = $arItem["PREVIEW_PICTURE"]["SRC"];
else 
      выводим img c src = "путь_к_no_photo.png";

Проблема в том, что часто наличие картинки в таблице файлов вовсе не означает, что она существует в файловой системе сайта (переносили сайт, потерли папку, удалили изображения). Я думаю это полезная проверка. Заказчики часто обращают на это внимание, и приходится дополнять этой проверкой стандартные шаблоны.
Рейтинг: 1.3888  
На голосовании
Предложил Пользователь 163266 18.09.2014 14:44:20

Фильтр по названию, ID и других полям эл-тов инфоблока среди элементов ВСЕХ инфоблоков

Добрый день!

Пришла мысль - в Joomla есть фильтр (поиск) по названию, ID материала среди материалов ВСЕХ типов. Сейчас в Битриксе этого нет - фильтровать эл-ты в админке мы можем только среди ОДНОГО инфоблока.

Предложение: сделать в админке поиск по полям среди ВСЕХ инфоблоков. Как это реализовано в Joomla, приведено в скрине. Я думаю это удобно, ведь часто мы уже заранее знаем ID или название эл-та, который так и хочется сразу найти. В Joomla есть как и общая фильтрация (среди всех типов), так и фильтрация материалов внутри одного типа. Кстати, мысль возникла спонтанно - клиент спросил, можно ли делать поиск по названию или ID для всех инфоблоков сразу.

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

Небольшой глоссарий по Joomla:
1. Материал - тоже, что и эл-т инфоблока в Битриксе
2. Тип - тоже, что и инфоблок в Битриксе. Характеризуется списком своих полей.

UPD: Разумеется, можно добавить возможность фильтрации по инфоблоку, флагу активности, временные диапазоны (начало, конец активности) и т.д. Все это может составить приличную общую картинку состояния эл-тов всех инфоблоков.