Skip to content

Instantly share code, notes, and snippets.

@alex28742
Last active April 19, 2024 07:14
Show Gist options
  • Save alex28742/9c044373a377729378f3 to your computer and use it in GitHub Desktop.
Save alex28742/9c044373a377729378f3 to your computer and use it in GitHub Desktop.
<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">&nbspруб.
</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" => "a.kopnin@pr-up.ru",
<?/* здесь указываю 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