Загрузка и поиск файлов
Урок
18
из
293
Сложность урока:
1 уровень – интуитивно все понятно из интерфейса, но почитать стоит.
1 из 5
Дата изменения:
12.02.2023
Просмотров:
62345
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Ограничений нет
Загрузка файлов
Для
загрузки файлов
перейдите с помощью
Менеджера файлов
Некоторые операции по работе со структурой можно выполнить только из административной части. В этом случае контент-менеджер может воспользоваться Менеджером файлов, который предоставляет широкие возможности по работе с файлами и папками, а принципы его работы повторяют знакомый всем проводник Windows.
Подробнее в курсе Контент-менеджер.
в папку, в которую нужно загрузить файл и нажмите кнопку на контекстной панели Менеджера файлов. Откроется сама форма загрузки файлов:
Число загружаемых файлов неограниченно.
Примечания:
- По умолчанию в настройках системы установлено ограничение на размер загружаемого файла в 2 мегабайта. Если есть необходимость изменить это ограничение, то это можно сделать в файле php.ini в параметре
upload_max_filesize
. - Система поддерживает использование файлов с именами как на латинице, так и на кириллице, без ограничений по регистру. Недопустимо только использование спецсимволов: / ? * < > ” ‘.
Поиск файлов
В рамках файловой структуры есть механизм поиска файлов, размещающийся на контекстной панели в виде кнопки
Поиск
. Откроется окно поиска:
Поиск ищет как по имени, так и по содержимому. Ограничения можно наложить следующие:
- По папке или сайту
- Дате изменения;
- Размеру файла;
- Регистру.
Кнопка Подсчёт покажет общее число файлов, удовлетворяющих указанным условиям поиска.
С помощью поиска можно произвести замену слова или фразы в файле. Для этого воспользуйтесь закладкой Замена.
Какие-то вредные советы понаписали. Потом заходишь на сайт, а там все оптимизации выключены, потому что какому-то разработчику несколько лет назад так удобно было, видите ли.
1. В этих оптимизированных файлах написано, откуда были взяты исходники.
2. Часто подключаются минифицированные файлы, но править надо не минифицированные. В папке можут лежать файлы style.css и style.min.css. Правите style.css, сохраняете. Минифицируете его и сохраняете минифицированную версию в style.min.css.
3. Если файлы подключаются с помощью API Битрикс, то кеш сам сбрасывается при изменении файлов. Если у кого-то не сбрасывается и они делают это вручную, то они просто не умеют подключать стили.
Как надо:
use BitrixMainPageAsset;
Asset::getInstance()->addJs('/путь/скрипт.js');
Asset::getInstance()->addCss('/путь/стиль.css');
4. Проще всего искать нужный файл с помощью утилиты grep (работает на линукс, в винде тоже можно поставить)
Если начнете искать по всему сайту, то будет очень долго. Стили чаще всего лежат в папке шаблона, там и надо начинать поиск.
Видите например на сайте элемент <div class="any_selector"></div>
. К нему хотите стили найти.
В терминале вводите:
cd local/templates/my_template
grep -r "any_selector" . --include=*.css
Вам выдаст список файлов, где есть упоминание any_selector
Можете за одно почитать про инструменты хрома, там и файлы css можно найти и js
https://r-morozov.ru/javascript/instrumenty-debaga…)
Добрый день! Есть сайт на CMS Bitrix, написанный на PHP. На главной странице есть всплывающее окно для заполнения параметров обратного звонка. Один из заполняемых параметров окна имеет выпадающее меню вариантов. Я администратор и у меня есть доступ к структуре сайта по FTP (Mozilla). В консоли панели разработчика Chrome я нашел ту часть кода, где нужно поменять выпадающие позиции (они перечислены в теле кода). Но я не могу найти исходный файл с этим кодом в структуре файлов. Обратиться к разработчику нет возможности.
Поиск через меню консоли не дал результатов.
Подскажите, где в структуре сайта стоит поискать: тип файла, возможные названия.
С PHP, HTML, JS знаком. Привожу фрагмент кода из консоли.
задан 28 авг 2017 в 11:53
6
если есть полный доступ, можно скачать сайт к себе и в notepad++ сделать поиск по папкам/файлам на предмет: “</select>
“
думаю, что код захвата данных с базы находится между атрибутами <select></select>
Всплывающие окно может быть из js скрипта, можно поискать по вариациям display = "none"
или display
для поиска кода внутри js.
В любом случае нужно искать в исходном коде, а не в сгенерированном в браузере.
ответ дан 2 сен 2017 в 5:42
2
Вы замечали что иногда поиск по документам на диске (и не только) в коробочной версии Битрикс24 не всегда ищет по содержимому, а в последних версиях он вообще не ищет по содержимому документов? А уж об индексации pdf/jpg и других форматов так и вообще можно забыть. Нет, на самом деле это немножечко не так и эта особенность поддается корректировке.
Заинтересовались? Поехали!
Как устроен поиск в Битриксе?
Исторически в платформе всегда использовался поиск средствами модуля Поиск. Когда создается элемент инфоблока специальный механизм применяется к элементу и собрает с него поисковый контент, который токенизирует и складывает в отдельные таблицы b_search* и когда пользователь начинает вводить поисковый запрос, он разбивается на токены и ищется в этих таблицах. Время шло и со временем поиск перестал удовлетворять по критериям скорости и объема информации. Так поиск получил возможность интеграции с sphinx.
Для 1С-Битрикс: управления сайтом такого варианта вполне хватало: был либо поисковый запрос либо параметры фильтрации, однако пользовательский сценарий работы в Битрикс24 подразумевает использование обоих механизмов, что делает текущие варианты не эффективным. Разработчики Битрикс24 решили перейти на фильтрацию с полнотекстовым поиском в MySQL что дает возможность одновременного использования фильтрации и поиска.
Презентацию можно сказать по ссылке: скачать презентацию
Таким образом каждый элемент битрикс24 в своей таблице (или отдельной таблице) содержит некоторый столбец с текстом, по которому выполняется полнотекстовый поиск. Когда вы создаете сделку/контакт/загружаете файл в соответствующей таблице в этот столбец записывается конкатенация параметров и когда производится поиск то он осуществляется именно по этому столбцу.
Как включить индексацию диска?
Для базовой настройки индексации достаточно активировать эту возможность в настройках модуля Диск.
Достаточно простое действие: отмечаем нужные опции, задаем максимальный размер документа и переходим в публичную часть общего диска.
Не сказать что процесс длительный, но может занимать несколько дней. Зависит конечно же от размера ваших документов и того где они находятся.
Например для 10 маленьких локальных документов это может быть 10 минут, а для тысяч документов расположенных в облаке этот процесс может растянуться на недели или даже месяцы.
Как именно индексируются документы?
Если с текстовыми полями все более менее понятно: берем значения и пишем в поле, то как происходит извлечение информации из файлов?
При включенной индексации содержимого файлов для каждого загружаемого файла последовательно вызывается обработчик события OnSearchGetFileContent модуля search. Результат первого обработчика и будет является контентом документа (остальные обработчики даже не будут вызваны). Для файлов таким обработчиком внезамно является модуль Интранет (на событие подписан класс CIntranetSearchConverters с его одноименным методом OnSearchGetFileContent, найти который вы можете по пути: /bitrix/modules/intranet/tools/search.php)
Думаю не нужно объяснять, что для работы с MSOffice форматами, выбором языка программирования PHP будет не лучшим решением. Разработчики битрикса это в целом тоже понимают, поэтому для извлечения контента они используют внешние команды.
Что такое внешняя команда?
Это любое linux приложение вызванное через php-функцию exec от пользователя под которым запущен apache, которое получает на вход путь к документу и выводит на экран текстовое содержимое.
Например для конвертации doc-формата используется linux приложение catdoc. Часть из них вы можете найти в настройках модуля интранет, другая часть зашита в ядро продукта
Не расстраивайтесь, если вашего формата в списке нет, вы можете использовать или даже написать любое приложение, которое по пути к файлу будет проводить индексацию документа, т.е. возвращать его описание или содержимое.
Из хороших идей, можно сделать:
- ML-парсер изображений (писать в духе поисковых систем: “на изображении человек”
- Распознавать текст на картике
- Проводить распознавание речи для аудиофайлов
Не устраивает качество?
И хотя в битрикс24 имеется стандартные способы индексации, всегда можно их изменить. Например, меня не очень устраивает стандартная индексация docx файла: она медленная и не полная. Я обычно в таких случаях ставлю на linux-овую виртуальную машину libreoffice (последняя, на момент работ была 6.4) и прописываю доп. строчку в настройках модуля Интранет:
Расширение: docx
Внешняя команда: libreoffice6.4 –headless –convert-to “txt:Text (encoded):UTF8” # FILE_NAME# –cat –outdir /tmp
Каталог программы: /usr/bin
P.S. Между # и FILE_NAME# не должно быть пробела – это дзен ставит хеш-теги
Только убедитесь, что выполнение команды под пользователем bitrix на файле docx формата выводит его содержимое в консоль 🙂
Блог «Дивасофт»
4 сентября 2019, Михаил
Нельзя просто так взять и получить настоящий файл для дальнейшей манипуляции с ним. В api такого нет. ORM d7 в помощь
<?php
function getRealFileFromDiskById($diskId) {
BitrixMainLoader::includeModule('disk');
$resObjects = BitrixDiskInternalsObjectTable::getList([
'select' => ['NAME', 'FILE_ID'],
'filter' => [
'=ID' => $diskId,
]
]);
if ($arObject = $resObjects->fetch()) {
$arObject['PATH'] = CFile::GetPath($arObject['FILE_ID']);
$arObject['FULL_PATH'] = $_SERVER['DOCUMENT_ROOT'].$arObject['PATH'];
return $arObject;
}
return false;
}
?>