Zobacz pełną wersję : Ruchomy Header
Witajcie,
Czy znacie jakiś darmowy komponent działający tak jak Smart Flash Header ?
http://extensions.joomla.org/extensions/photos-a-images/images-rotators/6629
pawelSafiStudio
29-09-2010, 20:48
Witam,
Ostatnio dla znajomego robiłem ruchomy header przy pomocy mootools. Nie jest to co prawda taki sam efekt jak w podanym przykładzie ale może komuś się przyda.
Przykład wykorzystania na stronie: http://fotograf.kepno.pl
W pliku templatki (/templates/twoja-templatka/index.php) należy stworzyć funkcję ładującą moduły. Najlepiej stworzyć zewnętrzną klasę.
Funkcję ładowania modułów nazwę tutaj modules_switcher($type), gdzie type oznacza pozycję modułu. Kod funkcji:
function modules_switcher($type){
$db = &JFactory::getDBO();
$sql = "SELECT * FROM #__modules WHERE position='".$type."' AND published='1' ORDER BY ordering";
$db->setQuery($sql);
$results = $db->LoadObjectList();
$html = '';
if (count($results)>0){
$html.='<script type="text/javascript">
var banner_images='.count($results).';
var actual_banner=1;
</script>';
$html.='<div id="banner_images_container">
<div id="banner_scroller">';
$i=1;
foreach ($results as $row){
$html.='<div id="image'.$i.'" class="top_banner_module">'.$row->content.'</div>';
$i++;
}
$html.='</div>
</div>';
$html.='<div id="gallery_changer">';
for($j=$i;$j>1;$j--){
$class="";
if($j==2){
$class=" active_banner";
}
$html.='<div id="banner_'.($j-1).'" class="banner_number'.$class.'"> '.($j-1).' </div>';
}
$html.='</div>';
}
echo $html;
}
Zastosuj funkcję w miejscu, w którym chcesz dać zmieniający się header.
Następnie w sekcji head szablonu, umieszczamy następujący skrypt:
<script type="text/javascript">
window.addEvent('domready',function(){
var goon = 1;
var scroller = $('banner_scroller');
var gallery_changer = $$('.banner_number');
var slider = new Fx.Styles(scroller, {duration:800, wait:false, transition:Fx.Transitions.Quart.easeOut});
slider.start({
'left': 0
});
(function(){
if(scroller.getStyle('left').toInt() >= 0) {
goon=1;
}
if(scroller.getStyle('left').toInt() > 0 - (608*(banner_images-1))) {
var offset = scroller.getStyle('left').toInt()-(608*goon);
actual_banner+=goon;
gallery_changer.each(function(remove_class){
var banner_id = remove_class.getProperty('id');
banner_id = banner_id.split('_');
if(actual_banner== parseInt(banner_id[1])){
remove_class.addClass('active_banner');
}
else{
remove_class.removeClass('active_banner');
}
});
slider.start({
'left': offset
});
}else{
goon = -1;
var offset = scroller.getStyle('left').toInt()-(608*goon);
actual_banner+=goon;
gallery_changer.each(function(remove_class){
var banner_id = remove_class.getProperty('id');
banner_id = banner_id.split('_');
if(actual_banner== parseInt(banner_id[1])){
remove_class.addClass('active_banner');
}
else{
remove_class.removeClass('active_banner');
}
});
slider.start({
'left': offset
});
}
}).periodical(7000);
gallery_changer.each(function(element){
element.addEvent('mousedown', function() {
gallery_changer.each(function(remove_class){
remove_class.removeClass('active_banner');
});
element.addClass('active_banner');
var banner_id = element.getProperty('id');
banner_id = banner_id.split('_');
actual_banner = parseInt(banner_id[1]);
var offset = -(608*(actual_banner-1));
slider.start({
'left': offset
});
});
});
});
</script>
Kod CSS do switchera
#banner_images_container{
width: 608px;
height: 193px;
overflow: hidden;
position: relative;
}
#banner_scroller{
width: 10000px;
height: 193px;
position: relative;
left: 0px;
}
#banner_images_container img{
float: left;
}
#gallery_changer{
position: relative;
width: 608px;
top: -20px;
}
.banner_number{
padding: 2px 10px 2px 10px;
float: right;
margin-right: 7px;
background: #000877;
color: #ffffff;
cursor: pointer;
}
.active_banner{
background: #ffffff;
color: #3feb00;
}
Teraz wystarczy dodawać headery w postaci np obrazków jako "własny moduł HTML" w panelu admina, przypisując im odpowiednią pozycję ($type).
Informacja: Skrypt działa tylko w przypadku modułów "własny moduł HTML".
W razie wszelkich pytań proszę pisać. Chętnie odpowiem :)
pawelSafiStudio
30-09-2010, 16:16
Witam serdenicze,
w nawiązaniu do mojej wczorajszej wypowiedzi, stwierdziłem, że może komuś przyda się mały modulik, który działał by na zasadzie zmieniającego się header'u.
Stworzyłem taki prosty moduł i udostępniam do użytku.
Licencja GPL
demo: http://demo.safistudio.pl <-- w samym topie widać zmieniające się zdjęcia.
Do modułu przypisujemy ID modułów HTML, które mają się zmieniać. Zmiana modułu następuje co 7 sekund. Ustalamy szerokość oraz wysokość bannerka i rodzaj animacji. Dostępne dwa rodzaje - przesuwanie oraz przenikanie.
Jest to wersja testowa. Jeśli pojawią się jakieś uwagi proszę pisać.
Mam nadzieje, że komuś się przyda.
Pozdrawiam.
3096
Dzięki za pomoc.
Sugerowałbym umieści moduł w bazie plików.
pawelSafiStudio
30-09-2010, 18:47
Ciesze się, że mogłem pomóc.
Pozdrawiam.
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!