Jump to content
muzz-as

Смена изображений в шапке сайта, но не слайдер.

Recommended Posts

День добрый. В ПрестаШопе легко в глобал сделать цвет подложки в шапке сайта или же поместить любое изображение туда. Но как сделать, чтобы это изображение менялось при переходе на разные страницы сайта, т.е. рандомно? Если размещать слайд-шоу, то картинки меняются в течении просмотра страницы (автоматически), а нужно чтобы они менялись именно при переходе с одной страницы на другую.

Буду благодарен за любые советы, т.к. найденные решения на css и jquery меняют картинки только автоматом.

Share this post


Link to post
Share on other sites

Вывести через пхп используя 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 есть ли в данном случае превосходство одного способа над другим? Или, как говорят некоторые люди: "Абсолютно монописуально"?

Share this post


Link to post
Share on other sites

Вывести через пхп используя 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>'; 
?>

Перемешивает сео эллементы при каждом обновлении странички. Пробывали ли Вы и насколько это может быть полезно? И лучше ли этот способ по сравнению с ручным прописыванием ключевых слов и мета описания через админ-панель престы?

Share this post


Link to post
Share on other sites

Решение через 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 by Kerm (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

 

Решение через 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 оформлять. Этот вариант работает, сам не проверял, но два независимых человека сказали, что на их сайтах стоит ровно.

У меня так и не заработал нормально. Поэтому стоит аналог этого, но на яве.

Share this post


Link to post
Share on other sites

Приведенный пример не правильный и не подходит к престашопу

Share this post


Link to post
Share on other sites

В 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 by Kerm (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More