Как вызвать функции php из javascript bitrix
Перейти к содержимому

Как вызвать функции php из javascript bitrix

  • автор:

Вызов функции javascript в компоненте 1С Битрикс

Здравствуйте, форумчане!
Прошу вас о небольшой помощи.
Необходимо для детального вывода новости сделать автоматическую обработку текстовой информации. Поясню, зачем: в новости могут содержаться специальные ссылки в виде текста, есть скрипт со стороннего сайта, который может сделать ссылки, размещенные в тексте, «живыми».

Я правильно понимаю, что мне необходимо отредактировать шаблон детального вывода новости?
Шаблон я нашел, ссылку на скрипт вставил, но так как не силен в Битриксе, то не знаю, как вызвать функцию для обработки текста, и в какой момент это делать.
Ниже приведу код шаблона:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>  
$image_size = array('width' => 300, 'height' => 300); $resized_image = CFile::ResizeImageGet( $arResult["DETAIL_PICTURE"], $image_size, BX_RESIZE_IMAGE_PROPORTIONAL, true ); ?> if($arParams["DISPLAY_DATE"]!="N" && $arResult["DISPLAY_ACTIVE_FROM"]):?> $arResult["DISPLAY_ACTIVE_FROM"]?> endif;?> if($arParams["DISPLAY_PICTURE"]!="N" && is_array($arResult["DETAIL_PICTURE"])):?> ] ?>" alt=" $arItem["NAME"] ?>" width=" $resized_image['width'] ?>" height=" $resized_image['height'] ?>"/> endif?> if($arParams["DISPLAY_NAME"]!="N" && $arResult["NAME"]):?>

$arResult["NAME"]?>

endif;?> if($arParams["DISPLAY_PREVIEW_TEXT"]!="N" && $arResult["PREVIEW_TEXT"]):?>

$arResult["PREVIEW_TEXT"];unset($arResult["FIELDS"]["PREVIEW_TEXT"]);?>

endif;?> if($arResult["NAV_RESULT"]):?> if($arParams["DISPLAY_TOP_PAGER"]):?>$arResult["NAV_STRING"]?>
endif;?> echo $arResult["NAV_TEXT"];?> if($arParams["DISPLAY_BOTTOM_PAGER"]):?>
$arResult["NAV_STRING"]?>endif;?> elseif(strlen($arResult["DETAIL_TEXT"])>0):?> echo $arResult["DETAIL_TEXT"];?> else:?> echo $arResult["PREVIEW_TEXT"];?> endif?>
foreach($arResult["FIELDS"] as $code=>$value):?> GetMessage("IBLOCK_FIELD_".$code)?>$value;?>
endforeach;?> if(count($arResult["MORE_PHOTO"])>0):?> foreach($arResult["MORE_PHOTO"] as $PHOTO):?> $moreImg_size = array('width' => 200, 'height' => 200); $resized_moreImg = CFile::ResizeImageGet( $PHOTO["ID"], $moreImg_size, BX_RESIZE_IMAGE_PROPORTIONAL, true ); ?> $PHOTO["SRC"]?>" rel="more_img_group"> ] ?>" alt="$arResult["NAME"]?>" width=" $resized_moreImg['width'] ?>" height=" $resized_moreImg['height'] ?>"/> endforeach;?> endif?> if(array_key_exists("USE_SHARE", $arParams) && $arParams["USE_SHARE"] == "Y") { ?> } ?>

Добавлено через 7 минут
Вторая строка кода — подключаемый скрипт

Добавлено через 4 минуты
После подключения скрипта нужно вызвать функцию bible_proc() и в качестве параметра передать обрабатываемый текст.
Создатели скрипта в качестве примера показывают такую вставку

1 2 3 4 5 6
  script type="text/javascript"> $(document).ready(function(){ document.body.innerHTML = bible_proc(document.body.innerHTML); }); script>

вызов функции из php-файла с помощью ajax при загрузке страницы

есть файлы file1.php и file2.php. как при загрузке первого файла передать ajax-ом значение переменной второму файлу и в теле первого файла разместить результат исполнения второго файла?

     

