Publish your project for free and start receiving offers from freelance contractors in serveral minutes after publication!

Переделать формирование html бара с js+php на полностью клиентский JavaScript

project expired


http://uchenikspb.ru/market/klavishnye/royali/ - бар сбоку переделать полностью на клиентском JavaScript (в один файл, который включал бы все, в том числе и стили), и чтобы файл полностью кэшировался на клиенте.

Сейчас логика распределена между js и серверным php. Логика - когда какую иконку выделять, какой стиль подставлять, 



Update #1 from 16 March 2016
php файл:

<?php

///////////////////////
$top_position = "50"; // 50 - по центру, чем меньше значение тем выше кнопки
$min_width = "1450";
///////////////////////


header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0", false);
header("Cache-Control: max-age=0", false);
header("Pragma: no-cache");


if(isset($_SERVER['HTTP_REFERER'])) {
$parse_refer = parse_url($_SERVER['HTTP_REFERER']);
$refer = $_SERVER['HTTP_REFERER'];
}

$curentDir = "http://".$_SERVER[HTTP_HOST]."/".substr(getcwd(),(strlen($_SERVER['DOCUMENT_ROOT'])+1))."/";
//$curentDir = "http://moydomsad.ru/wiki/";




//////////////////////////////////////////////////////////////////////
//
// Разделы
//
//////////////////////////////////////////////////////////////////////


$main_icon = "iconnavbar-cart";
$main_tooltip = "Магазин музыкальных инструментов и техники";
$main_css = "style-blue.css";

$link_array = array();
$link_array["/market/kinoteatry/"] = array("iconnavbar-hometheater2", "Магазин домашних кинотеатров","/market/kinoteatry/", "style-blue.css");
$link_array["/kbase/"] = array("iconnavbar-kbase","База знаний. Всё, что вы хотели бы знать о музыке и музыкальных инструментах.","/kbase/", "style.css");
$link_array["/kbase/courses-overview"] = array("iconnavbar-learning","Музыкальная академия. Учитесь музыке прямо из дома.",array("/kbase/courses-overview/","/kbase/course/","/kbase/lesson/"),"style.css");
$link_array["/kbase/tools/"] = array("iconnavbar-tools","On-line инструменты. Ваши помощники в мире музыки.","/kbase/tools/", "style.css");


//////////////////////////////////////////////////////////////////////







$links = "";
foreach($link_array as $link=>$icon) {
if (is_array($icon['2'])) {
foreach($icon['2'] as $vvalue) {
if (isset($parse_refer) && preg_match("|$vvalue|",$parse_refer['path'])) {
$curent_link = $link;
$css_url = $curentDir."/".$icon['3'];
}
}
} else
{
if (isset($parse_refer) && preg_match("|$icon[2]|",$parse_refer['path'])) {
$curent_link = $link;
$css_url = $curentDir."/".$icon['3'];
}
}
}
foreach($link_array as $link=>$icon) {
if ($curent_link == $link) {

$links .= "
";

setcookie("bar_$link","$refer",time()+3600*24*60);
}
else {
if (isset($_COOKIE["bar_$link"])) $links .= "
";
else $links .= "
";
}
}
if (!isset($curent_link)) {
$links = "
".$links;
setcookie("bar_main","$refer",time()+3600*24*60);
$css_url = $curentDir."/".$main_css;
} else {
if (isset($_COOKIE["bar_main"])) $links = "
".$links;
else $links = "
".$links;
}
$html = '


