muzz-as Posted November 29, 2013 Share Posted November 29, 2013 День добрый. В ПрестаШопе легко в глобал сделать цвет подложки в шапке сайта или же поместить любое изображение туда. Но как сделать, чтобы это изображение менялось при переходе на разные страницы сайта, т.е. рандомно? Если размещать слайд-шоу, то картинки меняются в течении просмотра страницы (автоматически), а нужно чтобы они менялись именно при переходе с одной страницы на другую. Буду благодарен за любые советы, т.к. найденные решения на css и jquery меняют картинки только автоматом. Link to comment Share on other sites More sharing options...
Kerm Posted November 29, 2013 Share Posted November 29, 2013 Вывести через пхп используя shuffle http://php.net/manual/ru/function.shuffle.php Link to comment Share on other sites More sharing options...
muzz-as Posted November 30, 2013 Author Share Posted November 30, 2013 Вывести через пхп используя shuffle http://php.net/manual/ru/function.shuffle.php Да, спасибо посмотрю. Но вот нашёл ещё такое, кому интересно будет (через яву): function changeBG() { var first = 1; // Первая картинка var last = 7; // Последняя картинка var path = 'img/'; // Путь к каталогу с картинками var img_src='url("'+path+getRandomInt(first,last)+'.jpg")'; var div = document.getElementById("main"); div.style.backgroundImage=img_src; } function getRandomInt(min, max)...... В моём случае этот код лучше запихнуть в Header.tpl и обернуть в нужный div. Kerm есть ли в данном случае превосходство одного способа над другим? Или, как говорят некоторые люди: "Абсолютно монописуально"? Link to comment Share on other sites More sharing options...
muzz-as Posted November 30, 2013 Author Share Posted November 30, 2013 Вывести через пхп используя shuffle http://php.net/manual/ru/function.shuffle.php И ещё из этой статьи есть такой код: <?php function seoShuffle(&$items,$string) { mt_srand(strlen($string)); for ($i = count($items) - 1; $i > 0; $i--){ $j = @mt_rand(0, $i); $tmp = $items[$i]; $items[$i] = $items[$j]; $items[$j] = $tmp; } } $items = array('one','two','three','four','five','six'); $string = 'whatever'; echo '<pre>'; print_r($items); echo '</pre>'; seoShuffle($items,$string); echo '<pre>'; print_r($items); echo '</pre>'; ?> Перемешивает сео эллементы при каждом обновлении странички. Пробывали ли Вы и насколько это может быть полезно? И лучше ли этот способ по сравнению с ручным прописыванием ключевых слов и мета описания через админ-панель престы? Link to comment Share on other sites More sharing options...
Kerm Posted November 30, 2013 Share Posted November 30, 2013 (edited) Решение через php будет несомненно более удачным т.к. не создается не какой нагрузки на компьютер клиента и будут работать в том случае если возникнут какие либо проблемы с javascript на сайте. Вот примерная схема Сначала все необходимые картинки надо представить массивом в нутри переменной, после через shuffle перемешивать это значения, после вывести переменную в шаблон. print_r($image); // возвращает у нас: array( [0] => ссылка на картинки относительно корня сайта, [1]=> ссылка на картинки относительно корня сайта, [2] => ссылка на картинки относительно корня сайта, ) 'bg_image' => $image[0], // берем всегда только самую первую картинку из масива В шаблоне: <body style="background: url('{bg_image}') left top no-repeat">..... Edited November 30, 2013 by Kerm (see edit history) 1 Link to comment Share on other sites More sharing options...
muzz-as Posted December 2, 2013 Author Share Posted December 2, 2013 Решение через php будет несомненно более удачным т.к. не создается не какой нагрузки на компьютер клиента и будут работать в том случае если возникнут какие либо проблемы с javascript на сайте. Вот примерная схема Сначала все необходимые картинки надо представить массивом в нутри переменной, после через shuffle перемешивать это значения, после вывести переменную в шаблон. print_r($image); // возвращает у нас: array( [0] => ссылка на картинки относительно корня сайта, [1]=> ссылка на картинки относительно корня сайта, [2] => ссылка на картинки относительно корня сайта, ) 'bg_image' => $image[0], // берем всегда только самую первую картинку из масива В шаблоне: <body style="background: url('{bg_image}') left top no-repeat">..... вдруг пригодится кому, тоже на пхп: <?php $rand = rand(1, 5); $cvet = array ( "1" => "/templates/lite/images/fon-1.png", "2" => "/templates/lite/images/fon-2.png", "3" => "/templates/lite/images/fon-3.png", "4" => "/templates/lite/images/fon-4.png", "5" => "/templates/lite/images/fon-5.png" ); foreach ($cvet as $nomer => $img) { if ($nomer == $rand){ $src=$img;}; } ?> <body style="background:url('<? echo $src;?>') #ffffff no-repeat top center;" > последнюю строчку можно в css, можно в tpl оформлять. Этот вариант работает, сам не проверял, но два независимых человека сказали, что на их сайтах стоит ровно. У меня так и не заработал нормально. Поэтому стоит аналог этого, но на яве. Link to comment Share on other sites More sharing options...
Kerm Posted December 2, 2013 Share Posted December 2, 2013 Приведенный пример не правильный и не подходит к престашопу Link to comment Share on other sites More sharing options...
Kerm Posted December 2, 2013 Share Posted December 2, 2013 (edited) В classes находим файл FrontController и в нем ищем: self::$smarty->display(_PS_THEME_DIR_.'header.tpl'); //Мы же хотим в header.tpl вставить смену картинки? //Выше этого перед всеми "self::$smarty->assign" которые идут рядом с этой строчкой вставляем: $my_array = array( 1 => "/templates/lite/images/fon-1.png", 2 => "/templates/lite/images/fon-1.png", 3 => "/templates/lite/images/fon-1.png", 4 => "/templates/lite/images/fon-1.png", 5 => "/templates/lite/images/fon-1.png", 6 => "/templates/lite/images/fon-1.png", ); shuffle($my_array) //Далее перед "self::$smarty->display(_PS_THEME_DIR_.'header.tpl');" добавляем: self::$smarty->assign('bg_image', $my_array[0]); //Сохраняем и в файле темы header.tpl добавляем: <body style="background-image: url('{$bg_image}');">.... //Сохраняем, заливаем, чистим кеш и тестируем, в теории картинка должна меняться при каждой перезагрузке страницы) Edited December 2, 2013 by Kerm (see edit history) 1 Link to comment Share on other sites More sharing options...
Recommended Posts