И снова всем ку!
Решил заменить виарт.слайдер,виартовский вроде свою задачу выполняет,но он менее функционален,а в некоторых моментах даже неудобен...по-этому мой выбор пал на jCarousel() Т.к виарт позволяет настроить страницу,как душе угодно-грех этим не воспользоваться,в моем случае-индивидуальные настройки для категорий,приступим:
1.Добавляем блок "Слайдер" в категорию(в моем случае-индивидуальная настройка для определённой категории)настройки слайдера: Горизонт.лево,по умолчанию.Скачиваем скрипт,по вышеуказанной ссылке,создаем папку jcarousel в корне сайта,извлекаем файлы в эту папку
2.Т.к новый скрипт работает только со списками(ul,ol)переделаем его на div,открываем файл jquery.carousel.js(или мини,в зависимости от того какой юзать будете)например,в notepad++ и через поиск находим все ul/li,и заменяем их на div,честно говоря,есть небольшие сомнения в этих изменениях...но все работает так же,как и со списками
3.Если в дальнейшем вы планируете использовать виарт.слайдер,то вам нужно создать файл(templates/user/xxx.html),поместить содержимое(см.ниже) в этот файл и указать его в качестве шаблона в блоке "Слайдер",в моем случае(не буду использовать в дальнейшем виартовский) открываем файл block_sliders.html,удаляем все из него и вставляем это содержимое:
3.Открываем файл block_sliders.php,если не будете использовать виарт.слайдер,то удаляем строку №8Код HTML:<script type="text/javascript" src="/jcarousel/lib/jquery.jcarousel.js"></script> <link rel="stylesheet" href="/jcarousel/skins/tango/skin.css" type="text/css"/> <script type="text/javascript"> function mycarousel_initCallback(carousel) { // Disable autoscrolling if the user clicks the prev or next button. carousel.buttonNext.hover(function() { carousel.stopAuto(); carousel.buttonPrev.css('display', 'block'); carousel.buttonNext.css('display', 'block'); }); carousel.buttonPrev.hover(function() { carousel.stopAuto(); carousel.buttonPrev.css('display', 'block'); carousel.buttonNext.css('display', 'block'); }); // Pause autoscrolling if the user moves with the cursor over the clip. carousel.clip.hover(function() { carousel.stopAuto(); carousel.buttonPrev.css('display', 'block'); carousel.buttonNext.css('display', 'block'); }, function() { carousel.buttonPrev.css('display', 'none'); carousel.buttonNext.css('display', 'none'); carousel.startAuto(); }); }; jQuery(document).ready(function() { jQuery('#mycarousel').jcarousel({ scroll: 1, auto: 5, wrap: "circular", initCallback: mycarousel_initCallback }); }); </script> <div class="block-sliders {block_class}"> <form name="block" action=""><input type="hidden" name="pb_id" value="{pb_id}" /><input type="hidden" name="slider_type" value="{slider_type}" /></form> <!-- begin data --> <div class="Data" id="{data_id}" style="{data_style}"> <!-- begin rows --> <div id="mycarousel" class="jcarousel-skin-tango"><!-- BEGIN cols --> <div><!-- begin slider_image --> <a href="{slider_link}"><img border="0" src="{src}" alt="" /></a><!-- end slider_image --> <div class="slide_description"> <div class="slide_name">{item_name}</div><div class="slide_price">{price}<span class="rub">руб</span></div> <div class="slide_short_desc">{slider_html}</div> </div> </div><!-- END cols --> </div><!-- end rows --> </div> <!-- end data --> </div>
по какой-то неизвестной причине,в блоке ранее не было вывода названия,по-этому надо добавить в этот файл несколько строк,так же мы добавим вывод цены,не буду расписывать что именно в какую строку нужно добавить,т.к они могут быть разные у всех,по-этому проанализируйте изменения сами,просто найдите кусок и замените его,в моем случае,это начиная со строки 72 по 118Код:set_script_tag("js/slider.js");
Важно:Чтобы в дальнейшем все правильно работало,когда будете добавлять в слайдер товары,нужно указывать Название товара,которое у вас реально есть в базе,т.е Название в слайдере == Название товара существующего в базе,в противном случае слайдер будет торчить и скорее всего не только слайдер,если хотите избежать этой заморочки,придется выводить без цены,тогда используйте этот кусок:PHP код:$sql = " SELECT s.item_id, s.item_name, s.slider_image, s.slider_link, s.slider_html, s.item_order, sp.price ";
$sql .= " FROM (" . $table_prefix . "sliders_items s";
$sql .= " LEFT JOIN " . $table_prefix . "items sp ON s.item_name=sp.item_name) ";
$sql .= " WHERE slider_id=" . $db->tosql($block_id, INTEGER);
$sql .= " AND show_for_user=1 ";
$sql .= " ORDER BY item_order ";
$db->query($sql);
while ($db->next_record()) {
$row++;
$item_name = $db->f("item_name");
$slider_html = $db->f("slider_html");
$slider_image = $db->f("slider_image");
$slider_link = $db->f("slider_link");
$price = $db->f("price");
if (!strlen($slider_link)) {
$slider_link = "#";
}
if ($slider_type != 5) {
$t->set_var("data_id", "data_".$pb_id);
} else if ($slider_type == 5) {
$t->set_var("data_id", "data_".$pb_id."_".$row);
if ($row == 1) {
$t->set_var("data_style", "display: block; ");
} else {
$t->set_var("data_style", "display: none; ");
}
}
if ($slider_image) {
if (preg_match("/^http\:\/\//", $slider_image)) {
$image_size = "";
} else {
$image_size = @GetImageSize($slider_image);
}
$t->set_var("src", htmlspecialchars($slider_image));
if(is_array($image_size)) {
$t->set_var("width", "width=\"" . $image_size[0] . "\"");
$t->set_var("height", "height=\"" . $image_size[1] . "\"");
} else {
$t->set_var("width", "");
$t->set_var("height", "");
}
$t->set_var("item_name", $item_name);
$t->set_var("price", round($price));
4.Остается настроить внешний вид,для этого вам надо изменить skin.css,который находится в /jcarousel/skins/tango/PHP код:$sql = " SELECT item_id, item_name, slider_image, slider_link, slider_html, item_order ";
$sql .= " FROM " . $table_prefix . "sliders_items ";
$sql .= " WHERE slider_id=" . $db->tosql($block_id, INTEGER);
$sql .= " AND show_for_user=1 ";
$sql .= " ORDER BY item_order ";
$db->query($sql);
while ($db->next_record()) {
$row++;
$item_name = $db->f("item_name");
$slider_html = $db->f("slider_html");
$slider_image = $db->f("slider_image");
$slider_link = $db->f("slider_link");
if (!strlen($slider_link)) {
$slider_link = "#";
}
if ($slider_type != 5) {
$t->set_var("data_id", "data_".$pb_id);
} else if ($slider_type == 5) {
$t->set_var("data_id", "data_".$pb_id."_".$row);
if ($row == 1) {
$t->set_var("data_style", "display: block; ");
} else {
$t->set_var("data_style", "display: none; ");
}
}
if ($slider_image) {
if (preg_match("/^http\:\/\//", $slider_image)) {
$image_size = "";
} else {
$image_size = @GetImageSize($slider_image);
}
$t->set_var("src", htmlspecialchars($slider_image));
if(is_array($image_size)) {
$t->set_var("width", "width=\"" . $image_size[0] . "\"");
$t->set_var("height", "height=\"" . $image_size[1] . "\"");
} else {
$t->set_var("width", "");
$t->set_var("height", "");
}
$t->set_var("item_name", $item_name);
Что получилось:
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 10 сообщение(ий)):У вас нет прав чтобы видеть скрытый текст, содержащийся здесь.
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 250 сообщение(ий)):У вас нет прав чтобы видеть скрытый текст, содержащийся здесь.
зы если ничего не забылдолжно все заводится


LinkBack URL
About LinkBacks


должно все заводится


Ответить с цитированием



Социальные закладки