';
?>
var jQ = false;
function initJQ() {
if (typeof(jQuery) == 'undefined') {
if (!jQ) {
jQ = true;
document.write('' + 'ipt>');
}
setTimeout('initJQ()', 50);
} else {
document.write('' + 'ipt>');
jQuery(function () {
jQuery('[data-toggle="tooltip2"]').tooltip();
jQuery(window).resize(function(){
if(document.body.clientWidth < <?php echo $min_width; ?>) document.body.style.marginLeft="70px";
else document.body.style.marginLeft="0px";
});

})
}
}
initJQ();
<?php
$html = trim(str_replace(array("\r", "\n"), '', $html));
echo 'if(document.body.clientWidth < '.$min_width.') document.body.style.marginLeft="70px";';
//echo "jQuery('#fnavbar').html('$html')";
//echo "document.getElementById('fnavbar').innerHTML ='$html'; ";

echo "document.write('$html'); ";
?>

Update #2 from 16 March 2016
$links = "";
foreach($link_array as $link=>$icon) {
if (is_array($icon['2'])) {
foreach($icon['2'] as $vvalue) {
if (isset($parse_refer) && preg_match("|$vvalue|",$parse_refer['path'])) {
$curent_link = $link;
$css_url = $curentDir."/".$icon['3'];
}
}
} else
{
if (isset($parse_refer) && preg_match("|$icon[2]|",$parse_refer['path'])) {
$curent_link = $link;
$css_url = $curentDir."/".$icon['3'];
}
}
}
foreach($link_array as $link=>$icon) {
if ($curent_link == $link) {

$links .= "
";

setcookie("bar_$link","$refer",time()+3600*24*60);
}
else {
if (isset($_COOKIE["bar_$link"])) $links .= "
";
else $links .= "
";
}
}
if (!isset($curent_link)) {
$links = "
".$links;
setcookie("bar_main","$refer",time()+3600*24*60);
$css_url = $curentDir."/".$main_css;
} else {
if (isset($_COOKIE["bar_main"])) $links = "
".$links;
else $links = "
".$links;
}
$html = '


';
?>
var jQ = false;
function initJQ() {
if (typeof(jQuery) == 'undefined') {
if (!jQ) {
jQ = true;
document.write('' + 'ipt>');
}
setTimeout('initJQ()', 50);
} else {
document.write('' + 'ipt>');
jQuery(function () {
jQuery('[data-toggle="tooltip2"]').tooltip();
jQuery(window).resize(function(){
if(document.body.clientWidth < <?php echo $min_width; ?>) document.body.style.marginLeft="70px";
else document.body.style.marginLeft="0px";
});

})
}
}
initJQ();
<?php
$html = trim(str_replace(array("\r", "\n"), '', $html));
echo 'if(document.body.clientWidth < '.$min_width.') document.body.style.marginLeft="70px";';
//echo "jQuery('#fnavbar').html('$html')";
//echo "document.getElementById('fnavbar').innerHTML ='$html'; ";

echo "document.write('$html'); ";
?>

Make a proposal!

The client doesn't want to make prepayment? Offer him to make a payment via Safe to avoid possible fraud.

  1.  1033 
    21   37   1

    1 day10 $

    Можно посмотреть на php?
    Скайп: myrock101
    Портфолио: http://pro-weber.ru/

    ========================================================================= Skype: myrock101

    Ukraine Cherkassy | 16 March 2016 |
  2. 1 day20 $
    Игорь Мачужак
     116  verified   2   0

    Как я понял, ваш бар это обычная навигация, которая менятеться в зависимости от страницы?
    Обращайтесь.

    Ukraine Kyiv | 16 March 2016 |
  • Здравствуйте

    Судя по постановке задачи - проблема находится далеко не в том, что этот код генерируется в php частично в php (хотя если на сайте есть толковая система кеширования, то мы можем заставить html кешироваться на клиенте...)

    Можете поставить на обозрение первичную проблему? Может мы сможем найти более элегантное решение....

  • Алексей Иванов — project author
    Complain | 16 March 2016 |

    проблема в устранении ненужного обращения к серверу (ответ для каждой странице уникален = не кэшируется)


  • Решить вопрос кешированием невозможно? Или кешированием html на стороне браузера?

  • Add

Client
Project published
16 March 2016
153 views
Payment methods
Share