Форум программистов, компьютерный форум, киберфорум
1С Битрикс
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
2 / 2 / 0
Регистрация: 29.01.2020
Сообщений: 40

Определить тип запроса

25.02.2020, 14:31. Показов 2844. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет !

Нужно определить кто в момент клика по новости обращается к битриксу (например: если переходить с сайта или переходить из поисковика), при получении запроса.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2020, 14:31
Ответы с готовыми решениями:

Определить тип запроса
Доброе утро кодерам! Подскажите, как узнать тип запроса, урл которого достаем из request переменной: function onRequest(request,...

Как определить тип запроса в node.js?
Всем привет, я пытаюсь создать бота callback API для вк сообщества на node.js. Мне нужно с помощь case-switch определить тип запроса, почти...

Как определить тип запроса в node.js?
Всем привет, я пытаюсь создать бота callback API для вк сообщества на node.js. Мне нужно с помощь case-switch определить тип запроса, почти...

8
72 / 61 / 24
Регистрация: 20.09.2016
Сообщений: 559
25.02.2020, 14:59
это называется яндекс вебмастер), ну или как вариант
PHP
1
$_SERVER['HTTP_REFERER']
но его скрыть, подделать, удалить не проблема

Добавлено через 36 секунд
в яндексвебмастере просто настраиваешь свою цель клики на новости и спокойно собираешь статистику
1
2 / 2 / 0
Регистрация: 29.01.2020
Сообщений: 40
25.02.2020, 15:08  [ТС]
Цитата Сообщение от Dias606 Посмотреть сообщение
это называется яндекс вебмастер), ну или как вариант
Ненене, это не совсем то, мне нужно что то типа:

PHP
1
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
или
PHP
1
$flag = $request->isAjaxRequest();      // true - AJAX-запрос, иначе false
Только я не пойму где этот код должен находиться.

PS: задача звучит так:

Кликните здесь для просмотра всего текста
На главной есть новости, при клике на них открывается попап с новостью. Его оставляем как есть пока что.
Но в месте с тем у каждой новости есть своя ссылка https://zemtrad.ru/news/v-poselke--pet...po-usta...
Нужно сделать что бы эта страница при запросе через аякс была такой как есть сейчас
А при переходе просто из браузера сделать полноценную страницу


Тоесть, если кликаешь на новость на сайте - появляется попап с новостью, если переходишь из стороннего рессурса то нужна детальная страница новости. Я представляю это так: поставить условие которое, проверяло бы тип запроса и в нем уже выводить нужные шаблоны
0
3055 / 1455 / 264
Регистрация: 16.03.2008
Сообщений: 6,490
Записей в блоге: 2
25.02.2020, 16:05
Ну так, а в чем проблема?
Вы работаете с компонентами новостей. (комплексный, список и деталька) Т.е. Вы должны определить является ли запрос аяксовым до момента кеширования и сделать так, чтобы ИД кеша зависел от этого. Таким образом, до подключения bitrix:news (если используется комплексный компонент), или до подключения компонента детальки. Определяете тип запроса.

Далее зависит от разницы в дизайне и деталей проекта. Если нужен весь компонент, то окружаете его нижеследующим кодом, если часть шаблона компонента тоже надо выкидывать, то дабавляете в параметры свой параметр, например: IS_AJAX и обрабатывате его уже внутри ИД кеша компонента, в общем случае, зависит от параметров, таким образом у вас кеш не будет смешиваться если есть разница внутри. Ну а делее
PHP
1
2
3
4
5
6
7
if ($isAjax) {
   $APPLICATION->RestartBuffer();
}
// здесь все то что будет возвращаться при аякс запросе
if ($isAjax) {
   die();
}
0
2 / 2 / 0
Регистрация: 29.01.2020
Сообщений: 40
25.02.2020, 16:22  [ТС]
Цитата Сообщение от voral Посмотреть сообщение
Ну так, а в чем проблема?
Не совсем пойму как это все работает. Правильно я Вас понял, должно быть что то вроде:

PHP
1
2
3
4
5
6
7
8
9
10
11
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    if ($isAjax) {
       $APPLICATION->RestartBuffer();
    }
    // вызов моего news.list
    if ($isAjax) {
       die();
    }
} else {
    // тут я думаю вызвать news.detail с шаблоном детальной страницы
}
0
3055 / 1455 / 264
Регистрация: 16.03.2008
Сообщений: 6,490
Записей в блоге: 2
25.02.2020, 17:25
Лучший ответ Сообщение было отмечено count_Zer0 как решение

Решение

Нет
PHP
1
2
3
4
5
6
7
8
9
10
11
$isAjax = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) 
             && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
    if ($isAjax) {
//весь html выведенный до этой строки удалятся из буфера вывода если это аякс
       $APPLICATION->RestartBuffer();
    }
    // вызов моего news.list  или news.detail или news... этот html выводится в обоих случаях
    if ($isAjax) {
       die();
//после этой строки ни чего не выводится в случае аякса
    }
1
2 / 2 / 0
Регистрация: 29.01.2020
Сообщений: 40
25.02.2020, 22:11  [ТС]
Я извиняюсь за глупые вопросы, но хочу разобраться:

PHP
1
2
3
4
5
6
7
8
9
10
$isAjax = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) 
             && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
    if ($isAjax) {
 
       $APPLICATION->RestartBuffer();
    }
    // тут вызывается news.detail который будет выводиться при аякс запросе, тоесть попапом ?
    if ($isAjax) {
       die();
    }
По идее мне еще нужно вызвать компонент news.detail, который в свою очередь будет уже выводить полноценную детальную страницу ? Если так, то где я должен это сделать ?
0
3055 / 1455 / 264
Регистрация: 16.03.2008
Сообщений: 6,490
Записей в блоге: 2
26.02.2020, 08:33
Вам текст в 7ой строке моего варианта не достаточно точно намекает?

HTML который формируется на этом месте выводится в обоих случаях. все остальное (за пределами этих условий: до 1ой строки и после 11ой выводится только при обычном запросе. Или вам нужен другой шаблон? Тогда у вас есть уже принак аякса - выбирайте шаблон по условию
0
2 / 2 / 0
Регистрация: 29.01.2020
Сообщений: 40
26.02.2020, 09:47  [ТС]
Большое спасибо за ответы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.02.2020, 09:47
Помогаю со студенческими работами здесь

Как определить тип запроса в node.js?
Всем привет, я пытаюсь создать бота callback API для вк сообщества на node.js. Мне нужно с помощь case-switch определить тип запроса, почти...

Определить тип микропроцессора, тип ЭВМ и исправен ли аккумулятор на материнке
Можно ли это сделать в С# ? Если да то как, если нет, то можно ли в С\С++ ?

Как определить тип переменной, ссылающейся на определённый класс? Нужен именно тип, а не ссылка на обьект!
interface HowDefineMyType { void info(); } class A implements HowDefineMyType { public int x;

Создать классы, спецификации которых приведены ниже. Определить конструктор и методы get Тип(), get Тип(), show Информ()
Реализовать класс в консольном приложении. Определить дополнительно методы в классе, создающем массив объектов. Задать критерий выбора...

почему $_FILES не всегда определяет тип файла? каким образом можно определить тип в 100% случаях?
почему $_FILES не всегда определяет тип файла? каким образом можно определить тип в 100% случаях?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru