Всем доброго времени. Подскажите советом или ссылками на примеры как решить мою задачу. Есть у меня страница где выводится табличка строк в 15, и в каждой строке есть три поля, одно из них картинка, а два других сами представляют из себя таблицы строк по 20 каждая. И вот хочется завернуть эти три поля в три окна которые будут открываться по клику на соответствующую ссылку или картинку. Собственно может кто подскажет есть ли функционал для подобного у битрикса?
Пока что начал копать доки, нашел вот такой вариант https://dev.1c-bitrix.ru/api_help/js_lib/viewer/index.php для вывода картинок, в общем рабочий но как я понимаю нет ни какой возможности (ну или я ее не нашел) управлять внешним видел окна, например убрать кнопку сохранить и кнопки перемещения между картинками вперед назад.
Для вывода текста и таблиц тоже можно использовать тоже что-то подобное, но блин в документации только одна страничка с примером и есть.
Или может у битрикса вообще нет такого встроенного функционала и стоит сразу копать в сторону сторонних библиотек?
Оказалось что битрикс почему-то в упор не желал подключать стандартный скрипт script.js
После того как в шаблон прописал руками $APPLICATION->AddHeadScript('script.js');
все заработало.
Но вопрос остался только теперь звучит иначе.
Почему битрикс не подгружал скрипты сам?
Еще один прикол получил
даже с прописанным руками скриптом битрикс отдает его пользователю через раз чаще всего после сброса кеша компонента 1-2 раза отдает потом скрипт как будто пропадает.
после того как прописал уже просто
echo ('<script type="text/javascript" src="URL");
сайт стал нормально отображаться и вроде как теперь скрипт отдается всегда, получается и не в сервере проблема, а именно в движке который почему-то исключает скрипт из выдачи.
Подскажите что не так делаю Создал в каталоге свойство MORE_PHOTO тип файл, множественное Загрузил доп картинки В настройках Каталогbitrix:catalog поставил Дополнительная картинка основного товара: мое поле MORE_PHOTO Добавил в Настройки детального просмотра тоже поле MORE_PHOTO (не уверен что это надо пробовал и так и так)
По итогу на странице вижу основное фото и внизу вижу мои доп. фото но клики по ни не приводят не к чему. Вопрос что нужно еще сделать что бы картинки стали подгружаться вместо основной. Подозреваю что проблема может быть в Java но вот в чем понять не могу
У меня задача вычитать из блока около 10к записей к каждой из них сделать от 1 до 8 запросов к другой базе данных и потом обновить некоторые значения в блоке. Сейчас пока отлаживаю на 200 записях при запуске из браузера они отрабатывают до 1 минуты чаще укладывается сек в 40, а из консоли 200 записей больше 10 минут крутит, получается что 2000 около часа, а 10000 это примерно 5 часов как то долговато выходит.
Да все точно так и есть, такой вызов модуля помог все заработало.
Спасибо большое. Но остался один вопрос, скорость выполнения слишком медленная то что при запуске из браузера делается за 1 минуту тут обрабатывается больше 10 минут.
Максим Дорофеев написал: код страницы оформить в функцию агента и выставить выполнять переодически
Спасибо за ответ. Попробовал сделать но пока не особо получилось подскажите где накосячил
Сделал следующее: 1. Убрал из кода страницы все выводы чего бы то не было на экран, осталась только работа с модулем CIBlockElement и логирование действий в файл на диске 2. Добавил
Код
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); if (CModule::IncludeModule("CIBlockElement"))
{ мой код }
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
после чего попытался выполнить эту страницу сначала обратившись к ней браузером, потом из командной строки через
php -f my.php
В обоих случаях страница не выводит никаких ошибок но и ничего не делает, даже не обнуляет файл в который должен писаться лог. Вызов же из командной строки изначального файла предназначенного для браузера нормально работает за тем исключением что делает это медленнее 200 записей обрабатывается 9 минут тогда как в в браузере это занимает сек 25, ну и конечно выводит в консоль кучу ненужного мусора.
Здравствуйте прошу совета Нужно обновлять данные внутри инфоблоков. Есть код который успешно это делает при заходе на страницу браузером. Но в связи с тем что операцию обновления нужно проводить регулярно есть очень большое желание повесить выполнение скрипта в планировщик, и тут собственно вопрос. Как правильно к консольному скрипту подключить модули битрикса что бы нормально работало API интересуют функции из модуля CIBlockElement, а именно CIBlockElement::GetList CIBlockElement::SetPropertyValuesEx
Или может не стоит заморачиватся, а просто взять php который нормально выполняет в браузере и запустить его из консоли командой типа
Если массив PROPERTY_VALUES задан, то он должен содержать полный набор значений свойств для данного элемента, т.е. если в нем будет отсутствовать одно из свойств, то все его значения для данного элемента будут удалены.
Нет импорт не устраивает в частности потому что цена меняется от курса и от поставщика потому хотелось бы максимально автоматизировать так как перезаливка цен возможно будет несколько раз в сутки и она не должна зависить от того что кто то забыл что то сделать
Здравствуйте подскажите каким путем пойти или направьте на истинный
Есть сайт где сделал каталог товаров на инфоблоках при первичной заливкти товара ему ставиться цена.
И есть другой сервер где в стороннем ПО идет работа собственно с самой базой товара, нужно сделать синхронизацию цен из базы в битрикс что бы правильно отображалась цена и работа корзина.
Хочется сделать все скриптом который будет вызываться по графику и делать update записям в базе битрикса данными из основной базы.
Но пока что не могу найти структуры базы если кто то может поделитесь описание к базе в частности структурой хранения инфоблоков.
И еще сильно смущает что выезде есть упоминания о том что разрабы вообще такое делать очень не рекомендуют ибо может все упасть при обновлении битрикса.
На фоне этого родилась вторая идея
Поправить шаблон инфоблока что бы при показе пользователю проверялась дата последнего изменения данных и если она выходит за указанный диапазон запускался скрипт который тянул из основной базы данные по конкретному товару и обновлял элемент каталога битрикса новой ценой, а пользователю в это время выводить какую-то крутилку с надписью идет уточнение цены.
И тут вопрос реально ли такое сделать и есть ли вообще программный способ поменять значения в полях конкретного товара и записать их в базу?
Спасибо за ответы Я правильно понимаю что этот обработчик выполняется еще до формирования страницы о успешной регистрации пользователя ? Потому что без die я не вижу вывода, а с ним вывод есть но страница до конца не догружается.
в bitrix/php_interface/init.php
<?
AddEventHandler("main", "OnAfterUserRegister", Array("ClassAfterRegister", "OnAfterUserRegisterHandler"));
class ClassAfterRegister
{
function OnAfterUserRegisterHandler($arUser)
{
... Здесь код выполняемый после регистрации
}
}
?>
Написал вот так чисто для проверки
Код
bitrix/php_interface/init.php
<?
AddEventHandler("main", "OnAfterUserRegister", Array("ClassAfterRegister", "OnAfterUserRegisterHandler"));
class ClassAfterRegister
{
function OnAfterUserRegisterHandler($arUser)
{
... if($arUser["USER_ID"]>0)
{echo("reg</br>");}
else
{echo("unreg</br>");}
}
}
?>
И получил странную работу, пока регистрация не завершена по какой-то ошибке (не верные данные или такой пользователь уже есть) вижу на странице текст unreg как только регистрация завершена и пользователь залогинился в сайт на экране сообщение что регистрация была успешна и ему отправлено письмо но моего текста нет, думал что просто не видно смотрел исходный текст полученный от сервера нет моего текста и все. Что я не так сделал?
Мне нужно что бы мой код выполнялся только если пользователь смог успешно войти на сайт после регистрации грубо говоря на той самом странице где написано что его поздравляют с регистрацией и говорят что выслали ему письмо.
Здравствуйте подскажите куда надо писать свой код что бы он выполнялся только после того как пользователь успешно зарегистрировался и смог зайти в сайт? И где можно при этом прочитать данные его профиля (имя, фамилия, e-mail и т.д.)?
Здравствуйте подскажите что делаю не так Задача после того как пользователь УСПЕШНО зарегистрировался и его пустило в сайт мне нужно выполнить свой код. Почитал форумы сделалy на пробу вот такой вариант
Понимаю что AddEventHandler многовато но пробовал что бы хоть один сработал но увы. Если регистрация не прошла по любой причине неверная капча, не правильные значения или не заполненные поля то уроде как все работает и мне выдает unreg хотя смотрел var_dump $arFields там вообще нет поля USER_ID но то отдельная песня. Главное что если регистрация прошла успешно и пользователь залогинился то вообще нет никакого сообщения как будто эта функция вообще не выполняется.
Подскажите где я не прав и в какую сторону капать?
О оказалось таки не все получилось есть еще одна проблемка После включения расширенных прав пропало верхнее меню магазина и больше не появляется Вот так выглядит при залогиненном админе
может еще где то надо включить расширенный режим? Кроме галки в самом инфоблоке потому что в создании иили редактировании раздела у меня внизу висит надпись
"Управлять настройками информационных блоков вы можете в разделе Информационные блоки - Типы информационных блоков. "
А можно не много по подробнее. Вот только что для теста поставил дему интеренет магазин там по структуре есть один инфоблок Там можнопоставить галку расширенные права можно добавить пользователя или группу но не могу понять где задать права для пользователя на не весь каталог, а только на его отдельные папки?
Установить разным пользователям разные права на группы товара в каталоге что бы один пользователь мог создавать, править, удалять товары только в таких-то группах, но не мог создовать в других. То что такое сделать можно я понимаю но пока что как варинат вижу только измененние структуры БД и правка кода модуля каталога но помоему это повлечет потерю возможности ставить офф. обновленния. Может быть есть другой вариант пните пожалуйста в строну где стоит поискать почитать? Заранее спасибо
Помогите есть раздел на сайте для него программно (выборка из базы) формируется левое меню через файл .left.menu_ext.php Сейчас это просто линейное меню выводится только первый уровень, но хотелось бы из него получить древовидное меню только для этого раздела. Подскажите как это лучше сделать? Читал документацию, читал форум но так и не понял полностью механизм: 1. Насколько я понял в шаблоне при подключении меню нужно исправить "MAX_LEVEL" => "1" на "MAX_LEVEL" => "3" если я хочу получить два уровня внутри главного но остается вопрос как это отразится на остальных разделах и на верхнем меню где мне не нужно вложенности 2. Смотрел пример создания файла :
Но там нигде не сказано как указать подпункты для меню как сделать связь между корнем и ветвями. Если можно поделитесь примером, пояснениями или скажите где это все описано что бы можно было почитать? Заранее спасибо.
Подскажите как решить проблемму На сайте (в шапке) разсметил картинку которая является ссылкой для входа в чат картинка должна меняться в зависимости от того есть в on-line оператор или нет. Но как я понял картинка попала к кеш и теперь вне зависимости от состояния оператора она всегда одна и таже. Можно ли как то заставить сайт не кашировать 1 конктретную кортинку на страничке?