"ASC"), array("IBLOCK_ID" => $arResult["ID"], "SECTION_ID" => $arParams["PARENT_SECTION"], "ID" => $arItem["ID"]), array("ID", "IBLOCK_ID", "NAME", "PROPERTY_FILE_PATH") ); while ($value = $obj->GetNext()) < $props[] = $value; >if (strlen($props[0]["PROPERTY_FILE_PATH_VALUE"]) > 0) < $APPLICATION->IncludeComponent("bitrix:player","",Array( "PLAYER_TYPE" => "auto", "USE_PLAYLIST" => "Y", "PATH" => $props[0]["PROPERTY_FILE_PATH_VALUE"], "PLAYLIST_DIALOG" => "", "PROVIDER" => "video", "STREAMER" => "", "WIDTH" => "640", "HEIGHT" => "360", "PREVIEW" => "", "SKIN_PATH" => "/bitrix/components/bitrix/player/mediaplayer/skins", "SKIN" => "bitrix.swf", "CONTROLBAR" => "bottom", "WMODE" => "transparent", "LOGO" => "/logo.png", "LOGO_LINK" => "http://ваш_сайт.com/", "LOGO_POSITION" => "bottom-left", "ADDITIONAL_FLASHVARS" => "", "WMODE_WMV" => "window", "SHOW_CONTROLS" => "Y", "AUTOSTART" => "N", "REPEAT" => "list", "VOLUME" => "90", "MUTE" => "N", ) ); > ?>

')" rel="nofollow">

">
"> " alt="" /> ?>

это код всей страницы. в отдельный файл нужно вынести вот этот участок

IncludeComponent("bitrix:player","",Array( "PLAYER_TYPE" => "auto", "USE_PLAYLIST" => "Y", "PATH" => $props[0]["PROPERTY_FILE_PATH_VALUE"], "PLAYLIST_DIALOG" => "", "PROVIDER" => "video", "STREAMER" => "", "WIDTH" => "640", "HEIGHT" => "360", "PREVIEW" => "", "SKIN_PATH" => "/bitrix/components/bitrix/player/mediaplayer/skins", "SKIN" => "bitrix.swf", "CONTROLBAR" => "bottom", "WMODE" => "transparent", "LOGO" => "/logo.png", "LOGO_LINK" => "http://ваш_сайт.com/", "LOGO_POSITION" => "bottom-left", "ADDITIONAL_FLASHVARS" => "", "WMODE_WMV" => "window", "SHOW_CONTROLS" => "Y", "AUTOSTART" => "N", "REPEAT" => "list", "VOLUME" => "90", "MUTE" => "N", ) ); > ?> 

и в элемент массива с ключом «PATH» нужно передать значение из $props[0][«PROPERTY_FILE_PATH_VALUE»]

Re: [JavaScript] Вызвать функцию через переменную

Уже нашёл. Всем, кому интересно — надо вызывать через eval(func).

anonymous
( 10.06.08 00:54:54 MSD )
Ответ на: Re: [JavaScript] Вызвать функцию через переменную от anonymous 10.06.08 00:54:54 MSD

Re: [JavaScript] Вызвать функцию через переменную

лучше window[func]() eval’ом нужно пользоваться только в тех случаях, когда без него действительно некуда

anonymous
( 10.06.08 01:51:02 MSD )
Ответ на: Re: [JavaScript] Вызвать функцию через переменную от anonymous 10.06.08 01:51:02 MSD

Re: [JavaScript] Вызвать функцию через переменную

anonymous
( 10.06.08 01:52:35 MSD )

Re: [JavaScript] Вызвать функцию через переменную

var func = my_func;

anonymous
( 10.06.08 01:55:53 MSD )
Ответ на: Re: [JavaScript] Вызвать функцию через переменную от anonymous 10.06.08 01:55:53 MSD

Re: [JavaScript] Вызвать функцию через переменную

anonymous
( 10.06.08 02:41:56 MSD )
Ответ на: Re: [JavaScript] Вызвать функцию через переменную от anonymous 10.06.08 02:41:56 MSD

Re: [JavaScript] Вызвать функцию через переменную

Потому что, если уж надо присваивать переменной, то наверное переменная будет «меняться»

var func= my_func;

ну и да.. перед переменной желательно писать var, за глобалы нужно сразу увольнять 🙂

anonymous
( 10.06.08 03:29:59 MSD )

Re: [JavaScript] Вызвать функцию через переменную

eval — как то по детски что ли.. тяжкое наследие пхп?

я бы сделал вот так (для примера даю две функции, чтоб понятно было: a() и b(), до варианта с одной думаю запросто упростишь сам):

function a() <
alert( ‘function a called’ );
>

function b() <
alert( ‘function b called’ );
>

func(); //покажет «function a called»

func(); //покажет «function b called»

function call_my_param( param_to_call ) <
param_to_call();
>

call_my_param( func ); // покажет «function b called»

Как вызвать функцию класса php из onclick?

Из которого надо вызвать по нажатию соответствующей кнопки соответствующую php функцию.
Собственно вопрос, как это правильно сделать?

  • Вопрос задан более двух лет назад
  • 377 просмотров

Комментировать
Решения вопроса 1

ipatiev

Ипатьев @ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых

Никак.
Функцию РНР «из onclick» вызвать нельзя
Можно вызвать РНР скрипт только целиком, передав ему данные. обычным аяксом
А уже в РНР можно написать условие, которое, в зависимости от переданных аяксом данных, создаст экземпляр класса и выполнит тот или иной метод.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *