cd project/
rm -rf *.*
composer create-project symfony/website-skeleton .
ln -s public/ public_html
cd project/
rm -rf *.*
composer create-project symfony/website-skeleton .
ln -s public/ public_html
В папку с сайтом
|
1 |
cd site.ru/ |
Композер
|
1 |
curl -sS https://getcomposer.org/installer | php |
Куда ставим base заменить если нужно
|
1 |
php composer.phar create-project --prefer-dist yiisoft/yii2-app-basic basic |
Удаляем паблик и делаем сим линк
|
1 2 |
rm -r -f public_html/ ln -s basic/web public_html |
для ошибок
|
1 |
php requirements.php |
DELETE relations.*, taxes.*, terms.*
FROM wp_term_relationships AS relations
INNER JOIN wp_term_taxonomy AS taxes
ON relations.term_taxonomy_id=taxes.term_taxonomy_id
INNER JOIN wp_terms AS terms
ON taxes.term_id=terms.term_id
WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type=’product’)
Рабочий код в functions.php
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
add_filter( 'request', 'change_requerst_vars_for_product_cat' ); add_filter( 'term_link', 'term_link_filter', 10, 3 ); add_filter( 'post_type_link', 'wpp_remove_slug', 10, 3 ); add_action( 'pre_get_posts', 'wpp_change_request' ); function change_requerst_vars_for_product_cat($vars) { global $wpdb; if ( ! empty( $vars[ 'pagename' ] ) || ! empty( $vars[ 'category_name' ] ) || ! empty( $vars[ 'name' ] ) || ! empty( $vars[ 'attachment' ] ) ) { $slug = ! empty( $vars[ 'pagename' ] ) ? $vars[ 'pagename' ] : ( ! empty( $vars[ 'name' ] ) ? $vars[ 'name' ] : ( ! empty( $vars[ 'category_name' ] ) ? $vars[ 'category_name' ] : $vars[ 'attachment' ] ) ); $exists = $wpdb->get_var( $wpdb->prepare( "SELECT t.term_id FROM $wpdb->terms t LEFT JOIN $wpdb->term_taxonomy tt ON tt.term_id = t.term_id WHERE tt.taxonomy = 'product_cat' AND t.slug = %s", array( $slug ) ) ); if ( $exists ) { $old_vars = $vars; $vars = array( 'product_cat' => $slug ); if ( ! empty( $old_vars[ 'paged' ] ) || ! empty( $old_vars[ 'page' ] ) ) { $vars[ 'paged' ] = ! empty( $old_vars[ 'paged' ] ) ? $old_vars[ 'paged' ] : $old_vars[ 'page' ]; } if ( ! empty( $old_vars[ 'orderby' ] ) ) { $vars[ 'orderby' ] = $old_vars[ 'orderby' ]; } if ( ! empty( $old_vars[ 'order' ] ) ) { $vars[ 'order' ] = $old_vars[ 'order' ]; } } } return $vars; } function term_link_filter( $url, $term, $taxonomy ) { $url = str_replace( "/product-category/", "/", $url ); return $url; } function wpp_remove_slug( $post_link, $post, $name ) { if ( 'product' != $post->post_type || 'publish' != $post->post_status ) { return $post_link; } $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link ); return $post_link; } function wpp_change_request( $query ) { if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query[ 'page' ] ) ) { return; } if ( ! empty( $query->query[ 'name' ] ) ) { $query->set( 'post_type', array( 'post', 'product', 'page' ) ); } } |
Настройки — Постоянные ссылки
/sample-post/ |
Эти настройки контролируют постоянные ссылки товаров.
/product/sample-product/ |
Укороить заголовок или описание по нужному количеству символом
|
1 |
=ЛЕВБ(A6;ПРОСМОТР(33;ПОИСК(" ";A6&" ";СТРОКА($1:$33)))-1) |
33 — нужное количество символов
ПАМЯТКА ПО ЯНДЕКСУ:
Для заголовка 33 символов
Для текста 75 символов
Сразу после строки в файле .htaccess
RewriteBase /
Добавить
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
Добавить стиль в <head></head>
|
1 2 3 4 5 6 |
<style> #change { background-image: url(http://r8086929.bget.ru/wp-content/uploads/2017/03/wok-pic-empty.png); background-size: 100% auto; } </style> |
Добавить скрипт в <head></head>
|
1 2 3 4 5 6 7 |
<script> function change_color(obj) { obj.value && (document.getElementById("change").style.backgroundColor = obj.value); obj.src && (document.getElementById("change").style.backgroundImage = 'url('+obj.src+')'); } </script> |
К объекту фон которого будем заменять привязать id
|
1 2 |
<div id="change" >В этом элементу будет менять фон можно привязать к body или header или footer главное чтобы был id </div> |
Функцию вызова скрипта привязать к элементу у которого будем брать фон:
|
1 |
<img src="/image.jpg" onclick="change_color(this)" /> |
или любой другой элемент у которого задано значение value, пример:
|
1 2 3 |
<div value="/image.jpg" onclick="change_color(this)"> какой то текст или еще что то </div> |
Данному блоку нужно изначально задать ширину и высоту , для фона в пределах которых будет меняться он.
Данный скрипт будет менять забирая значение из элементов где есть функция change_color(this)
Данный код выводит подкатегории заданого id категории на всех страницах категориях — пример использование как фильтр, для активной подкатегории добавляется class=»disabled» -не активный и становится светлым на 25%
Подкатегория выводится как её изображение с размером в 60px
На странице /ваша_тема/woocommerce/archive-product.php
Сразу после <?php get_header();?>
Вставляем код:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?php global $wp_query; $cate = get_queried_object(); $cateID = $cate->term_id;?> <ul class="wsubcategs"> <?php $wsubargs = array( 'hierarchical' => 1, 'show_option_none' => '', 'hide_empty' => 0, 'parent' => 9, 'taxonomy' => 'product_cat' ); $wsubcats = get_categories($wsubargs); foreach ($wsubcats as $wsc){ $thumbnail_id = get_woocommerce_term_meta( $wsc->term_id, 'thumbnail_id', true ); $image = wp_get_attachment_url($thumbnail_id); $cat_arguments = array( 'orderby' => 'name', 'parent' => 0 ); $cats = get_woocommerce_term_meta( $wsc->term_id, 'thumbnail_id', true ); if($cateID != $wsc->term_id) { ?> <li class="subss"> <a href="<?php echo get_term_link( $wsc->slug, $wsc->taxonomy );?>"> <?php echo '<img src="'.$image.'" alt="category image" style="width:60px;">'; ?> </a> </li> <?php } else { ?> <li class="subss kl"> <a class="disabled"> <?php echo '<img src="'.$image.'" alt="category image" style="width:60px;">'; ?> </a> </li> <?php } } ?> </ul> <? ?> |
class=»disabled» — добавляем в конце файла style.css
class=»kl» для li нужен для осветления фотографии , остальные классы для добавляем сами для вывода необходимого расположения, как выравнивание по левой стороне ( в ряд ) или ещё как.
|
1 2 3 4 5 6 7 8 |
a.disabled { pointer-events: none; /* делаем элемент неактивным для взаимодействия */ cursor: default; /* курсор в виде стрелки */ color: #888;/* цвет текста серый */ } .kl { opacity:.25; } |
Вертска код в html
|
1 2 3 |
<div class="block"> <img src="image.gif" alt="" > </div> |
Стили в css
|
1 2 3 4 5 6 7 8 9 10 11 12 |
.block { height: 100px; position: relative; } .block img { position: absolute; margin: auto; left: 0; top: 0; bottom: 0; right: 0; } |
Верстка код в html
|
1 2 3 |
<div class="block2"> <img src="image.gif" alt="" > </div> |
Стили в css
|
1 2 3 4 5 6 7 |
.block2 { display: table-cell; vertical-align: middle; text-align: center; width: 200px; height: 100px; } |
Обязательно задать ширину блока width
Верстка код в html
|
1 2 3 |
<div class="block3"> <img src="image.gif" alt="" > </div> |
Стили в css
|
1 2 3 4 5 6 7 8 |
.block3 { height: 100px; line-height: 100px; text-align: center; } .block3 img { vertical-align: middle; } |
Верстка код в html
|
1 2 3 |
<div class="block4"> <img src="image.gif" alt=""> </div> |
Стили в css
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
.block4 { position: relative; border: 1px solid aqua; width: 100%; height: 100px; } .block4 img { position: absolute; top: 50%; left: 50%; margin-top: -23px; margin-left: -20px; } |
Создаем в /templates/имяшаблона/bitrix/menu/vert/
4 файла:
result_modifier.php
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<$menuList=array(); $lev=0; $lastInd=0; $parents=array(); foreach($arResult as $arItem){ $lev=$arItem['DEPTH_LEVEL']; if($arItem['IS_PARENT']){ $arItem['CHILDREN']=array(); } if($lev==1){ $menuList[]=$arItem; $lastInd=count($menuList)-1; $parents[$lev]=&$menuList[$lastInd]; }else{ $parents[$lev-1]['CHILDREN'][]=$arItem; $lastInd=count($parents[$lev-1]['CHILDREN'])-1; $parents[$lev]=&$parents[$lev-1]['CHILDREN'][$lastInd]; } } $arResult=$menuList;?> |
template.php
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?if(empty($arResult))return; foreach($arResult as $itemIndex=>$arItem){ if($arItem['SELECTED']){ echo '<ul>'; foreach($arItem['CHILDREN'] as $arChild){ $arChildActive=($arChild['SELECTED'])?' class="active"':''; echo '<li'.$arChildActive.'>'; echo '<a href="'.$arChild['LINK'].'">'.$arChild['TEXT'].'</a>'; echo '</li>'; } echo '</ul>'; } }?> |
.left1.menu.php
|
1 |
<?$aMenuLinks=Array?> |
В нужно месте шаблона, для вывода подкатегорий, вставляем код
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?if(!defined("B_PROLOG_INCLUDED")||B_PROLOG_INCLUDED!==true)die(); global $APPLICATION; $aMenuLinksExt=$APPLICATION->IncludeComponent("bitrix:menu.sections","",array( "IS_SEF"=>"Y", "SEF_BASE_URL"=>"", "SECTION_PAGE_URL"=>"/section/#SECTION_CODE#/", "DETAIL_PAGE_URL"=>"/section/#SECTION_CODE#/#ELEMENT_CODE#", "IBLOCK_TYPE"=>"razdel", "IBLOCK_ID"=>"81", "DEPTH_LEVEL"=>"2", "CACHE_TYPE"=>"A", "CACHE_TIME"=>"0", "CACHE_TYPE"=>"A", "CACHE_TIME"=>"3600" ), false ); $aMenuLinks=array_merge($aMenuLinks,$aMenuLinksExt);?> |
В файле template.php
Добавляем классы, стили , стилизуем вывод пунктов.