У сайта существует 2 версии: десктопная и мобильная. Сейчас картинки которые используются в превьюшках на десктопной и мобильной версии сайта одни и те же. Решил создать для мобильной версии отдельные превьюшки т.к. в мобильной версии сайта можно использовать в несколько раз меньшие картинки.
Лучше реализовать это через и почему? 1. Шаблон с помощью ResizeImageGet 2. При добавлении новости (использовать событие OnBeforeIBlockElementAdd) и при добавлении главной картинки, делать чтобы создавалась еще и вторая превьюшка в отдельное пользовательское свойство?
Часто редакторы загружают картинки на сайт в формате png без надобности, а желательно чтобы картинки грузились в jpg формате, потому как весят меньше. Решил сделать автоматическую переконвертацию в jpg.
При добавлении детальной картинки статьи, происходит создание миниатюры.
1. В каком файле происходит этот процесс чтобы можно было там внести изменения переконвертации в jpg? 2. Или какая реализация данного функционала будет правильной?
Скопировал меню (bitrix:menu) в свое пространство имен
Ниже весь код кэширования
$this->startResultCache(false, $subDomain, $subDomain.$this->GetRelativePath()) В этой строке я: - первым параметом указал false - чтобы кэш брался по умолчанию из arParams - здесь вопросов нет - третий парамет указал путь сохранения, он сохраняет кэш в указанное место, вопросов здесь тоже нет - второй парамет $subDomain (здесь находится не меняющаяся строка), сюда передаются параметры при помощи которых формируется кэш, параметр здесь не меняется, он всего один. Почему же тогда по этому пути при переходе на каждую новую страницу формируется для каждой страницы кеш для данного компонента я не пойму?
Добрый день Подскажите пожалуйста, можно ли добавить в раздел по символьному коду? Можно добвить по "IBLOCK_SECTION_ID", но у меня есть символьный код инфоблока, можно ли по нему добавить? "SECTION_CODE" => "test" не работает
Код
$el = new CIBlockElement;
$PROP = array();
$PROP[25] = "01.05.2020"; // Дата вызова мастера
$PROP[26] = "+79999999999"; // Номер телефона
$PROP[27] = "Алексей"; // ФИО
$PROP[28] = 6; // Оценка
$arResponse = Array(
//"IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела
"IBLOCK_ID" => 3,
"SECTION_CODE" => "test",
"PROPERTY_VALUES"=> $PROP,
"NAME" => "Отзыв ".date("d.m.Y"),
"ACTIVE" => "N", // активен
"DETAIL_TEXT" => "текст для детального просмотра",
);
Сайт обновил, ядро уже не модифицировано. Файлы были удалены.
Файлы создаются на сайте, каждый день. Причем как правило утром с 5 утра и до 7 утра, где то в этом диапазоне. Файлы я эти удаляю. После этого файлы не создаются до следующего дня. Но был случай, что один раз и создались часов в 10.
Почти везде присутствует /index.php?xxnew2018_url1, по нему я прошел, файлы никакие не создаются
Ядро больше не модифицировано, через bitrix:xscan выдаются файлы что выше (которые я каждый день удаляю) Пароли я все поменял. Внешнего доступа к БД нет. В кабинет хостинга кроме меня никто не заходит. Через битрикс тоже я входов кроме меня не вижу.
Но эти файлы каким то образом создаются. Не могу понять как мне вычислить откуда это идет?
Но вся проблема заключается в том, что в условии if( $this->StartResultCache(false, array(false, $arNavigation)) ) { выполняется несколько CIBlockElement::GetList
Т.е при первом вызове в результат $arNavigation попадает ?PAGEN_1 при втором вызове в результат $arNavigation попадает ?PAGEN_2 при третьем вызове в результат $arNavigation попадает ?PAGEN_3 при четвертом вызове в результат $arNavigation попадает ?PAGEN_4
И в массив $arNavigation попадает результат самого первого CIBlockElement::GetList это ?PAGEN_1, а мне нужно чтобы попадал последний результат ?PAGEN_4.
Может быть можно как то первые три запроса сделать не через CIBlockElement::GetList, чтобы постраничная навигация не уезжала дальше? Как здесь правильно поступить?
Писал как то компонент, в начале которого делал запрос $arNavigation После чего в этом массиве выводилась активная страница, т.е ее номер, если в текущей странице есть ?PAGEN_14=2, то в $arNavigation["PAGEN"] = 2
Тот же самый код вставляю в другой компонент, хожу по страницам, а показывает всегда $arNavigation["PAGEN"] = 1
Украли фтп данные и вот что сделали: 1. Модифицировали много файлов в ядре 2. Сделали автоматическое добавление тегов в один из инфоблоков, примерно раз в 2 минуты добавляется тег 3. Создается в минуту по 1000 файлов сессий примерно
Я сменил доступы к фтп, обновил сайт до последней версии, сейчас пишет что ядро не модифицировано, все впорядке Но вот 2 и 3 пункты не пропали
У меня две версии сайта и естествено два шаблона desktop и mobile
Скопировал шаблон system.pagenavigation в оба шаблона (desktop и mobile) - https://prnt.sc/sea2gl
Шаблон постраничной навигации в desktop работает без проблем
Шаблон постраничной навигации в mobile не берет языковые настройки из файла \bitrix\templates\mobile\components\bitrix\system.pagenavigation\.default2\lang\ru\template.php
Не могу понять, почему не работает перевод в этом шаблоне, уже все варианты пересмотрел Меняю что нибудь в самом шаблоне по пути \bitrix\templates\mobile\components\bitrix\system.pagenavigation\.default2\template.php, все меняется без проблем Т.е получается что шаблон подключен тот что нужен, а вот почему не подключается файл с переводом не могу понять, ведь он лежит в этом же шаблоне
Почему такой способ? script.js из шаблона сам подключится
Я решил подключить этот скрипт в компоненте, потому как у меня два шаблона, один desktop, другой mobile. Так мне получится нужно создавать в каждом шаблоне, один и тот же файл. Потом если его менять то тоже в двух файлах сразу.
Тогда может в шаблоне mobile прописать путь к script.js, который находится в шаблоне desktop?
Хочется сделать чтобы это было максимально удобно и правильно, как тогда лучше поступить?
В компоненте social-networks-share, подключается js файл при помощи комманды: Asset::getInstance()->addJs('/bitrix/components'.CComponentEngine::MakeComponentPath('gan:social-networks-share').'/script.js');
При выводе страницы где подключен компонент social-networks-share, не подключается файл со скриптом script.js Если обновить кэш то он работает
Как сделать чтобы файл со скриптами подключался и работал?
У компонента social-networks-share, есть шаблон со стилями в файле style.css При выводе страницы где подключен компонент social-networks-share, не подключаются его стили, хотя я посмотрел они кэшируются в папке \bitrix\cache\s1\gan\social-networks-share\20c\93\
Интересует такой вопрос, при привязке элемента через свойство "Привязка к элементу" https://prnt.sc/rzvebn Выходит вот такой вот список https://prnt.sc/rzvfpp, где можно выбрать только один элемент Можно ли как то сделать так, чтобы здесь стояли чекбоксы и чтобы можно было выбрать сразу несколько элементов?
Можно конечно сделать множественный выбор, но мне нужно чтобы все выбиралось в одном списке
Александр Медведев написал: 1. Зачем вытаскивать по 4 статьи?2. О каких страницах речь?
А здесь я имел ввиду: если при выборке с учетом тегов мы выбираем только 4 статьи, потому что больше нет, а на странице нужно 8, значит делаем еще один запрос на недостающие статьи уже с исключением тех четырех что выбраны были
Ну раз проще никак нельзя, значит так и буду делать, как сделаю, скину код, может быть можно как нибудь грамотнее сделать
Александр Медведев написал: 1. Зачем вытаскивать по 4 статьи? 2. О каких страницах речь?
Я ж написал прекрасный алгоритм, че не так?
Если бы я знал как можно сделать это одним запросом, то я бы не писал эти вопросы здесь Выше я написал свое мнение по этому поводу (учитывая мои знания), а вы тут мне вопросы задаете ))) Очевидно же что я не знаю как это сделать
Напишите запрос при помощи которого можно выбрать все это сразу
Алексей Ганин написал: Как мне правильно такую ситуацию реализовать?
Выбрать 8 статей с необходимым тегом Если выбрано меньше 8 - добрать разницу другими статьями При клике по "Еще услуги" начать с пункта 1, но добавить в фильтр "кроме статей, что уже показаны"
Выбрать 8 статей, здесь все понятно, могут возникнуть два момента:
1. Первый момент если статей мало, то добрать.
- Сначало я использую CIBlockElement::GetList, вытащил например 4 статьи по тегам, потом опять использую CIBlockElement::GetList с исключением тех статей что уже выбрал и за минусом 4 выбранных от 8 на странице, получаю еще 4 статьи.
- Имею два массива, к первому массиву добавляю второй массив, получаю массив из 8 новостей.
- Вывожу этот массив на странице.
- Потом при помощи jquery делаю CIBlockElement::GetList с уже исключением тех 8 статей что были выбраны.
- И через этот компонент уже делаю подгрузку услуг.
2. Если статей больше чем на одну страницу
- Тут по сути все точно так же, только дополняем запросы до второй или третьей страницы (до которой нужно), тут тоже куча условий получится
Можно как то упростить этот алгоритм? Мне кажется я не доконца понимаю возможности api битрикса
Александр Медведев написал: выбрать коллекцию статей переместить элементы коллекции с тегом, равным унитаз наверх
Я не уточнил один момент
У меня на странице должно выводиться по 8 статей, все остальные статьи должны подгружаться при клике по кнопке "Еще услуги" через аякс, если бы у меня выводились все статьи разом, то тут да, сделал выборку всех услуг, а после их отсортировал по тегам
Мне же нужно сделать как то так, чтобы в первом запросе из раздела "Услуги сантехника" вывелись первыми услуги с тегами "унитаз", а уже после выводились все остальные
Например я зашел в детальную статью "ремонт унитаза" и мне нужно чтобы сделалась вся выборка статей из раздела "услуги сантехника" с учетом того, что первые отображаются те статьи у которых стоит тег унитаз, а потом уже все остальные.
Код
//$arItem["TAGS"] - здесь лежат теги, которые должны быть выведены первыми
$arOrder = array('TAGS' => 'ASC', 'SORT' => 'ASC');
$arFilter = array( 'IBLOCK_ID' => 2, 'ACTIVE' => 'Y', 'SECTION_ID' => $arItem['IBLOCK_SECTION_ID']);
$arGroup = false;
$arNav = array('nPageSize' => 20);
$arSelect = array('*');
$qServices = CIBlockElement::GetList($arOrder,$arFilter,$arGroup,$arNav,$arSelect);