Перейти к содержанию
Форум поддержки пользователей VamShop

21.PHP условия для шаблонов


Александр

Рекомендуемые сообщения

В версии 1.70 вамшопа появилась новая фишка - массив категорий, проброшенный в шаблон.

Сама фишка во вложении, можно использовать и на более ранних версиях.

С помощью не хитрых условий, можно для определённой категории добавить вывод кода.

Добавляется в product_info, product_options, или product_listing,
product_reviews.

Например, добавляем ссылку на описание таблиц размеров, ссылка своя для каждой категории:
 

{php}
// глобалим массив, для использования при включённых seo-url
global $category_path_tpl_arr;
$category_path_tpl = $category_path_tpl_arr;
// приводим массив с наименованием категорий в нижний регистр
// чтобы при поиске фразы не зависеть от регистра
function strtolower_utf8($text){
 $text = mb_convert_case($text, MB_CASE_LOWER, "UTF-8");
 return $text;
}
// формируем список ссылок для категорий
$category_path_tpl_lower = array_map( 'strtolower_utf8',  $category_path_tpl_arr );

    if ( in_array( 'рюкзаки', $category_path_tpl_lower )) $table_of_sizes = 'bp_tab.html';
    if ( in_array( 'спальники', $category_path_tpl_lower )) $table_of_sizes = 'sb_tab.html';
    if ( in_array( 'палатки', $category_path_tpl_lower )) $table_of_sizes = 'tent_tab.html';

    if ( in_array( 'велорюкзаки', $category_path_tpl_lower )) $table_of_sizes = 'bike_bp_tab.html';
    if ( in_array( 'велосумки для туризма', $category_path_tpl_lower )) $table_of_sizes = 'bike_pb_tab.html';
    if ( in_array( 'велосумки для города', $category_path_tpl_lower )) $table_of_sizes = 'bike_pb_tab.html';
    if ( in_array( 'женская велоодежда', $category_path_tpl_lower )) $table_of_sizes = 'bike_w_tab.html';
    if ( in_array( 'детская велоодежда', $category_path_tpl_lower )) $table_of_sizes = 'bike_k_tab.html';
    if ( in_array( 'мужская велоодежда', $category_path_tpl_lower )) $table_of_sizes = 'bike_m_tab.html';
    if ( in_array( 'велообувь', $category_path_tpl_lower )) $table_of_sizes = 'bike_shoe_tab.html';
    if ( in_array( 'велоаксессуары', $category_path_tpl_lower )) $table_of_sizes = 'bike_acessory_tab.html';

    if ( in_array( 'зимняя женская одежда', $category_path_tpl_lower )) $table_of_sizes = 'w_tab.html';
    if ( in_array( 'зимняя детская одежда', $category_path_tpl_lower )) $table_of_sizes = 'wk_tab.html';
    if ( in_array( 'зимняя мужская одежда', $category_path_tpl_lower )) $table_of_sizes = 'm_tab.html';
    if ( in_array( 'летняя женская одежда', $category_path_tpl_lower )) $table_of_sizes = 'w_tab.html';
    if ( in_array( 'летняя детская одежда', $category_path_tpl_lower )) $table_of_sizes = 'k_tab.html';
    if ( in_array( 'летняя мужская одежда', $category_path_tpl_lower )) $table_of_sizes = 'm_tab.html';
    if ( in_array( 'термобелье', $category_path_tpl_lower )) $table_of_sizes = 'bl_tab.html';
    if ( in_array( 'головные уборы', $category_path_tpl_lower )) $table_of_sizes = 'headwear_tab.html';
    if ( in_array( 'перчатки', $category_path_tpl_lower )) $table_of_sizes = 'glove_tab.html';

$current_cat = '';
    $current_cat = end( $category_path_tpl); // присвоили текущей категории переменную $current_cat

