UPD Указанная константа не всегда помогает, потому что редирект помимо прочего заложен еще и в ряде компонентов. Например в bitrix:socialnetwork_group происходит вызов CSocNetLogComponent::redirectExtranetSite, который эту константу не учитывает.
Мне помогло в настройках модуля "Экстранет" - /bitrix/admin/settings.php?lang=ru&mid=extranet - поставить параметр "Код сайта экстранета" в значение "Нет", благо это оказалось применимо в моем случае.
Как я уже писал чуть выше, сам код на VBA не стирается, а вот с запуском этого макроса есть проблемы, приходится привязываться к специфическим событиям, либо биндить запуск макроса на сочетание клавиш.
Юрий Саприкин, может быть вам копнуть в сторону облегчения шаблона? 1,3 Мб это выглядит внушительно для шаблона. Сколько же он будет весить с данными?
По поводу макросов. Обнаружил, что при сохранении код на Visual Basic не пропадает, а вот элементы управления (в моем случае требовалась кнопка) стираются.
Я попытался привязаться к событию Workbook_Open(), чтобы средствами VBA инициализировать элементы управления, но PHPExcel подкинул проблему: при сохранении файла он генерирует еще один Workbook, обызвает его "Workbook1", и событие соответственно не срабатывает.
В итоге получилось привязаться в событию Worksheet_Activate(), которое срабатывает при переключении между листами прайса.
Как один из вариантов решения — можно попробовать указать хоткей для макроса, и запускать его комбинацией клавиш.
Задача: автоматически генерируемый прайс-лист в формате xls. Делается родным PHPExcel вообще без проблем. Если бы не нюанс. В итоговом файле должны быть встроенные макросы.
Функциональность макроса особого значения не имеет, но если коротко: в прайсе можно у товаров проставить требуемое количество, и должна быть кнопка, по нажатию которой выбранные позиции сохраняются в отдельном xls-файле, который можно отправить менеджеру.
Проблема в том, что тот самый родной и многократно проверенный в бою PHPExcel безжалостно режет макросы при сохранении.
Я делал таким образом: шаблон прайс-листа с простейшим макросом открывался PHPExcel-ем, далее туда добавлялись данные (товары и цены), а затем файл сохранялся тем же самым PHPExcel-ем под другим именем. В полученном файле макросы не отрабатывали.
Если вдруг кто-то делал подобную задачу, поделитесь идеями.
Проблема одной строкой: заказчик хочет полностью переделать структуру разделов каталога на сайте, не внося при этом никаких изменений в своей 1С.
Я сейчас размышляю, как это можно сделать наиболее логично и эффективно. Если у кого-то есть дельные мысли и идеи, то я буду рад их здесь прочитать.
Пока что у меня две идеи.
1. Сделать отдельный инфоблок, в который вбить требуемую структуру разделов. У товаров завести свойство с привязкой к разделам этого инфоблока. В итоге работать через это свойство. Это значит что придется проставить привязки вручную, переделать все меню по разделам + заморочиться с ЧПУ и индексацией для поиска.
2. Настроить интеграцию с 1С таким образом, чтобы на сайт выгружались только товары, без разделов. А привязки к разделам делать опять же вручную на стороне сайта.
Надеюсь на конструктивную критику и предложения. Спасибо.
Используйте фильтрацию. В настройках компонента есть параметр FILTER_NAME. Укажите там название глобальной переменной с фильтром. Примерно так:
"FILTER_NAME" => "arrWeeklyMostPopularFilter"
Соответственно перед вызовом компонента сформируйте фильтр. Примерно так:
global $arrWeeklyMostPopularFilter; $arrWeeklyMostPopularFilter = array( '>=ACTIVE_FROM' => '...', // дата начала текущей недели '<=ACTIVE_TO' => '...' // дата конца текущей недели );
Можно в файле PHPExcel/Autoloader.php закомментировать проверку на значение mbstring.func_overload:
Код
if (ini_get('mbstring.func_overload') & 2) {
throw new PHPExcel_Exception('Multibyte function overloading in PHP must be disabled for string functions (2).');
}
Костыль, конечно, но все работает. По крайней мере при выполнении базовых задач (импорт/экспорт в xls) я не замечал каких-то косяков.
Привет всем. Кратко обрисую ситуацию: использую на сайте SwiftMailer для отправки почты через сторонний SMTP-сервер. Реализую это через функцию custom_mail(). В остальном все как обычно, стандартные битриксовые почтовые события.
Все прекрасно работает, если email получателя валиден. Однако если указать невалидный email-адрес, SwiftMailer бросает исключение Address in mailbox does not comply with RFC 2822, 3.6.2., и этот текст (+ цепочка вызовов) выводится в футере, перед закрывающим тегом </body>. Надо сказать, текст исключения не просто выводится, а еще и обрамляется в теги <pre>.
Собственно, понятно, почему текст ошибки выводится именно там: это происходит в эпилоге, когда битрикс отправляет почтовые события. Но мне неясно, по какой причине текст исключения печатается на экране. Может это быть заложено где-то в ядре битрикса? Или это косячит сам SwiftMailer, и дебажить надо его?
На ум приходит вот как-то так организовать каталог: Товар «Керамогранит» с торговыми предложениями: 1) Керамогранит белый 40х40 2) Керамогранит белый 30х30 3) Керамогранит серый 40х40 4) Керамогранит серый 30х30
Не знаю, насколько это применимо в вашем случае, просто как идея :-) Выгрузку скорее всего кастомизировать придется.
Никогда не видел, чтобы в рассылках были html-формы. ИМХО, это не безопасно. Не проверял, но предполагаю, что нормальный почтовый клиент такую форму вырежет.
Как вариант, приведите в письме ссылку "уважаемый клиент, примите участие в нашем опросе", которая будет вести на ваш сайт с формой опроса.
Если установить NEED_AUTH в true, то форма авторизации/регистрации подключится автоматически и выведется вместо рабочей области. Это с одной стороны довольно удобно, можно с помощью одной константы закрывать определенные разделы от неавторизованных пользователей, не надо возиться с размещением компонента авторизации и его настройкой.
С другой стороны, при таком подходе можно только кастомизировать шаблоны системных компонентов, которые подключаются в служебной части пролога. Т.е. менять логику становится довольно проблематично. Решать, как обычно, вам :-)
Я в последнее время использую NEED_AUTH на странице профиля. Если заходит неавторизованный пользователь, то видит форму входа. Если же авторизован - свой личный кабинет.
На дату вашей регистрации я не смотрел. Но суждения у вас странные очень.
Цитата
и нахрена этот баян???? а стандартными способами работать не можете? так как ВСЕ разработчики битрикса работают???? Я не понимаю зачем так замарачиваться, что-то новое создавать
Сами себя послушайте. Действительно, зачем что-то новое создавать, лучше было бы на php четвертой версии продолжать сидеть, процедурки строчить.
vbcherepanov пишет: а стандартными способами работать не можете? так как ВСЕ разработчики битрикса работают????
А как ВСЕ разработчики битрикса работают, может вы поделитесь? Да даже не все, хоть про себя расскажите. Надеюсь, в блокноте по фтпшечке файлы не правите?
Добрый день. Поступила задача дать контент-редакторам доступ к резервным копиям — просмотр списка копий и создание бэкапов. На сайте заведена группа пользователей "Контент-редакторы", у которой стоит полный доступ ко главному модулю.
В левом меню в админке виден пункт "Резервное копирование", но при попытке перейти на страницу /bitrix/admin/dump.php выводится форма авторизации.
Думал что проблема может быть в доступе непосредственно к файлам на сервере, попробовал разные варианты, чтение, запись, полный доступ. Не помогло.
Вопрос, могут ли вообще неадминистраторы управлять бэкапами, и, если такое возможно, как правильно настроить права доступа для группы?
так уж получилось, что бизнес логику внутри шаблона в rails держать не принято ( дичайший моветон )
Толковый разработчик будет стараться отделять логику от представления вне зависимости от языка/фреймворка, будь то rails, symfony, bitrix или что-то еще. Это уже человеческий фактор, на самом деле можно писать хороший код под битрикс и наговнокодить под rails :-)
По делу: шаблонизатор битрикса предполагает использование php-кода для вывода. Грубо говоря вот так:
В данном примере $arResult — это массив, в котором данные из компонента передаются в шаблон, а GetMessage — языковое сообщение (для реализации многоязычности).
При этом я натыкался на решение, которое позволяет использовать twig в качестве шаблонизатора: Твигрикс. Решение бесплатное, на Github тоже можно его найти.
Насчет git и .gitignore. Тут все просто: ядро системы лежит в папке /bitrix/, в идеале всю ее нужно загонять в .gitignore. Раньше это нельзя было сделать, т.к. в папке ядра были шаблоны сайта и компонентов, там же лежал файл init.php, в котором полагается размещать обработчики событий. Сейчас можно все ядро игнорить, т.к. есть замечательная папка /local/, где можно размещать шаблоны и все прочее. Прочитать об этом можно тут — http://dev.1c-bitrix.ru/community/blogs/vad/local-folder.php Еще рекомендуется игнорить папку upload, куда по умолчанию скидывается весь медиаконтент типа картинок и прочего.
Про покрытие кода тестами не могу ничего сказать к сожалению, сам не использую, грешен.
2. Использовать result_modifier.php в шаблоне компонента catalog.section. Сделать в result_modifier.php обычный GetList по товарам. В результате получится DETAIL_PAGE_URL, сформированный в контексте самого первого раздела, к которому привязан элемент.
nonlux, спасибо за информацию. Если у вас руки дойдут до решения в github, буду рад увидеть тут ссылку. Дело в том, что сам в последнее время задумался над организацией рабочего процесса с битрикс-проектами, best practice так сказать. Установить битрикс через composer и накатить свой код из репозитория за пару команд — это мне определенно нравится.
В целом у нас рабочий процесс организован примерно так: есть боевой сайт, вторым уровнем идет общий dev-сайт и третьим уровнем локалхосты разработчиков. Все новые фичи, которые пишутся на локалхостах, сначала пушатся на dev-сайт, там тестируются и принимаются заказчиком, а затем переносятся на боевой сайт.
При этом возникает куча проблем с синхронизацией базы данных. Банально добавить новое свойство — уже геморрой. А еще есть волшебная папка upload, которая на больших проектах разрастается до нескольких Гб. Естественно, ее не хочется тащить ни на dev-сайт, ни тем более на локалхосты.
В общем, проблем хватает. Мне бы было очень интересно узнать, как народ с этим справляется, почерпнуть что-то новое и полезное для себя.
Вот что я для этого сделал (специально в консоли добавил время вывода, чтобы было видно сколько времени отнимает задача по развертованию рабочего проекта на новой машине):