Last active
October 24, 2024 16:15
-
-
Save alex28742/9c044373a377729378f3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script> | |
var url = window.location.pathname; | |
$('.list-inline li a[href$="'+url+'"]').addClass('active'); | |
$('.list-inline li a[href$="'+url+'"]').parents().addClass('active'); | |
</script> | |
.blocks>(div>a[ href="/index.php?categoryID=$@845" target="_blank"]>span+img)*39 | |
"Купить Просто" (1 лицензия) | |
MegaShop (1 лицензия) | |
MegaShop (1 лицензия, скидка 10%) | |
Multi-Shop (1 лицензия) | |
Picco Shop (1 лицензия) | |
Дизайн со вкусом 2.0 (1 лицензия) | |
Дизайн шаблон Color (1 лицензия) | |
Дизайн шаблон Flamingo (1 лицензия) | |
Классика для Shop-Script 5 (1 лицензия) | |
Сайт Компании (1 лицензия) | |
Тема «Классика» (1 лицензия, скидка 10%) | |
Тема Shopping (1 лицензия) | |
Тема Shopping (1 лицензия, скидка 10%) | |
Тема Universal (1 лицензия) | |
<ul> | |
{foreach $wa->shop->pages() as $page} | |
{if $page.footerpage == 'page1'} | |
<li> | |
<a href="{$page.url}" >{$page.name}</a> | |
</li> | |
{/if} | |
{/foreach} | |
</ul> | |
<p>Источник: <a href="" target="_blank" rel="nofollow"><strong></strong></a><br></p> | |
==================================================================================================== | |
Вывод чего-либо на главной странице сайта | |
{if waRequest::param('app') == 'site' && $page.url} | |
...... | |
{/if} | |
Или так: | |
//Только на главной | |
{if $wa->currentUrl(false, true) == $wa_url}код на главной{/if} | |
//Везде, кроме главной | |
{if $wa->currentUrl(false, true) != $wa_url}код НЕ на главной{/if} | |
//На главной одно, на остальных другое | |
{if $wa->currentUrl(false, true) == $wa_url} | |
код на главной | |
{else} | |
код на остальных страницах | |
{/if} | |
==================================================================================================== | |
Или так: (С указанием в доп. параметрах страницы ключа) | |
{if $page.homepage} | |
{$wa->block("home1")} | |
{/if} | |
==================================================================================================== | |
Включение блока только на главной магазина | |
{if waRequest::param('app') == 'shop' && waRequest::param('module') == 'frontend' && !waRequest::param('action')}......{/if} | |
==================================================================================================== | |
Вывод картинки в блоке новостей: | |
Код: | |
{if !empty($post.preview)} | |
<div> | |
<img src="{$wa_static_url}{$post.preview}" alt="{$post.title}" class="img-responsive"> | |
</div> | |
{/if} | |
строчка в мета->дополнительные параметры | |
preview=wa-data/public/site/themes/zoo/img/Akcia.jpg | |
==================================================================================================== | |
{*строка для отображения корзины в мобильной версии в Шариках*} | |
<a href="{$wa->getUrl('shop/frontend/cart')}" data-toggle="popover" data-placement="top"> | |
<span>{$cart_count}</span>{*123*} | |
</a> | |
==================================================================================================== | |
Открывать номер телефона в мобилке по нажатию | |
<a href="tel:{$wa->shop->settings('phone')}"> | |
<span class="" style="font-weight:bold;font-size:1.5em; padding-top:20px; display:inline-block; margin-left:30px;">{$wa->shop->settings('phone')}</span> | |
</a> | |
==================================================================================================== | |
Подстановка фавиконок при выводе списка страниц для верхнего меню страниц магазина | |
(В настройках страницы в поле "дополнительные параметры страницы" надо вписать идентификатор, напр. page=dostavka) | |
{foreach $wa->shop->pages() as $page} | |
<li {$active}><a href="{$entry.url}"> | |
{if $page.page == 'dostavka'} | |
<i class="fa fa-truck"></i>{$page.name}</a></li> | |
{else if $page.page =='kontakty'} | |
<i class="fa fa-envelope-o"></i>{$page.name}</a></li> | |
{else if $page.page =='o-kompanii'} | |
<i class="fa fa-briefcase"></i>{$page.name}</a></li> | |
{else}<i class="fa fa-asterisk"></i>{$page.name}</a></li> | |
{/if} | |
{/foreach} | |
==================================================================================================== | |
Вывод картинок в категориях (используется плагин : "изображения для категорий: goodswithoutcategory") | |
В шаблоне suprime: | |
{foreach $category.subcategories as $sc} | |
<a class="item" href="{$sc.url}"> | |
<div class="image img_middle"> | |
<div class="img_middle_in"> | |
{$categoryImageUrl = shopCategoryImagesPlugin::getCategoryImageUrl($sc.id)} | |
{if $categoryImageUrl !== false}<img src="{$categoryImageUrl}" /> | |
{else} | |
<img src="{$wa_theme_url}img/dummy200.png" alt=""/> | |
{/if} | |
</div> | |
</div> | |
<h4 class="cat_name">{$sc.name}</h4> | |
</a> | |
{/foreach} | |
==================================================================================================== | |
jQuery удаление ссылки из элемента | |
$(document).ready(function() { | |
$('.base-menu.type3 .parent > ul').css('display', 'block'); | |
$('.base-menu.type3 .parent > a').removeAttr( 'href' ); | |
}); | |
==================================================================================================== | |
Уязвимость ? в category выдает пароли, логины к аккаунту... | |
{$a = $wa->shop->product($tovar.id)} <pre>{$a|var_dump}</pre> | |
==================================================================================================== | |
Пример настройки крона | |
/home/httpd/fcgi-bin/a146831_mark/php-cli /home/httpd/vhosts/mobimarket.me/httpdocs//import_from_enves.php > /dev/null 2>&1 | |
==================================================================================================== | |
Использование функции на странице webasyst | |
// Сама функция: (если не примет значения в параметры, подставит по умолчанию 0,6,3) | |
{function name=name_function n=0 low=6 critical=3} | |
{if $n > $low or $n === null} | |
..... работа с переданными параметрами | |
{/if} | |
{/function} | |
// Обращение к функции с передачей параметров: | |
{name_function n=$value low=$value critical=$value} | |
==================================================================================================== | |
Получение разрешения монитора на JS | |
ScreenWidth = screen.width; | |
ScreenHeight = screen.height; | |
alert(ScreenWidth+'x'+ScreenHeight); | |
==================================================================================================== | |
Вывод даты в смарти smarty | |
{waDateTime::date('j f Y года', 'next Monday')} | |
==================================================================================================== | |
Формат отображения дат в PHP | |
http://php.net/manual/ru/function.date.php | |
==================================================================================================== | |
{$p = $wa->shop->product($product_id)} | |
Возвращает объект товара по указанному $product_id. | |
$product->productUrl(): Возвращает URL страницы товара | |
$product->upSelling():Возвращает массив рекомендуемых схожих товаров (upselling) для указанного основного товара. | |
$product.id: ID товара. Остальные элементы объекта $product, доступные в этом шаблоне, перечислены ниже | |
$product.name: Наименование | |
$product.description: Краткое описание товара | |
$product.rating: Средняя оценка покупателей (действительное число от 0 до 5) | |
$product.skus: Массив артикулов товара | |
$product.images: Массив изображений товара | |
$product.categories: Массив категорий товара | |
$product.tags: Массив тегов товара | |
$product.pages: Массив информационных страниц товара | |
$product.features: Массив значений характеристик товара | |
$product.skus[0].id - идентификатор | |
$product.skus[0].name - имя | |
$product.skus[0].price - цена | |
$product.skus[0].available - доступен или нет(1 или 0) | |
$product.skus[0].count - кол-во | |
==================================================================================================== | |
@media screen and (min-width:750px){ } | |
-webkit-transition:all 1.5s linear; | |
-o-transition:all 1.5s linear; | |
-moz-transition:all 1.5s linear; | |
==================================================================================================== | |
Использование дополнительных параметров страницы | |
Дополнительные параметры key=kvadro | |
массив $category: | |
["params"]=> | |
array(1) { | |
["key"]=> | |
string(6) "kvadro" | |
{$category.params['key']} на странице category.html выведет kvadro | |
{if $category.params['key'] == "kvadro"} | |
<script> | |
alert("Извините: на странице проводятся работы...Перенаправление..."); | |
if ( '' != document.referrer ) { | |
document.location.href = document.referrer; | |
} | |
else { | |
for (;;alert("Извините: на странице проводятся работы... Пожалуйста, вернитесь на главную страницу...")); | |
} | |
</script> | |
{/if} | |
=============================================================================================== | |
Скрипт скрывающий длинное описание: (использованная тема "Купить просто") | |
<script> | |
if($('#category-description').length != 0 && $('#category-description').text().length > 300){ | |
var alsCanegory = $('#category-description').css({ | |
'maxHeight':'110px' | |
}) | |
var alsBtn = $('<button>').text("Подробнее").prependTo('#product-list').addClass('als-button'); | |
alsBtn.click(function(){ | |
if($(this).text() == "Скрыть описание"){ | |
alsCanegory.css({ | |
'maxHeight':'110px' | |
}).animate(1500); | |
alsBtn.text("Читать полностью"); | |
} | |
else{ | |
alsCanegory.css({ | |
'maxHeight':'100%' | |
}); | |
alsBtn.text("Скрыть описание"); | |
} | |
}); | |
} | |
</script> | |
=============================================================================================== | |
Нажатие кнопки средствами jquery | |
$('.active').trigger('click'); | |
=============================================================================================== | |
Аналог var_dump в JQuery (нодо доработать чтобы была рекурсия) | |
function dump(obj) { | |
var out = ""; | |
if(obj && typeof(obj) == "object"){ | |
for (var i in obj) { | |
out += i + ": " + obj[i] + "n"; | |
} | |
} else { | |
out = obj; | |
} | |
alert(out); | |
} | |
dump($('.mdi-aspect_ratio')); | |
=============================================================================================== | |
$('.dialog-window .stylize-button.als-active:first').trigger('click'); | |
$('.product-list.thumbs').hide(1000).fadeIn("slow"); | |
=============================================================================================== | |
Удаление части строки на php | |
$str = "http://hello.ru"; | |
if(substr_count($str,"http://") > 0){ | |
list($trash, $get_str) = explode("http://", $str); | |
$str = $get_str; | |
} | |
echo $str; | |
=============================================================================================== | |
{*Получение цены, зачеркнутой и актуальной*} | |
{$flag_isset_old_price = false} | |
{$a_price = null} | |
{$old_price = null} | |
{foreach $product.skus as $price => $p} | |
{$a_price = $p.price} | |
{$old_price = $p.compare_price} | |
{if $old_price > 0}{$flag_isset_old_price = true}{/if} | |
{/foreach} | |
{*Показ сэкономленной суммы при наличии зачеркнутой старой цены}*} | |
{if $flag_isset_old_price && $old_price > $a_price} | |
<div class="different-price"><span class="df-price-title"> | |
Вы экономите: </span><span class="count-df-price">{$old_price - $a_price}</span><span class="df-valuta"> руб. | |
</span><span class="df-procenty">({(($old_price - $a_price)/($old_price/100))|ceil}%)</span></div> | |
{/if} | |
=============================================================================================== | |
Получение ключа элемента в Smarty | |
{$key = $значение элемента|@array_search:$массив содержащий элемент} | |
=============================================================================================== | |
Привязка обработчика к ajax форме | |
$('.filters.ajax form input').change(function(){if(MatchMedia("only screen and (min-width: 993px)")){ajax_form_callback($(this).closest('form'));}}); | |
$('.filters.ajax form select').change(function(){if(MatchMedia("only screen and (min-width: 993px)")){ajax_form_callback($(this).closest('form'));}}); | |
=============================================================================================== | |
Редирект на JS | |
// Пример перенаправления на предыдущую страницу | |
<script type="text/javascript"> | |
if ( '' != document.referrer ) { | |
alert('Не нада жалаватца одмину, пжалуста! Лучше вали на ' + document.referrer + '!!!'); | |
document.location.href = document.referrer; | |
} else { for (;; | |
alert('Вали отседова, у тибя нету рефирера!!! Ты обманщик и пришел не по ссылке' | |
)); } | |
</script> | |
// Перенаправление на конкретную страницу | |
<script>setTimeout(function () {window.location.replace("http://nextforever.ru/");}, 5000); // время в мс</script> | |
=============================================================================================== | |
Smarty Наполнение массива в цикле | |
{foreach $_images[$p.id] as $_i}{$_images_url[] = $_i['url_200']}{/foreach} | |
=============================================================================================== | |
Кнопка наверх, скрипт | |
//BACK TO TOP | |
$(window).scroll(function () { | |
if ( MatchMedia("only screen and (min-width: 993px)") ) { | |
var wrapper = $("#back-top-wrapper"); | |
if ($(this).scrollTop() > 100) { | |
wrapper.fadeIn(); | |
//wrapper.addClass('active'); | |
} else { | |
wrapper.fadeOut(); | |
//wrapper.removeClass('active'); | |
} | |
} | |
}); | |
$('#back-top').click(function () { | |
$('body,html').animate({ scrollTop: 0 }, 800); | |
return false; | |
}); | |
=============================================================================================== | |
Поиск подстроки в строке JS (Метод чувствителен к регистру символов!) | |
var str = 'http://www.yandex.ru'; | |
if(str.indexOf('yandex.ru') + 1) { | |
... | |
} | |
Поиск осуществляется слева направо. | |
"Привет, мир".indexOf("Привет") // вернет 0 | |
"Привет, мир".indexOf("Корова") // вернет -1 | |
"Привет, мир".indexOf("мир") // вернет 8 | |
"Привет, мир".indexOf("Мир") // вернет -1 | |
Пример: с позицией | |
"Привет, мир".indexOf("Привет", 0) // вернет 0 | |
"Привет, мир".indexOf("р", 1) // вернет 1 | |
"Привет, мир".indexOf("р", 5) // вернет 10 | |
Пустая подстрока находится в любом случае: | |
Пример: для пустой подстроки | |
"Привет, мир".indexOf("", 5) // вернет 5 | |
"Привет, мир".indexOf("", 7) // вернет 7 | |
"Привет, мир".indexOf("", 999) // вернет 11 (длину) | |
Подробнее здесь: http://javascript.ru/String/indexof | |
=============================================================================================== | |
JS Получение параметров GET из адресной строки браузера | |
function parseGetParams() { | |
var $_GET = {}; | |
var __GET = window.location.search.substring(1).split("&"); | |
for(var i=0; i<__GET.length; i++) { | |
var getVar = __GET[i].split("="); | |
$_GET[getVar[0]] = typeof(getVar[1])=="undefined" ? "" : getVar[1]; | |
} | |
return $_GET; | |
} | |
........ | |
var GETArr = parseGetParams(); | |
=============================================================================================== | |
JS Эмуляция статической переменной в скрипте (можно использовать как счетчик) | |
qwe=function(){ | |
console.log(++arguments.callee.i) | |
return arguments.callee.i; | |
} | |
// инициализирую "переменную" | |
qwe.i=0 | |
// увеличиваю на единицу | |
qwe(); | |
// использование как счетчика с проверкой четности (можно внутри другой функции): | |
if(qwe()%2 == 0){} | |
=============================================================================================== | |
PHP Как понять что клиент пользуется Mac OS | |
{*Клиент: {$smarty.server.HTTP_USER_AGENT}*} | |
{*Исправление совместимости Mac OS Не понимает flex*} | |
{if siteTest::is_substr_in_str("Mac",$smarty.server.HTTP_USER_AGENT) !== false} | |
<p>Вы используете Mac OS</p> | |
<script> | |
$( document ).ready(function() { | |
setTimeout(function () { | |
$('.als-brand-name').css('display','none'); | |
if (screen.width <= '768' || document.body.clientWidth <= '768'){ | |
$('.footer-line').css('display','none'); | |
$('.outline-filter-wrap').css('position','absolute').css('top','400px'); | |
$('.main-items-wrap').css('position','absolute').css('top','750px'); | |
} | |
}, 1000); // время в мс | |
}); | |
</script> | |
{/if} | |
=============================================================================================== | |
JS Переключение класса (если нет добавит, если есть удалит) .toggleClass('class') | |
=============================================================================================== | |
JQuery реакция на изменение размера окна браузера | |
$(window).resize(function() { | |
ScreenWidth = screen.width; | |
console.log(ScreenWidth); | |
.... | |
imageGalleryResize(); | |
и пр.... | |
}); | |
=============================================================================================== | |
Включение данных из xml | |
Запись в xml | |
<setting var="text_header" control_type="text"> | |
<value>знач. по умолчанию</value> | |
<name locale="en_US">text info</name> | |
<name locale="ru_RU">Информ.текст</name> | |
</setting> | |
в коде | |
{if !empty($theme_settings.text_header)} | |
<p class="text-top"> {$theme_settings.text_header}</p> | |
{/if} | |
=============================================================================================== | |
JS Прокрутка страницы (код из шаблона your shop) | |
// Прокрутка страницы | |
$(window).scroll(function () { | |
var goTop = $("#go-top"); | |
if ($(this).scrollTop() > 200) { | |
goTop.fadeIn(); | |
} else { | |
goTop.fadeOut(); | |
} | |
}); | |
$('#go-top a').click(function () { | |
$('html, body').animate({ | |
scrollTop: 0 | |
}, 800); | |
return false; | |
}); | |
=============================================================================================== | |
flex - особенности поддержки на некоторых браузерах (iOS Safari 8.4!, Android Browser 4.3) | |
iOS Safari 8.4 -> c префиксом -webkit- | |
Android Browser 4.3 -> c префиксом -webkit- | |
IE 11 -> работает с некоторыми ошибками | |
http://caniuse.com/#search=flex | |
#flex-container { | |
display: -webkit-flex; | |
display: flex; | |
-webkit-flex-direction: row; | |
flex-direction: row; | |
} | |
=============================================================================================== | |
<?php | |
//делаем из страницы сайта свежайший "клон" Яндекса | |
$str = file_get_contents ('http://yandex.ru'); | |
echo $str; | |
?> | |
=============================================================================================== | |
https://www.youtube.com/watch?v=yXLuq0EZHEo | |
Ajax-подгрузка контента при прокрутке страницы | |
=============================================================================================== | |
PHP Работа с базой данных | |
Файл db.php | |
<?php | |
// Хост | |
$db_host = "localhost"; | |
// Имя базы данных | |
$db_name = "name"; | |
// Логин для полключения к базе | |
$db_user = "root"; | |
// Пароль для подключения к базе | |
$db_pass = ""; | |
// Подключаемся к базе | |
$db = mysqli_connect($db_host,$db_user,$db_pass);// Подключение к базе, (хост, логин, пароль) | |
// Указываю кадировку, в которой будет получена информация из базы | |
mysqli_query ($db, 'set character_set = "utf8"'); | |
// Получаю из базы энное количество записей | |
$res = mysqli_query($db, "SELECT * FROM `articles` ORDER BY `article_id` DESC LIMIT 10"); | |
// Формируем массив из 10 записей | |
$articles = array(); | |
while($row = mysqli_fetch_assoc($res)){ | |
$articles[] = $row; | |
} | |
if(isset($_GET['id'])){ | |
$id = $_GET['id']; | |
$sql = "SELECT * FROM products WHERE id = $id"; | |
$query = mysql_query($sql) or die(mysql_error()); | |
$row = mysql_fetch_row($query); | |
$json = json_encode("$row"); | |
echo $json; | |
} | |
?> | |
========================================================================= | |
Обработчик php | |
include 'inc/db.php'; | |
// с какой записи будет осуществлятся вывод | |
$startFrom = $_POST['startFrom']; | |
// Получаем 10 записей, начиная с последней отображенной | |
$res = mysqli_query($db, "SELECT * FROM `articles` ORDER BY `articles_id` DESC LIMIT {$startFrom}, 10"); | |
// формируем массив со статьями | |
$articles = array(); | |
while($row = mysqli_fetch_assoc($res)){ | |
$articles[] = $row; | |
} | |
// превращаем массив записей в json строку и передаем в файл script... через ajax запрос | |
в след. файле это будет получено как data | |
echo json_encode($articles); | |
====================================================================== | |
Обработчик на js | |
$(document).ready(function(){ | |
/*Переменная флаг для отслеживания того, происходит ли в данный момент ajax запрос. В самом начале даем ей | |
значение false , т.е, запрос не в процессе выполнения*/ | |
var inProgress = false; | |
/*с какой записи надо делать выборку из базы при запросе*/ | |
var startFrom = 10; | |
// Используйте вариант $('#more').click(function()) для того чтобы дать пользователю возможность управлять | |
процессом, кликая по кнопке "Дальше" под блоком статей | |
$(window).scroll(function(){ | |
Если высота окна + высота прокрутке больше или равны высоте всего документа и аякс запрос в настоящий | |
момент не выполняется, то запускаем аякс запрос | |
$(window).height() - высота окна браузера | |
$window).scrollTop() - расстояние прокрученное пользователем вверх | |
$(document).height() - высота всего документа (не окна) включая часть кот. не видна | |
if($window).scrollTop() + $(window).height() >= $(document).height() && !inProgress){ | |
$.ajax({ | |
// адрес файла обработчика запроса | |
url: 'obrabotchik.php', | |
// метод отправки данных | |
metod: 'POST', | |
// данные которые передаем в файл обработчик | |
data: {"startFrom" : startFrom}, | |
// что нужно сделать до отправки запроса | |
beforeSend: function(){ | |
// меняем значение флага на true т.е. запрос сейчас в процессе выполнения | |
inProgress = true;} | |
// что нужно сделать по факту выполнения запроса | |
}).done(function(data){ | |
// преобразуем результат пришедший от обработчика ... json обратно в массив | |
data = jQuery.parseJSON(data); | |
// если массив не пуст , записи есть... | |
if(data.length > 0){ | |
// делаем проход по каждому результату, оказавшемуся в массиве, | |
где в index попадает индекс текущего элемента массива, а в data - сама запись | |
$.each(data, function(index, data){ | |
// отбираем по идентификатору блок с записями и дозаполняем его новыми данными | |
$("#articles").append("<p><b>"+ data.title + "</b><br />" + data.text + "</p>"); | |
}); | |
// по факту окончания запроса снова меняем значение флага на false | |
inProgress = false; // можно снова выполнять аякс запрос | |
// увеличиваем на 10 порядковый номер записи с кот. надо начинать выборку из базы | |
startFrom += 10; | |
} | |
}); | |
} | |
}) | |
}) | |
====================================================================== | |
как это может выглядет в файле index.php | |
<div style="width: 200px;" id="articles"> | |
<?php foreach ($articles as $article): ?> | |
<p><b><?php echo $article['title']; ?></b><br /> | |
<?php echo $article['text']; ?> </p> | |
<?php endforeach; ?> | |
</div> | |
<button id="more"> Дальше </button> | |
====================================================================== | |
Файл использующий базу | |
<?php | |
// Подключаю файл | |
require_once 'bd.php'; | |
// Делаем выборку из БД | |
$sql = "SELECT * FROM tableName";//Формируем запрос | |
$query = mysql_query($sql) or die(mysql_error());// Обращаемся к базе | |
// Проходим в цикле | |
$array = array(); | |
while($row = mysql_fetch_assoc($query)){ | |
$array[] = $row; | |
} | |
// Теперь все переводим в JSON | |
$json = json_encode($array); | |
Просмотреть json пакет в удобочитаемом виде можно с помощью | |
например плагина для notepad++ "json viewer" | |
?> | |
============================================================================================== | |
Работа с AJAX с помощью Jquery | |
работаем с функцией $.ajax({}); | |
$.ajax({ | |
url:"server.php", | |
type:"GET", | |
data:({id:id}),// получаем только элемент по указанному id (если нужен конкретный элемент) | |
dataType:"json",// Тип передаваемых файлов | |
success:function(data){ // Функция которая будет запущена в случае успешной работы | |
var j = 0; | |
var out = ""; | |
while(j <= data.length-1){ | |
out += "<p>"+data[j].author+"</p>"+ | |
"<p>"+data[j].title+"</p>"+ | |
"<p>"+data[j].description+"</p><br><hr>"; | |
j++; | |
} | |
$("#show").html(out); | |
} | |
}); | |
========================== | |
Решение проблемы с кодировкой | |
Создаем файл в корне проекта, .htaccess и внем пишем: | |
AddDefaultCharset utf8 | |
==================================================== | |
Ссылка добавить в закладки | |
<a class="dotted-link bookmark-button" data-url="http://setup.ru" title="Setup.ru — бесплатный конструктор сайтов, создать сайт бесплатно, раскрутка сайта бесплатно" href="/" rel="sidebar"> | |
<i></i> | |
<span>Добавить в закладки</span> | |
</a> | |
==================================================== | |
Скошенная линия внизу блока | |
<div class="shape__container"> | |
<div class="shape"> | |
<svg width="100%" height="130px"><defs><pattern id="shapeDividerPattern-3" preserveAspectRatio="none" style="background-repeat: none;" patternUnits="userSpaceOnUse" x="0" y="0" width="100%" height="1300px" viewBox="0 0 100 1300"><polygon fill="#ffffff" points="100,0 100,130 0,130 "></polygon></pattern></defs><!-- Background --><rect x="0" y="0" width="100%" height="130px" fill="url(#shapeDividerPattern-3)"></rect></svg> | |
</div> | |
</div> | |
==================================================== | |
Ссылка для скачивания файла | |
<a download="" href="http://ifc-horizon.ru/wp-content/uploads/dolgi.pdf">Скачать</a> | |
==================================================== | |
Поиск подстроки в строке в smarty (пример) | |
{if strpos($get_params, "/pishushchie-instrumenty/")}{$pens_cat_flag = true}{else}{$pens_cat_flag = false}{/if} | |
==================================================== | |
Поиск подстроки в строке в PHP (пример) | |
$haystack = 'ababcd'; | |
$needle = 'aB'; | |
$pos = strripos($haystack, $needle); | |
if ($pos === false) { | |
echo "Sorry, we did not find ($needle) in ($haystack)"; | |
} else { | |
echo "Congratulations!\n"; | |
echo "We found the last ($needle) in ($haystack) at position ($pos)"; | |
} | |
==================================================== | |
Запрет копирования текста на странице добавлением класса css | |
.noselect { | |
-moz-user-select: none; | |
-webkit-user-select: none; | |
-ms-user-select: none; | |
-o-user-select: none; | |
user-select: none; | |
} | |
==================================================== | |
Взятие и вставка фрагментов кода smarty | |
взятие фрагмента | |
{capture name=reviews_block} | |
<div class=""> | |
...... | |
</div> | |
{/capture} | |
..вставка фрагмента фрагмента | |
{$smarty.capture.reviews_block} | |
==================================================== | |
Экспериментирую с анимацией | |
// клик по кнопке свернуть | |
$('.button.moveUp').closest('.wrapper').click(function(){ | |
var get_height = getHeight(); | |
$(this).animate({ | |
height:get_height | |
}, 1000, | |
"linear", | |
function(){ $(this).children('.button.moveUp').removeClass('moveUp').addClass('moveDown') } ); | |
}); | |
// клик по кнопке развернуть | |
$('.button.moveDown').closest('.wrapper').click(function(){ | |
$(this).animate({ | |
height:100% | |
}, 1000, | |
"linear", | |
function(){ $(this).children('.button.moveDown').removeClass('moveDown').addClass('moveUp') } ); | |
}); | |
// получение нужной высоты блока, | |
в зависимости от ширины окна браузера | |
function getHeight(){ | |
var height = $(window).height(); | |
if(height >= 1366){ | |
return 200; | |
} | |
else if(height >= 1024){ | |
return 400; | |
} | |
else if(height >= 768){ | |
return 600; | |
} | |
else if(height >= 768){ | |
return 800; | |
} | |
else return 980; | |
} | |
//////////////////////////////////////////// | |
$("p").animate({ | |
height:200, | |
width:400 | |
}, 1000, | |
"linear", | |
function(){ | |
test($(this)); | |
} ); | |
function test(item){ | |
if(item.height() > 0 ){ | |
alert(item.height()); | |
} | |
} | |
==================================================== | |
Редирект в .htaccess (пример) | |
Redirect 301 /home/ http://pen.mcdir.ru/ | |
Redirect 301 /podbor/pishushchie-instrumenty/ http://pensil.mcdir.ru/category/pishushchie-instrumenty/ | |
Redirect 301 /podbor/bumazhno-belovye-tovary/ http://pensil.mcdir.ru/category/bumazhno-belovye-tovary/ | |
Redirect 301 /podbor/nastolnye-aksessuary/ http://pensil.mcdir.ru/category/nastolnye-aksessuary/ | |
==================================================== | |
Подключение хелпера в webasyst | |
путь к файлу хелпера: | |
/httpdocs/wa-apps/shop/lib/classes/shopName.class.php | |
Подключение в файле шаблона: {*обращение к методу "get_array" с передачей параметров*} | |
====================== | |
{$value = shopName::get_array($param1,$param2)} | |
Вид файла - хелпера: | |
====================== | |
<?php | |
class shopName | |
{ | |
<?php /*пример методов*/ ?> | |
public function get_array($param1,$param2) | |
{ | |
.......... реализация | |
return $result; | |
} | |
} | |
Закрывающий тег php "?>" в конце хелпера не нужен! | |
==================================================== | |
Smarty длина строки | |
<!-- Строка = {$string1}, Длинна строки = {$string1|count_characters:true} --> | |
==================================================== | |
Пример редиректа в .htacsess (внизу файла прописывается) | |
Redirect 301 /home/ http://pen.mcdir.ru/ | |
Redirect 301 /podbor/pishushchie-instrumenty/ http://pensil.mcdir.ru/category/pishushchie-instrumenty/ | |
Redirect 301 /podbor/bumazhno-belovye-tovary/ http://pensil.mcdir.ru/category/bumazhno-belovye-tovary/ | |
Redirect 301 /podbor/nastolnye-aksessuary/ http://pensil.mcdir.ru/category/nastolnye-aksessuary/ | |
Починка сортировки | |
==================================================== | |
Откройте в бекенде магазина вот такой URL — запустится модуль "починки" нарушенных данных о сортировке различных сортируемых элементов: | |
После этого сортировка должна сохраняться корректно | |
http://адрес_вашего_сайта/webasyst/shop/?module=repair&action=sort | |
Проверка на Mac OS | |
==================================================== | |
{if siteTest::is_substr_in_str("Mac",$smarty.server.HTTP_USER_AGENT) !== false} | |
Вы используете Mac OS | |
{/if} | |
==================================================== | |
Сброс значений select jquery | |
var $selectbox = $('#selectbox'); | |
// Клик по кнопке "Сброс" | |
$('#reset').click(function() { | |
$selectbox.prop('selectedIndex', 0); | |
}); | |
==================================================== | |
проверка содержимого кук smarty (имя куки: products_per_page) | |
{if $smarty.cookies.products_per_page == '480'}четыреста восемьдесят{else}другое число{/if} | |
==================================================== | |
удаление дублей из массива jquery | |
var setboxes=new Array(.....); | |
setboxes = jQuery.unique(setboxes); // удаляет дубли | |
==================================================== | |
Поиск элемента в массиве jquery | |
$.inArray(value, array); | |
value — искомое значение. | |
array — массив в котором будет происходить поиск | |
Пример: | |
var arr = [1, "Bob", "Sid"]; | |
$.inArray(1, arr); // 0 | |
$.inArray("Sid", arr); // 2 | |
$.inArray("Bobby", arr); // -1 | |
==================================================== | |
Проверка типа переменной jquery | |
jQuery.type( true ) === "boolean" | |
jQuery.type( new Boolean() ) === "boolean" | |
jQuery.type( 3 ) === "number" | |
jQuery.type( new Number(3) ) === "number" | |
jQuery.type( "test" ) === "string" | |
jQuery.type( new String("test") ) === "string" | |
jQuery.type( function(){} ) === "function" | |
jQuery.type( [] ) === "array" | |
jQuery.type( new Array() ) === "array" | |
jQuery.type( new Date() ) === "date" | |
jQuery.type( new Error() ) === "error" // as of jQuery 1.9 | |
jQuery.type( /test/ ) === "regexp" | |
==================================================== | |
разбиение строки в массив по указанному разделителю jquery | |
Метод split осуществляет разбиение строки в массив по указанному разделителю. | |
Разделитель указывается первым необязательным параметром. Если он не задан - вернется вся строка. | |
Если он задан как пустые кавычки '' - то каждый символ строки попадет в отдельный элемент массива. | |
Вторым необязательным параметром можно указать максимальное количество элементов в получившемся массиве (см. примеры). | |
строка разбита по разделителю "-". В результате получится массив arr: | |
var str = 'Мне-очень-нравится-JavaScript'; | |
var arr = str.split('-'); | |
console.log(arr); | |
>> ['Мне', 'очень', 'нравится', 'JavaScript'] | |
вторым параметром указано максимальное количество элементов в получившемся массиве (2 элемента) | |
var str = 'Мне-очень-нравится-JavaScript'; | |
var arr = str.split('-', 2); | |
console.log(arr); | |
>> ['Мне', 'очень'] | |
==================================================== | |
Подстановка дескрипшина (<meta name="Description" content="" />), если не заполнен в webasyst | |
В начало файла product.html прописать строчку для товара | |
{if $wa->meta('description') == ""}{$wa->meta('description', $product.name)}{/if} | |
Для категории: category.html | |
{if $wa->meta('description') == ""}{$wa->meta('description', $category.name)}{/if} | |
Для страниц page.html | |
{if $wa->meta('description') == ""}{$wa->meta('description', $page.name)}{/if} | |
На страницу отзывов reviews.html | |
{if $wa->meta('description') == ""}{$wa->meta('description', $product.name)}{/if} | |
==================================================== | |
Создание страницы отзывово в webasyst reviews | |
На страницу вставить код: {$wa->easyreviews->show()} | |
==================================================== | |
получение куки smarty webasyst cookie | |
{$select_view = waRequest::cookie('shop_select_view', '', waRequest::TYPE_STRING)} | |
==================================================== | |
Посмотреть все переменные в шаблоне webasyst | |
{wa_tpl_vars} | |
==================================================== | |
Меню категорий раскрыто на том пункте, на странице которого находимся (для темы materialdesine) | |
$("#sidebar-nav .active").parents("ul.collapse[id^='cat']").addClass('in'); | |
==================================================== | |
$('.callback').on('click', function(){ setTimeout(function(){ $('#popup-phone-form .but-row').append('<div><input class="privacy_agreed_btn" type="checkbox" name="privecy_agreed" value="privecy_agreed" checked="checked"></div><span style="color: #000;">С <a target="_blank" class="tooltip-link" href="http://www.chemodanov-production.ru/privacy" style="color: #000; text-decoration: none; font-weight: bold;">политикой конфиденциальности</a> согласен</span>'); },2000); }); | |
ссылка онклик | |
$('a[data-href]').on('click', function(){ | |
window.location = $(this).data('href'); | |
}); | |
<a data-href="link/"></a> | |
modex проверка на главную | |
[[*id:is=`[[++site_start]]`:then=`Это главная страница`:else=`Это не главная страница, а страница с нормером [[*id]]`]] | |
плавная прокрутка по якорю | |
$("#prices").on("click","a", function (event) { | |
//отменяем стандартную обработку нажатия по ссылке | |
event.preventDefault(); | |
//забираем идентификатор бока с атрибута href | |
var id = $(this).attr('href'), | |
//узнаем высоту от начала страницы до блока на который ссылается якорь | |
top = $(id).offset().top; | |
//анимируем переход на расстояние - top за 1500 мс | |
$('body,html').animate({scrollTop: top}, 1500); | |
}); | |
Прописываю в title номер страницы (делал для modx) | |
Снипет PageNumber: | |
<?php | |
/* | |
$page = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; | |
if(!strripos($page, "page")) return ""; | |
$page = parse_url($page, PHP_URL_QUERY); | |
$page = explode("=", $page); | |
return '| страница '.$page[1]; | |
*/ | |
Вывод снипета в шаблоне: [[!PageNumber]] | |
title проброска страниц (bitrix) | |
<title><?$APPLICATION->ShowTitle()?> | |
<? | |
if(strripos($_SERVER['REQUEST_URI'], "PAGEN_1=")){ | |
$param = parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY); | |
$param = explode("=", $param); | |
echo " | страница $param[1]"; | |
} | |
?> | |
</title> | |
PHP проверка на главную | |
<? if($_SERVER['REQUEST_URI'] != "/") echo "<noindex>"?> | |
Скрипт потитики конфиденциальности | |
<script> | |
$(document).ready(function(){ | |
$('.privacy_agreed_btn').click(function(){ | |
if($(this).closest('form').children('.privacy-btn').attr('disabled') === 'disabled'){ | |
$(this).closest('form').children('.privacy-btn').attr('disabled', false).removeClass('disabled-bnt'); | |
} | |
else{ | |
$(this).closest('form').children('.privacy-btn').attr('disabled', true).addClass('disabled-bnt'); | |
} | |
}); | |
}); | |
</script> | |
Добавление id шаблона почтового компоненту | |
<?$APPLICATION->IncludeComponent( | |
"bitrix:main.feedback", | |
"", | |
Array( | |
"EMAIL_TO" => "[email protected]", | |
<?/* здесь указываю id почтового шаблона*/?> | |
"EVENT_MESSAGE_ID" => array( | |
0 => "12", | |
), | |
"OK_TEXT" => "Спасибо, ваше сообщение принято.", | |
"REQUIRED_FIELDS" => array("NAME","EMAIL"), | |
"USE_CAPTCHA" => "N" | |
) | |
);?> | |
каноникал - там где выводится шапка | |
<?php | |
if(strpos($_SERVER['REQUEST_URI'], '?тут параметр пагинации') !== false) { | |
$url = 'http'; | |
if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") { | |
$url .= "s"; | |
} | |
$url .= "://" . $_SERVER["HTTP_HOST"] . strtok($_SERVER["REQUEST_URI"],'?'); | |
echo '<li nk rel="canonical" href="'.$url.'">'; | |
echo '<met a name="robots" content="noindex, follow"/>'; | |
} | |
?> | |
проверка на страницу (использование в битрикс) | |
<? if(substr($_SERVER['REQUEST_URI'],0,strpos($_SERVER['REQUEST_URI'],'?')) == "/kontakty/" || $_SERVER['REQUEST_URI'] == "/kontakty/") :?> | |
код.. | |
<?endif?> | |
======================================================================== | |
title добавил параметр |страница.. с "вычленением" параметра строки из урла типа -catcc-10-p-3.html | |
$param = ""; | |
if(strripos($_SERVER['REQUEST_URI'], "-catcc-")){ | |
$url = $_SERVER['REQUEST_URI']; | |
$url = explode("-p-", $url); | |
$url = explode(".html", $url[1]); | |
if($url[0] == "") $url[0] = "1"; | |
$title = ''.$title.'| ???????? '.$url[0].''; | |
} | |
================================================================================================== | |
Вывод дампа в файл корня сайта | |
file_put_contents("test.txt", print_r($test, TRUE)); | |
================================================================================================== | |
Сотрировка многомерного массива php (решение для хлебных крошек сайта www.epicentr-ltd.ru | |
надо было отсортировать крошки по id категории, чтобы шли по порядку. | |
function myCmp($a, $b) { | |
if ($a['id'] === $b['id']) return 0; | |
return $a['id'] < $b['id'] ? -1 : 1; | |
} | |
uasort($breadcrumbs, 'myCmp'); | |
================================================================================================== | |
Доп. функциональность левого меню для сайта rukuxni | |
jQuery('#leftcont #leazy .parent ul').slideUp(); | |
jQuery('#current ul').slideDown().end().children('a').addClass('open');//parent active | |
jQuery('#current').closest('li.parent.active > a').addClass('open').end().closest('ul').slideDown(); | |
jQuery('#leftcont #leazy .parent > a').each(function(){ | |
jQuery(this).clone().prependTo(jQuery(this).siblings('ul')); | |
}); | |
jQuery('#leftcont #leazy .parent > a').removeAttr('href').addClass('toggle'); | |
jQuery('.toggle').click(function(){ | |
var _this = jQuery(this); | |
_this.toggleClass('open'); | |
if(_this.hasClass('open')){ | |
_this.siblings('ul').slideDown(1000); | |
console.log('slideDown'); | |
} | |
else { | |
_this.siblings('ul').slideUp(1000); | |
console.log('slideUp'); | |
} | |
}); | |
================================================================================================== | |
Подключение дополнительных шрифтов | |
путь к css файлу шрифтов в header... | |
<link href="<?=SITE_TEMPLATE_PATH?>/css/fonts.css" rel="stylesheet"> | |
файл css: | |
@font-face { | |
font-family: 'Deartype'; | |
src: url(../fonts/deartype.otf); | |
} | |
@font-face { | |
font-family: 'Lato-Regular'; | |
src: url(../fonts/Lato-Regular.ttf); | |
} | |
@font-face { | |
font-family: 'MyriadPro'; | |
src: url(../fonts/MyriadProRegular.otf); | |
src: url(../fonts/MyriadProRegular.otf); | |
src: url(../fonts/MyriadProRegular.otf); | |
src: url(../fonts/MyriadProRegular.otf); | |
} | |
..... | |
В соответствующем каталоге файлы шрифтов: /fonts/MyriadProRegular.otf и пр. | |
================================================================================================== | |
Проверка авторизации в webasyst | |
{if $wa->user()->isAuth()}...{/if} | |
================================================================================================== | |
.load("/gallery-3/ .g3"); | |
================================================================================================== | |
вытянуть конкретную характеристику товара | |
<span class="gray als"> | |
{$p = $wa->shop->product($item.product_id)} | |
{$features = $wa->shop->features($p)} | |
{$tip = $p.features|key} | |
{$p.features.$tip[$p.features.$tip|key]} | |
</span> | |
================================================================================================== | |
стилизация скроллбара в chrome... в firefox не работает таким образом | |
::-webkit-scrollbar {width: 12px;height: 12px;} | |
::-webkit-scrollbar-track-piece {background:rgba(0,0,0,0);} | |
::-webkit-scrollbar-thumb:vertical {height:10px;background:#272c35;} | |
::-webkit-scrollbar-thumb:vertical:hover {background:#71CA55;} | |
::-webkit-scrollbar-thumb:horizontal {width:10px;background:#272c35;} | |
::-webkit-scrollbar-thumb:horizontal:hover {background:#71CA55;} | |
================================================================================================== | |
KZGShZc$^jW8tUey6izFjEXS | |
https://sourceforge.net/projects/manjarolinux-community/files/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment