Владимир Бодов, раз уж вы хотите, то обращаю ваше внимание:
Цитата
Владимир Бодов написал: Доделайте, пожалуйста, хотя бы, что обещали, и приведите документацию в нормальное для программистов понимание.
Читаете между строк:
Цитата
Андрей Николаев написал: P.S. Вы обращаетесь сюда так как будто бы я представляю 1С-Битрикс. Нет, я партнер, практикующий разработчик и просто помогаю людям.
Что и где я лично вам обещал? Когда вы мне писали? Куда именно? На почту?
Цитата
Владимир Бодов написал: да, давайте "письками меряться":
Да не за чем мне с вами меряться - при таком обили навыков, интересов и знаний - так себя вести и беситься по таким мелочам? У вас пожалуй больше.
Я не вижу смысла продолжать дискуссию в данном ключе. Мной было предложено на выбор как минимум 2 варианта ответа: (какая разница, главное чтобы не было путаницы) и (от используемого call_user_func_array). Хотите высказаться о наболевшем? Я мешать не буду.
Евгений Храпов, эм... а зачем Вы пытаетесь эту информацию открыть поверх слайдера? Она же относится напрямую к сущности, и значит она должна быть в табе, а не в слайдере. В таком случае проблем бы не было.
Владимир Бодов написал: Вот, в чем задница? Я воспитывался на Бьерне Страуструпе, а вы опять вводите новые понятия? Вы - Страуструп?
В рамках авторов платформы они имеют полное право вводить любые понятия которые считают нужным. Вы воспитывались на Бьерне Страуструпе? Прекрасно, но не лезьте с чужими правилами (из мира си) в совершенно другой мир.
Цитата
Владимир Бодов написал: 1. я делаю сайты на Битриксе с 2013 года
Цитата
Владимир Бодов написал: Но, продвигая это, вы забыли о том, что обещали... и на чем меня выставили виноватым. Коробочную версию Битрикс24... На PHP в Б24 нельзя программировать бизнес-процессы. Там тупо случился "странный случай". У вас это было заявлено (PHP программирование бизнес-процессов) ещё при запуске Б24, человек (США, американец) купил из-за этого, я ему начал делать... а там - швах... техподдержка нулевая... Блин, да, уберите эту опцию в рекламе. Не может Б24 программировать бизнес-процессы на PHP.
Я работаю с 1С-Битрикс с 2012 года, с 2014 года 90% моей работы приходится на проф. разработку коробочного Битрикс24 (внедряем б24 в организации, пишем бп и т.п.). Я уверенно заявляю: в Битрикс24 можно И php-кодом написать бизнес-процесс (в коробке) и добавить свои action'ы (в коробке на php, в облаке rest).
Да, документации почти нет, но если вы не смогли разобраться это исключительно ваши проблемы и проблемы вашего заказчика. Если бы он обратился, например к нам, то такой ситуации думаю не возникло бы. Это не реклама, а проф. разделение. Делать сайты на БУСе и порталы на Битрикс24 - две совершенно разные области и специалисты, несмотря на одну платформу, не универсальны.
Цитата
Владимир Бодов написал: Но, вы забыли главное - порог вхождения.
Порог вхождения в Б24 очень высокий, но никто и не говорил что будет легко.
P.S. Вы обращаетесь сюда так как будто бы я представляю 1С-Битрикс. Нет, я партнер, практикующий разработчик и просто помогаю людям. Ваши претензии на тему усложнения php, неправильного именования и т.п. обоснованы (понять можно), но увы никому не интересны, кроме вас.
P.S.2 Отложенными функциями они называются от того что на бекэнде все равно вызов приходит в call_user_func_array (дословно: вызвать пользовательскую функцию через массив). Или по вашему разработчикам php нужно было назвать call_user_method_array?
Денис Диденко, не знаю, насколько это будет жизнеспособно в данном случае. Конечно - можно попробовать разобрать по кусочках конфиги и собрать аналог, но не думаю что это будет сильно быстрее. А вариант развернуть bitrix env и использовать штатный увы не подходит.
Владимир Бодов, не знаю что у вас за битриксойды спрашивали такое, но куда важнее смысл - знаете или нет. Какая разница - знаете ли вы чем отчается абстрактный класс от интерфейса, если вы не умеете работать с классами. Хочу чтобы вы правильно меня поняли - я не знаю на какую позицию вы собеседовались, но мы такой вопрос даже junior'ам не задаем. Мне кажется, что дело в самой сути вопроса, а не в конкретных словах.
P.S. Лично мне все равно как это называется, главное чтобы кандидат умел этим пользоваться. P.S.2 Судя про претензии - собеседование вы завалили. А прав? P.S.3 Если вас уже такая постановка вопроса так взбесила, то что же будет с вами на обновлениях битрикса... так ведь и поседеть можно...
Александр написал: то есть, это значит, что они никак не пересекаются, верно?
В рамках одного выполнения страницы не пересекаются
Цитата
Александр написал: Тогда почему функции не могут быть с одинаковыми названиями?
В рамках одного исполнения страницы 2 функции не могут быть названы одинаково. Если вы создадите 2 страницы (например test1.php и test2.php) и в обоих установите функцию foobar(), то это не будет ошибкой до тех пор пока код из одной страницы (например test2.php) не будет include/require подключен в код страницы test1.php. В указанном вами случае, это как раз так - они одинаковы по названию, но не исполняются в рамках 1 запроса, а вот если бы кто-то сделал бессмысленное подключение обоих компонентов на одну страницу, то в некешируемом запросе это вызвало бы ошибку интерпретатора
Олег Слесаренко написал: В header.php добавил сверху error_reporting(E_ALL) и увидел множество ошибок. Две из них:
Из-за legacy подхода битрикса в его ядре еще есть конструкции которые вызывают notice-ошибки, так что устанавливать error_reporting в E_ALL точно не стоит (PS. это умеет делать и главный модуль). Это не совсем ошибка, скорее предупреждение/напоминание, но не стоит такого чтобы на нее обращали внимания. Вот E_RROR, E_FATAL*, E_CORE_* это да.
Евгений Бабченко, если маршрутизатор сам не умеет маппить по домену, то тогда либо нужно на одном из серверов (192.168.0.35) прописать в nginx proxy_pass на другой сервер, либо сделать новый сервер который будет это делать
Денис Сон написал: Не соглашусь, по крайней мере не полностью соглашусь. Сделать можно. Просто механизм поиска не будет идеальным.
Согласен, не очень корректная формулировка. Он может быть выполнен, но с рядом значительных оговорок. Но давайте не будем забывать, что нужно не просто найти битые ссылки, но и:
А вот тут уже ряд значительных неопределенностей в рабоче. Удаление или замена? Если замена то на что? Если удаление то как решать, если ссылка в текста (тег а)? И ведь это только верхушка айсберга, потому что нужно еще и локализовать. Ведь не сказано где эта ссылка может быть - включаемая область, раздел инфоблока, хардкод в шаблоне компонента.
Если рассматривать сугубо одно поле информационного блока, то такое можно реализовать, но подобных вещей я не встречал, тем более в модулях.
P.S. Я не знаю что должно случиться, чтобы на сайте образовалось так много битых ссылок сразу. Они наверное должны исчисляться сотнями или тысячами, потому что 70 ссылок вполне реально поправить
Никоалй Киселёв написал: Делаю редирект для поисковых систем в файле .htaccess, но дня так через 2, возвращается все на свои места, url и название раздела изменяется на какой и был, почему настройки слетают на те что были?
Скорее всего этот каталог у вас импортируется из внешней системы. Может 1С, может еще что. Чтобы поменять его - нужно менять в этой системе. Либо открепить формирование символьных кодов от обмена и задать вручную, но в таком случае для новых разделов это придется делать самостоятельно
Фильтр (FILTER_NAME) Указывается имя переменной, в которой передается массив параметров из фильтра. Служит для определения выходящих из фильтра элементов. Если поле оставлено пустым, то используется значение по умолчанию.
В целом, если предположить сферического коня в вакууме, то можно сделать так: на странице разместить news.list компонент и перед его вызовом сделать вот это:
Виктория Русакова, нет. А вот почему нет и быть не может давайте разбираться.
С точки зрения битрикса, сайт это внешняя часть, которая что-то из него получает (какую-то информацию) и как-то отображает. Битрикс знает что у него есть инфоблоки и какие-то пути, по которым можно найти элементы и инфоблоки (пути относительные, это важно). Он не заботиться о том, как сайт это отображает (это дело разработчика сайта) и не проверяет контент внутри (для него это просто хранимая единица - он достал данные и отдал). Соответственно битые ссылки он никак не может проверить, потому что не знает какая ссылка "битая", что является ссылкой и где именно ему нужно искать.
Получается необходимо было бы проверить: зайти на главную страницу и собирать оттуда все ссылки, на каждую заходить и проверять существует ли она, не отдается ли что-то отличное от 200/300 статусов и повторять процедуру до тех пор пока ссылки не закончатся и он не обойдет весь сайт. Чтобы вы понимали, компания 1С-Битрикс так тестирует платформу и в 2015 Олег Строкатый (руководитель отдела тестирования) говорил что один тест отрабатывает в целом за 7 дней (а это другой сервер, который проверяет платформу). Нет, конечно вам не нужно проверять все, а достаточно только сайта, но попытка собрать все ссылки средствами сайта и провести эту процедуру на интернет-магазине в 10+ тысяч товаров, не думаю что получиться быстрее чем за 3-4 часа, а ведь это по факту 3-4 часа простоя магазина (может не простоя, но подтупливать будет).
А ведь мы разобрали только часть проблемы, ведь этому "чуду" еще нужно каким-то образом понять где именно находится ссылка, что за компонент/код ее выводит и как именно ее нужно заменить.
Резюмируя 5-ти минутный поток сознания, краткие выводы: 1) Такого инструмента (поиск + автоматическая замена) думаю не появиться еще лет... не появиться вообще (слишком много затрат, слишком мало профита) 2) Для решения вашей задачи лучше воспользоваться услугами специалистов (или обезьянок, которые найдут и поменяют ссылки)
Александр написал: Разве result_modifier.php пересекаются в данном случае?
На одной странице не размещаются данные компоненты. Один отображает раздел, второй элемент. Никто не отображает на одной странице и список разделов и список элементов с выводом на полный экран. Это все равно что заказать две стиральные машинки и поставить одну на другую - смысла нет никакого.
konstantin.sal написал: Но не присваивается значение уже имеющегося производителя.
А с чего оно должо присваиваться? CIBlockElement::SetPropertyValuesEx() в 3 параметре ожидает ассоциативный массив - Код поля => значение, а вы ему подсовываете неизвестные свойства - PROPERTY_ID и VALUE.
То есть: вы должы получить id свойства, добавить в него новое значение и id нового значения установить в элемент.
В данном случае ваш код должен выглядеть как-то так:
Код
/**
* ID элемента ИБ
*/
$elementId = 650;
/**
* Код изменяемого свойства
*/
$propertyCode = "CML2_MANUFACTURER";
/**
* ID информационного блока
*/
$iblockId = 27;
try
{
if ( !\Bitrix\Main\Loader::IncludeModule('iblock') )
{
throw new \Exception("Iblock module not included");
}
$resProperty = \CIBlockProperty::GetByID($propertyCode, $iblockId);
if ( !$property = $resProperty->fetch() )
{
throw new \Exception("Свойство не найден");
}
// Добавим новое поле в множественное значение
$new_enum_id = \CIBlockPropertyEnum::add([
"PROPERTY_ID" => $property['ID'],
"VALUE" => "NEW BRAND"
]);
if ( !$new_enum_id )
{
throw new \Exception("Новое значение не было добавлено");
}
\CIBlockElement::SetPropertyValuesEx($elementId, $iblockId, [
$propertyCode => $new_enum_id
]);
echo "Все окей!";
}
catch ( \Exception $e )
{
var_dump($e);
}
Если у вас множественное свойство, то помимо этого вы должны получить текущее значение этого свойства, добавить туда ID нового (добавленного варианта) и сохранить. Но это я предлагаю проделать уже самостоятельно, в рамках обучения платформе.
Иван Барабаш написал: В силу технических причин организации нашей корпоративной инфраструктуры, использовать BitrixVM 7.2.2 мы не можем.
1) Тяжко придется без push'n'pulla - его придется собирать руками, а это вообще мало кто без bitrixenv может. 2) Установка зафейлилась на тестовом или на боевом сервере?
Цитата
Иван Барабаш написал: Однако при установке приложения Телко происходит сбой.
Сбой какого рода? Белый экран, успешная установка, просто обновление страницы? Лицензия активная?
PROPERTY_ID - это идентификатор свойства, а не его код. Сначала получите ID свойства, а потом он заработает. Вот только Ваш фрагмент кода не добавит производителя, а изменит его. То есть нужно сначала получить значения у этого элемента, а потом уже установить