первое и основное ajax должен всегда быть не навязчевым. а теперь как это реализовать
И такой footer,php
в папке /bitrix/templates/AJAX_HTML/sub_themes создаем подтемы с оформлением окон и не забываем указывать темы в через метод set_list_theme (сами темы состоят из header.php и footer.php)
данную тему настраиваем в настройках сайта и указываем что она должна применяться при наличии параметра ajax=Y в url
в футере основной темы создаем базовую парковочную зону (хотя не обязательно так как вы сами будете определять куда загружать контент)
в header основной темы вставляем следующий jquery скрипт
создадим пустую тему в битрекс у меня вот здесь
/bitrix/templates/AJAX_HTML
в данной теме создадим папку sub_themes (/bitrix/templates/AJAX_HTML/sub_themes)
делаем следующий header.php
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
IncludeTemplateLangFile(__FILE__);
/**
* благодоря данному подходу можно создавать не только пустой шаблон но и обертывать код например наример различным кодом окон
* Class get_sub_themes_singleton
*/
class get_sub_themes_singleton {
protected static $instance; // object instance
private $list_theme;
private $sub_theme;
private $dir_sub_theme;
private $params;
private function __construct(){}
private function __clone(){}
private function __wakeup(){}
public static function getInstance() {
if (is_null(self::$instance)) {
self::$instance = new get_sub_themes_singleton;
}
return self::$instance;
}
public function set_sub_theme($sub_theme){
//поставить при повышенных требованиях к безопасности
if (!empty($this->list_theme) && !empty($this->list_theme[$sub_theme])){
$this->sub_theme = $this->list_theme[$sub_theme];
}
return self::$instance;
}
public function set_dir_sub_theme($dir_sub_theme){
if (is_dir($dir_sub_theme)){
$this->dir_sub_theme = $dir_sub_theme;
}else{
die("not found sub themes");
}
return self::$instance;
}
public function set_list_theme($list_theme){
$this->list_theme = $list_theme;
return self::$instance;
}
public function get_header(){
//include("");
//echo $this->sub_theme;
if (file_exists($this->dir_sub_theme.$this->sub_theme."/header.php")){
include_once($this->dir_sub_theme.$this->sub_theme."/header.php");
}
}
public function get_footer(){
if (file_exists($this->dir_sub_theme.$this->sub_theme."/footer.php")){
include($this->dir_sub_theme.$this->sub_theme."/footer.php");
}
}
public function set_params($key, $value){
$this->params[$key]=$value;
return self::$instance;
}
public function get_params($key){
return $this->params[$key];
}
public function theme_exists($theme){
if (!empty($this->list_theme[$theme])){
return true;
}else{
return false;
}
}
}
///////////////////////////////////////////////////////////////////////////
get_sub_themes_singleton::getInstance()
->set_dir_sub_theme(dirname(__FILE__)."/sub_themes/")
->set_list_theme(array(
"full_html" =>"full_html",
"work_arena" =>"work_arena",
"simple_windows"=>"simple_windows",
))->set_sub_theme("full_html");
//подключаем тему из url
//хотя можно поставить и в куках
if (!empty($_REQUEST['theme']) && get_sub_themes_singleton::getInstance()->theme_exists($_REQUEST['theme'])){
get_sub_themes_singleton::getInstance()->set_sub_theme($_REQUEST['theme']);
}
get_sub_themes_singleton::getInstance()->get_header();
И такой footer,php
get_sub_themes_singleton::getInstance()->get_footer();
в папке /bitrix/templates/AJAX_HTML/sub_themes создаем подтемы с оформлением окон и не забываем указывать темы в через метод set_list_theme (сами темы состоят из header.php и footer.php)
данную тему настраиваем в настройках сайта и указываем что она должна применяться при наличии параметра ajax=Y в url
в футере основной темы создаем базовую парковочную зону (хотя не обязательно так как вы сами будете определять куда загружать контент)
<div class="parking_zone"
closeajax=".parking_zone"
closebind="click"
>
</div>
</body>
в header основной темы вставляем следующий jquery скрипт
<script type="text/javascript">
/**
* превращаем обычные ссылки в ajax
*/
$(function(){
$(".ajax_link").live("click",function(){
var parking_zone=$(this).attr("parking_zone");
var close_element_control=$(parking_zone).attr("closeajax");
var action_close=$(parking_zone).attr("closebind");
$(close_element_control).bind(action_close, function(){
$(parking_zone).hide();
});
$(parking_zone).load($(".ajax_link").attr("ajaxhref"), function() {
$(parking_zone).show();//настройка анимации окон
});
return false;
});
});
</script>
и на конец создаем обработчик например на странице
<span class="region-select-a">
<a id = "testid"
class="ajax_link"
href="/vibor_regiona/"
ajaxhref="/vibor_regiona/?ajax=Y&theme=simple_windows&<?=(empty($_REQUEST['параметр'])?"":'region_geo_location='.$_REQUEST['параметр']);?>"
parking_zone=".parking_zone"
>blabla</a></span>
вот вроде все
Комментариев нет:
Отправить комментарий