// варианты поиска в определённом уровне категорий
    if ( strcasecmp( $category_path_tpl[0], 'распродажа' ) == 0 ) $table_of_sizes = 'skidki_tab.html'; // поиск в корневой категории
        if ( strcasecmp( $category_path_tpl_arr[0], 'распродажа' ) == 0 ) $table_of_sizes = 'skidki_tab.html'; // // поиск в корневой категории, через глобальный массив
    if ( strcasecmp( $current_cat, 'РАСПРОДАЖА' ) == 0 ) $table_of_sizes = 'skidki_tab.html'; // поиск в текущей категории

if ( isset( $table_of_sizes ) )
{
    echo '<span class="product_options_field tableofsizes"><a
href="http://site.ru/content/' . $table_of_sizes . '" class="zoom"><img src="images/zoom.png">Таблица размеров</a></span>';
} else {
    echo '&nbsp;';
};

{/php}

vamshop1.69-product_tpl_vars.v4.zip

Ссылка на сообщение
Поделиться на другие сайты

Если хотите, могу выслать multi_in_array, но ф-ция прописана в application_top.php .

Сделана для того, чтобы найти фразу в массиве без учёта регистра и без привязки к utf-8.

 

 

Кстати кое-что подробнее описано тут:

http://php.ru/manual/function.in-array.html

 

Приведу код , а то ссылки имеют свойство со временем пропадать:

 

in_array

(PHP 4, PHP 5)

in_arrayПроверяет, присутствует ли в массиве значение

Описание
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

Ищет в haystack значение needle. Если strict не установлен, то при поиске будет использовано нестрогое сравнение.

Список параметров

 

needle

Искомое значение.

haystack

Массив.

strict

Если третий параметр strict установлен в TRUE тогда функция in_array() также проверит соответствие типов параметра needle и соответствующего значения массива haystack.

Возвращаемые значения

Возвращает TRUE, если needle был найден в массиве, и FALSE в обратном случае.

Список изменений

 

Версия Описание 4.2.0 needle теперь может быть массивом.
Примеры

 

Пример #1 Пример использования in_array()

<?php
$os 
= array("Mac""NT""Irix""Linux");
if (
in_array("Irix"$os)) {
    echo 
"Нашел Irix";
}
if (
in_array("mac"$os)) {
    echo 
"Нашел mac";
}

?>

Второго совпадения не будет, потому что in_array() регистрозависима, таким образом, программа выведет:

Нашел Irix

 

Пример #2 Пример использования in_array() с параметром strict

<?php
$a 
= array('1.10'12.41.13);

if (
in_array('12.4'$atrue)) {
    echo 
"'12.4' найдено со строгой проверкой\n";
}

if (
in_array(1.13$atrue)) {
    echo 
"1.13 найдено со строгой проверкой\n";
}

?>

Результат выполнения данного примера:

1.13 найдено со строгой проверкой

 

Пример #3 Пример использования in_array() с массивом в качестве параметра needle

<?php
$a 
= array(array('p''h'), array('p''r'), 'o');

if (
in_array(array('p''h'), $a)) {
    echo 
"'ph' найдено\n";
}

if (
in_array(array('f''i'), $a)) {
    echo 
"'fi' найдено\n";
}

if (
in_array('o'$a)) {
    echo 
"'o' найдено\n";
}

?>

Результат выполнения данного примера:

  'ph' найдено
  'o' найдено
Ссылка на сообщение
Поделиться на другие сайты
  • 3 weeks later...

В версии 1.70 вамшопа появилась новая фишка - массив категорий, проброшенный в шаблон.

Сама фишка во вложении, можно использовать и на более ранних версиях.

С помощью не хитрых условий, можно для определённой категории добавить вывод кода.

Добавляется в product_info, product_options, или product_listing,

product_reviews.

Например, добавляем ссылку на описание таблиц размеров, ссылка своя для каждой категории:

 

