[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: php+bitrix+js
eaborodkin
Господа, всем доброго дня, на форуме новичок, побоялся публиковать тему в "php для профи", потому пощу сюда.
Поставили задачу: для информационных мониторов сделать страницу на которой через указанный для каждого элемента промежуток времени(отдельное свойство) будут перелистываться элементы инфоблока.
Сделал страничку index.php

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Title");
?>

<
script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>

<
div id="include"></div>
<
script type="text/javascript">
function contentUpdate(n)
{
$("#include").load(
"content.php",
{
number: n
}
);
}
var i=0;
contentUpdate(i);
setInterval('contentUpdate(++i);', 5000);
</
script>

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

на которой с помощью метода ajax библиотеки jquery происходит подгрузка странички content.php

<?
require($_SERVER["DOCUMENT_ROOT"]. "/bitrix/modules/main/include/prolog_before.php");
$APPLICATION->SetTitle("Title");
?>
<?
if (CModule::IncludeModule("iblock")):?>
<?

$res = CIBlockElement::GetList(array("active_from"=>"ASC"),array("IBLOCK_ID"=>589, "ACTIVE"=>"Y"), Array("ID","time_m","time_s"));
$i=0;
while($id = $res->GetNextElement())
{
$id=$id->GetFields();
$ar_ids[$i]=$id['ID'];
$ar_time_m[$i]=$id['time_m'];
$ar_time_s[$i]=$id['time_s'];
$i++;
}
$id = ($_REQUEST['number']+count($ar_ids))%count($ar_ids);
?>
<p> <?$APPLICATION->IncludeComponent(
"bitrix:news.detail",
".default",
Array(
"DISPLAY_DATE" => "N",
"DISPLAY_NAME" => "N",
"DISPLAY_PICTURE" => "Y",
"DISPLAY_PREVIEW_TEXT" => "N",
"USE_SHARE" => "N",
"AJAX_MODE" => "N",
"IBLOCK_TYPE" => "news",
"IBLOCK_ID" => "589",
"ELEMENT_ID" => $ar_ids[$id],
"ELEMENT_CODE" => "",
"CHECK_DATES" => "Y",
"FIELD_CODE" => array(),
"PROPERTY_CODE" => array(),
"IBLOCK_URL" => "",
"META_KEYWORDS" => "-",
"META_DESCRIPTION" => "-",
"BROWSER_TITLE" => "-",
"SET_TITLE" => "Y",
"SET_STATUS_404" => "Y",
"INCLUDE_IBLOCK_INTO_CHAIN" => "N",
"ADD_SECTIONS_CHAIN" => "N",
"ACTIVE_DATE_FORMAT" => "d.m.Y",
"USE_PERMISSIONS" => "N",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000000",
"CACHE_GROUPS" => "Y",
"DISPLAY_TOP_PAGER" => "N",
"DISPLAY_BOTTOM_PAGER" => "Y",
"PAGER_TITLE" => "Страница",
"PAGER_TEMPLATE" => "",
"PAGER_SHOW_ALL" => "Y",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N"
)
);
?></p>
<?endif?>
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

в блок
<div id="include"></div>

Так вот щас это всё работает, но элементы мелькают с интервалом в 5сек, а мне надо получать этот интервал из свойства time_m(минуты) и time_s(секунды) и каждый раз подставлять в код js вместо 5000.
Для этого хочу перенести код php
<?if (CModule::IncludeModule("iblock")):?>
<?

$res = CIBlockElement::GetList(array("active_from"=>"ASC"),array("IBLOCK_ID"=>589, "ACTIVE"=>"Y"), Array("ID","time_m","time_s"));
$i=0;
while($id = $res->GetNextElement())
{
$id=$id->GetFields();
$ar_ids[$i]=$id['ID'];
$ar_time_m[$i]=$id['time_m'];
$ar_time_s[$i]=$id['time_s'];
$i++;
}
$id = ($_REQUEST['number']+count($ar_ids))%count($ar_ids);
?>
<?
endif?>

из файла content.php в index.php и оставить в content только само отображение элемента.
тогда в index.php у меня сформируются массивы с нужными мне свойствами элементов, и Я смогу их вставлять вместо 5000.
Всё бы хорошо, но т.к. вся эта инфа отображается на подвешенных информационных панелях(мониторах), то если будет добавлен новый элемент в инфоблоке, он не будет динамически появляться в моих массивах, а это критично! Поэтому решаюсь засунуть вышеуказанный php код в отдельный файл, и также периодически обращаться к нему из js, тем самым синхронизируя актуальные данные. Но если Я перенесу этот код в отдельный файл, то как мне передавать переменные(массивы) обратно в js? как передать данные из js в php Я знаю, а вот обратно вернуть не умею((( Помогите помощью, мозги пухнут!!!))



Спустя 2 дня, 15 часов, 20 минут, 32 секунды (6.08.2012 - 08:15) eaborodkin написал(а):
тов. модераторы, или мож стоит перенести тему в профи?

Спустя 2 часа, 35 минут, 47 секунд (6.08.2012 - 10:50) inpost написал(а):
eaborodkin
Из пхп в js:
<?php echo '<script>
x = '
.$var.';
</script>'
; ?>

А дальше работай уже с JS переменной x.
Но зачем ты столько много всего написал и уточнил про Bitrix... все вопросы про движки лучше задавать на специализированных сайтах, к тому же битрикс платный, а значит они тех.поддержку лично осуществляют с каждым клиентом!

Спустя 1 день, 3 часа, 49 минут, 13 секунд (7.08.2012 - 14:40) eaborodkin написал(а):
Вопрос не касался непосредственно специфики битрикс. Битрикс упомянул, т.к. в коде использую его компонент.
Почитал щас чутка по этому вопросу, буду копать в сторону json.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.