{php}
// глобалим массив, для использования при включённых seo-url
global $category_path_tpl_arr;
$category_path_tpl = $category_path_tpl_arr;
// приводим массив с наименованием категорий в нижний регистр
// чтобы при поиске фразы не зависеть от регистра
function strtolower_utf8($text){
 $text = mb_convert_case($text, MB_CASE_LOWER, "UTF-8");
 return $text;
}
// формируем список ссылок для категорий
$category_path_tpl_lower = array_map( 'strtolower_utf8',  $category_path_tpl_arr );

    if ( in_array( 'рюкзаки', $category_path_tpl_lower )) $table_of_sizes = 'bp_tab.html';
    if ( in_array( 'спальники', $category_path_tpl_lower )) $table_of_sizes = 'sb_tab.html';
    if ( in_array( 'палатки', $category_path_tpl_lower )) $table_of_sizes = 'tent_tab.html';

    if ( in_array( 'велорюкзаки', $category_path_tpl_lower )) $table_of_sizes = 'bike_bp_tab.html';
    if ( in_array( 'велосумки для туризма', $category_path_tpl_lower )) $table_of_sizes = 'bike_pb_tab.html';
    if ( in_array( 'велосумки для города', $category_path_tpl_lower )) $table_of_sizes = 'bike_pb_tab.html';
    if ( in_array( 'женская велоодежда', $category_path_tpl_lower )) $table_of_sizes = 'bike_w_tab.html';
    if ( in_array( 'детская велоодежда', $category_path_tpl_lower )) $table_of_sizes = 'bike_k_tab.html';
    if ( in_array( 'мужская велоодежда', $category_path_tpl_lower )) $table_of_sizes = 'bike_m_tab.html';
    if ( in_array( 'велообувь', $category_path_tpl_lower )) $table_of_sizes = 'bike_shoe_tab.html';
    if ( in_array( 'велоаксессуары', $category_path_tpl_lower )) $table_of_sizes = 'bike_acessory_tab.html';

    if ( in_array( 'зимняя женская одежда', $category_path_tpl_lower )) $table_of_sizes = 'w_tab.html';
    if ( in_array( 'зимняя детская одежда', $category_path_tpl_lower )) $table_of_sizes = 'wk_tab.html';
    if ( in_array( 'зимняя мужская одежда', $category_path_tpl_lower )) $table_of_sizes = 'm_tab.html';
    if ( in_array( 'летняя женская одежда', $category_path_tpl_lower )) $table_of_sizes = 'w_tab.html';
    if ( in_array( 'летняя детская одежда', $category_path_tpl_lower )) $table_of_sizes = 'k_tab.html';
    if ( in_array( 'летняя мужская одежда', $category_path_tpl_lower )) $table_of_sizes = 'm_tab.html';
    if ( in_array( 'термобелье', $category_path_tpl_lower )) $table_of_sizes = 'bl_tab.html';
    if ( in_array( 'головные уборы', $category_path_tpl_lower )) $table_of_sizes = 'headwear_tab.html';
    if ( in_array( 'перчатки', $category_path_tpl_lower )) $table_of_sizes = 'glove_tab.html';

$current_cat = '';
    $current_cat = end( $category_path_tpl); // присвоили текущей категории переменную $current_cat

// варианты поиска в определённом уровне категорий
    if ( strcasecmp( $category_path_tpl[0], 'распродажа' ) == 0 ) $table_of_sizes = 'skidki_tab.html'; // поиск в корневой категории
        if ( strcasecmp( $category_path_tpl_arr[0], 'распродажа' ) == 0 ) $table_of_sizes = 'skidki_tab.html'; // // поиск в корневой категории, через глобальный массив
    if ( strcasecmp( $current_cat, 'РАСПРОДАЖА' ) == 0 ) $table_of_sizes = 'skidki_tab.html'; // поиск в текущей категории

if ( isset( $table_of_sizes ) )
{
    echo '<span class="product_options_field tableofsizes"><a
href="http://site.ru/content/' . $table_of_sizes . '" class="zoom"><img src="images/zoom.png">Таблица размеров</a></span>';
} else {
    echo '&nbsp;';
};

{/php}

 

А где должны лежать htlm файлы с таблицами, в какую папку их вставлять? 

Ссылка на сообщение
Поделиться на другие сайты
  • 9 months later...

А где должны лежать htlm файлы с таблицами, в какую папку их вставлять? 

 

в коде же указано - http://site.ru/content/, можно {$mainpage}content/file.html

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...