Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Примеры плагинов

Примеры плагинов

http://www.shopos.ru/plugins/examples/

0. Установка и удаление плагина

<?php
    //функции для установки, удаления плагина

    //функция для установки имеет вид имя_файла_install()
    function test0_install()
    {
        global $db;
        // чаще всего при установке плагина требуется выполнить какие то запросы или добавить какие либо опции к плагину
        $db->query('drop table if exists '.DB_PREFIX.'test');     

        $db->query("CREATE TABLE ".DB_PREFIX."test(
        test_id int NOT NULL auto_increment,
        product_id int NOT NULL,
        PRIMARY KEY (test_id)
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;");
    }

    //функция для установки имеет вид имя_файла_remove()
    function test0_remove()
    {
        global $db;
        //удаляем базу при удалении плагина
        $db->query('drop table if exists '.DB_PREFIX.'test');   
    }

?>


для пример смотреть любой плагин

Скачать пример 0

1. Создание страниц

<?php
    //страница в магазине
    // страница доступна по адресу http://магазин/index.php?page=test1_page1

    add_action('page', 'test1_page1');

    // страница доступна по адресу http://магазин/index.php?main_page=test1_page2
    add_action('main_page', 'test1_page2');

    // страницы доступны в дминке

    // страница доступна по адресу http://магазин/admin/plugins_page.php?page=test1_page_admin
    add_action('page_admin', 'test1_page_admin');

    // страница доступна по адресу http://магазин/admin/plugins_page.php?main_page=test1_main_page_admin
    add_action('main_page_admin', 'test1_main_page_admin');

    function test1_page1()
    {
        echo 'Тестовая страница';
    }   

    function test1_page2()
    {
        echo 'Тестовая страница 2';
    }

    function test1_page_admin()
    {
        echo 'Тестовая страница в админке';
    }

    function test1_main_page_admin()
    {
        echo 'Тестовая страница в админке 2';
    }



?>

Примеры плагинов
Примеры плагинов
Примеры плагинов
Примеры плагинов

смотреть так же плагин vote

Скачать пример 1

2. Создание блока

блок будет доступен после добавление метки {$my_box}  в шаблон themes/шаблон/index.html




<?php
//Создание блока

//блок будет доступен после добавление метки {$my_box}  в шаблон themes/шаблон/index.html
add_action('box', 'my_box');

function my_box()
{
    $title = 'Мой блок';
$content = 'Содержимое блока';

    return array('title' => $title, 'content' =>$content);
}
?>


Примеры плагинов
Примеры плагинов

смотреть так же плагин vote

Скачать пример 2

3. Работа с блоками. Замена одного блока на другой

<?php
// заменить один блок, на другой
//замена блока вывода списка категорий на блок "Мой блок 2"
rewrite_action('box', 'box_CATEGORIES', 'my_box2');
 
function my_box2()
{
    $title = 'Мой блок 2';
$content = 'Содержимое блока 2';

    return array('title' => $title, 'content' =>$content);
}
?>


смотреть так же плагин cat_drop_down

4. Опции и локализации плагина

test4.php
<?php
    //Опции плагинв

    function test4_install()
    {
        //test4_radio - название опции
        //false текущее значение
        //radio - тип опции
        // array('true','false') - варианты значения опции
        add_option('test4_radio', 'false', 'radio', "array('true','false')");
       
        add_option('test4_checkbox', 'false', 'checkbox', "array('true','false')");
       
        //для вывода блока для ввода текст <input type="text">
        add_option('test4_radio1', 'текст 1', 'input');
        //или вот так
        add_option('test4_radio2', 'текст 2');
       
        add_option('test4_textarea', 'поле textarea', 'textarea');

        //поле readonly. только для вывода данныз
        //данные берутся из функции test4_readonly()

        add_option('test4', '', 'readonly');
    }

    function test4_readonly()
    {
        echo '<font color="red">Вывод данных опции readonly</font>';
    }
?>


//файл локализации
// код_языка.php
ru.php

<?php
  //test4_radio - название опции
  $lang['test4_radio'] = 'Опция test4_radio';
  $lang['test4_radio_desc'] = 'Описание опции test4_radio';
 
  $lang['test4_radio1'] = 'Опция test4_radio1';
  $lang['test4_radio1_desc'] = 'Описание опции test4_radio1';
 
  $lang['test4_radio2'] = 'Опция test4_radio2';
  $lang['test4_radio2_desc'] = 'Описание опции test4_radio2';
 
  $lang['test4_checkbox'] = 'Опция test4_checkbox';
  $lang['test4_checkbox_desc'] = 'Описание опции test4_checkbox';
 
  //test4_textarea - название опции
  $lang['test4_textarea'] = 'Опция test4_textarea';
  $lang['test4_textarea_desc'] = 'Описание опции test4_textarea';
 
?>


вот что получилось

Примеры плагинов

Скачать пример 4


5. Добавление вкладок в редакторе товаров и категорий

Работает только на версии 2.5.6 и выше

<?php
    //только для версии 2.5.6 и выше
   
    //добавление вкладки в редактор товаров
    add_filter('news_product_add_tabs', 'test6_news_product_add_tabs');

    function test6_news_product_add_tabs($array)
    {

        $array['values'][] =  array(
        'tab_name' => 'test6',
        'tab_content' => 'Текст вкладочки test6' );

        return $array;
    }
   
    add_filter('news_category_add_tabs', 'test6_news_category_add_tabs');

    function test6_news_category_add_tabs($array)
    {

        $array['values'][] =  array(
        'tab_name' => 'test6',
        'tab_content' => 'Текст вкладки test6 для категорий' );

        return $array;
    }

?>


Примеры плагинов
Примеры плагинов



6. Блок со своим html файлом

Стоит заметить, что название папки плагина, должно совпадать с названием PHP файла плагина
Т.е. если мы назвали папку simple_box, то и файл в котором будет уже какой-то код плагина тоже должен иметь такое название, то есть simple_box.php

Работает система по такому принципу
add_action('box', 'simple_box'); - добавляем так называемый экшон
первым аргументом(?) является что именно мы делаем. В данном случае box означает, что добавляем именно бокс (блок)
вторым аргументов является название функции которая будет вызываться после включения плагина.

То есть, чтобы все заработало, нужно добавить функцию

function simple_box()
{
// code
}


Теперь разберем содержимое функции simple_box()
<?php
function simple_box()
{
// Для того, чтобы в функции можно было работать со Smarty
// нужно вызвать глобальную переменную $osTemplate
global $osTemplate;

// вызываем класс osTemplate
$box = new osTemplate;

// указывает на то, что директорией для шаблона является папка плагина.
// то есть, чтобы $box->fetch подхватывал файлы шаблона именно из папки плагина
$box->template_dir = plugdir();

// какой файл будет отвечать за вывод шаблона блока.
// так же, в этот файл нужно будет передавать нужные данные для отображения
// но передача вывода данных - другая тема (возможно следующая)
$_box_value = $box->fetch('simple_box.html');

// переменная smarty которая и будет, собственно, выводить блок.
// переменная $_box_value содержит в себе подключение файла блока
// SIMPLE_BOX - может иметь любое название
// эту переменную необходимо будет разместить в index.html вашего шаблона
$osTemplate->assign('SIMPLE_BOX', $_box_value);
}
?>


Теперь в папке нашего плагина создадим HTML файл simple_box.html
И напишем в нем буквально одно слово - Привет

После этого откроем файл шаблона index.html и в удобное место вставим переменную {$SIMPLE_BOX}
Далее, включаем наш плагин, переходим на главную и видим слово "Привет" в том месте. где установили {$SIMPLE_BOX}

Конечным вариантов файл плагина будет такой
<?php
/*
Plugin Name: Название плагина
Plugin URI: Ссылка на плагин
Version: Версия плагина
Description: Описание плагина
Author: Автор плагина
Author URI: Ссылка на автора (блог, личный сайт и т.д..)
Plugin Group: Группа (можно сортировать плагины по круппам, если таковые задавать)
*/

// Добавляем экшон
add_action('box', 'simple_box');

// функция для экшона simple_box
function simple_box()
{
// Для того, чтобы в функции можно было работать со Smarty
// нужно вызвать глобальную переменную $osTemplate
global $osTemplate;

// вызываем класс osTemplate
$box = new osTemplate;

// указывает на то, что директорией для шаблона является папка плагина.
// то есть, чтобы $box->fetch подхватывал файлы шаблона именно из папки плагина
$box->template_dir = plugdir();

// какой файл будет отвечать за вывод шаблона блока.
// так же, в этот файл нужно будет передавать нужные данные для отображения
// но передача вывода данных - другая тема (возможно следующая)
$_box_value = $box->fetch('simple_box.html');

// переменная smarty которая и будет, собственно, выводить блок.
// переменная $_box_value содержит в себе подключение файла блока
// SIMPLE_BOX - может иметь любое название
// эту переменную необходимо будет разместить в index.html вашего шаблона
$osTemplate->assign('SIMPLE_BOX', $_box_value);
}
?>


Сам плагин прикреплен к посту
Если что-то не так описал - сори!


7. Работа с товарами категорий

будет доступно после релиза 2.5.8 версии

пример добавление картинки new после имени товара.

<?php
    add_filter('products_listing', 'products_listing_func');
   
    function products_listing_func( $value )
    {
        $value['PRODUCTS_NAME'] .= ' <img src="'.plugurl().'new.gif" />';

        return $value;
    }
?>


пример добавления новой метки

<?php
    add_filter('products_listing', 'products_listing_func');
   
    function products_listing_func( $value )
    {
        //для всех товаров добавляется метка {$module_data.demo}
        $value['demo'] = ' test';

        return $value;
    }

?>


и в шаблоне themes\шаблон\module\product_listing\product_listing~.html

в цикле вывода товаров можно использовать нашу новую метку {$module_data.demo}

{foreach name=aussen item=module_data from=$module_content}
{php}$col++;{/php}
......
{$module_data.demo}
....
{/foreach}



какие вообще параметры можно фильтровать можно посмотреть так

add_filter('products_listing', 'products_listing_func');
   
    function products_listing_func( $value )
    {
        print_r($value );

        return $value;
    }

?>


для наших 4ех товаров в категории выводится следующее

Array
(
    => HP 2133
    =>
    => 0
    =>
    => 73
    =>
    => http://shopos/shopos/images/product_images/thumbnail_images/../noimage.gif
    => http://shopos/shopos/product_info.php?products_id=73
    =>  15.000,0 руб.
    => 15000
    =>
    =>  +<a href="http://shopos/shopos/popup_content.php?coID=1" target="_blank" onclick="window.open('http://shopos/shopos/popup_content.php?coID=1', 'popUp', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=395,height=320'); return false;">доставка</a>
    => <a href="http://shopos/shopos/index.php?action=buy_now&BUYproducts_id=73&cat=2"><img src="http://shopos/shopos/themes/cleanshop/buttons/ru/button_buy_now.gif" alt="Купить 'HP 2133'" title=" Купить 'HP 2133' " /></a>
    => <a href="http://shopos/shopos/index.php?action=buy_now&BUYproducts_id=73&cat=2"><img src="http://shopos/shopos/themes/cleanshop/buttons/ru/cart_big.gif" alt="" /></a>
    => 3-4 дня
    =>
    =>
    =>
    =>
    =>
    => 0
)
Array
(
    => HP PAVILION dv5-1040er
    =>
    => 0
    =>
    => 80
    =>
    => http://shopos/shopos/images/product_images/thumbnail_images/../noimage.gif
    => http://shopos/shopos/product_info.php?products_id=80
    =>  19.000,0 руб.
    => 19000
    =>
    =>  +<a href="http://shopos/shopos/popup_content.php?coID=1" target="_blank" onclick="window.open('http://shopos/shopos/popup_content.php?coID=1', 'popUp', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=395,height=320'); return false;">доставка</a>
    => <a href="http://shopos/shopos/index.php?action=buy_now&BUYproducts_id=80&cat=2"><img src="http://shopos/shopos/themes/cleanshop/buttons/ru/button_buy_now.gif" alt="Купить 'HP PAVILION dv5-1040er'" title=" Купить 'HP PAVILION dv5-1040er' " /></a>

    => <a href="http://shopos/shopos/index.php?action=buy_now&BUYproducts_id=80&cat=2"><img src="http://shopos/shopos/themes/cleanshop/buttons/ru/cart_big.gif" alt="" /></a>
    => 3-4 дня
    =>
    =>
    =>
    =>
    => Core 2 Duo 2000Mhz/15.4"/2048Mb/250.0Gb/DVD-RW
    => 0
)
Array
(
    => HP 550
    =>
    => 0
    =>
    => 71
    =>
    => http://shopos/shopos/images/product_images/thumbnail_images/../noimage.gif
    => http://shopos/shopos/product_info.php?products_id=71
    =>  20.000,0 руб.
    => 20000
    =>
    =>  +<a href="http://shopos/shopos/popup_content.php?coID=1" target="_blank" onclick="window.open('http://shopos/shopos/popup_content.php?coID=1', 'popUp', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=395,height=320'); return false;">доставка</a>
    => <a href="http://shopos/shopos/index.php?action=buy_now&BUYproducts_id=71&cat=2"><img src="http://shopos/shopos/themes/cleanshop/buttons/ru/button_buy_now.gif" alt="Купить 'HP 550'" title=" Купить 'HP 550' " /></a>
    => <a href="http://shopos/shopos/index.php?action=buy_now&BUYproducts_id=71&cat=2"><img src="http://shopos/shopos/themes/cleanshop/buttons/ru/cart_big.gif" alt="" /></a>
    => 3-4 дня
    =>
    =>
    =>
    =>
    =>
    => 0
)
Array
(
    => HP 6730s
    =>
    => 0
    =>
    => 78
    =>
    => http://shopos/shopos/images/product_images/thumbnail_images/../noimage.gif
    => http://shopos/shopos/product_info.php?products_id=78
    =>  37.800,0 руб.
    => 37800
    =>
    =>  +<a href="http://shopos/shopos/popup_content.php?coID=1" target="_blank" onclick="window.open('http://shopos/shopos/popup_content.php?coID=1', 'popUp', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=395,height=320'); return false;">доставка</a>

    => <a href="http://shopos/shopos/index.php?action=buy_now&BUYproducts_id=78&cat=2"><img src="http://shopos/shopos/themes/cleanshop/buttons/ru/button_buy_now.gif" alt="Купить 'HP 6730s'" title=" Купить 'HP 6730s' " /></a>
    => <a href="http://shopos/shopos/index.php?action=buy_now&BUYproducts_id=78&cat=2"><img src="http://shopos/shopos/themes/cleanshop/buttons/ru/cart_big.gif" alt="" /></a>
    => 3-4 дня
    =>
    =>
    =>
    =>
    =>
    => 0
)


p.s. шаблон нужно подправить. чтобы метка с именем товара не выводилась во всяких alt.
p.s. {$module_data.PRODUCTS_SHORT_DESCRIPTION|os_truncate:200} нужно резать не в шаблоне, а в php. иначе добавить нельзя будет ничего после краткого описания с помощью фильтров. все обрежется

чтобы работало на более старых версиях

заменить modules\product_listing.php

на прикрепленный


8. Работа с кнопками

для примера плагин buttons

<?php
/*
Plugin Name: Buttons
Plugin URI: http://www.shopos.ru/
Version: 1.0
Author: Матецкий Евгений
Author URI: http://www.shopos.ru/
*/

/*
нельзя изменить
кнопки
print.gif
icon_arrow2.gif
button_quick_find.gif
button_ask_a_question.gif
button_add_quick.gif
*/

add_filter('button_write', 'button_write_filter');
add_filter('button_view', 'button_view_filter');
add_filter('button_download', 'button_download_filter');
add_filter('button_checkout', 'button_checkout_filter');
add_filter('button_add_address', 'button_add_address_filter');
add_filter('button_continue', 'button_continue_filter');
add_filter('button_login', 'button_login_filter');
add_filter('button_update_cart', 'button_update_cart_filter');
add_filter('button_update', 'button_update_filter');
add_filter('button_redeem', 'button_redeem_filter');
add_filter('button_send', 'button_send_filter');
add_filter('button_admin', 'button_admin_filter');
add_filter('button_change_address', 'button_change_address_filter');
add_filter('button_search', 'button_search_filter');
add_filter('button_print_schet', 'button_print_schet_filter');
add_filter('button_print_kvitancia', 'button_print_kvitancia_filter');
add_filter('button_in_cart', 'button_in_cart_filter');
add_filter('button_print', 'button_print_filter');
add_filter('button_affiliate_banners', 'button_affiliate_banners_filter');
add_filter('button_affiliate_sales', 'button_affiliate_sales_filter');
add_filter('button_affiliate_clickthroughs', 'button_affiliate_clickthroughs_filter');
add_filter('button_confirm_order', 'button_confirm_order_filter');
add_filter('button_cart_big', 'button_cart_big_filter');
add_filter('button_login_small', 'button_login_small_filter');
add_filter('button_small_view', 'button_small_view_filter');
add_filter('button_small_edit', 'button_small_edit_filter');
add_filter('button_small_delete', 'button_small_delete_filter');
add_filter('button_edit_product', 'button_edit_product_filter');
add_filter('button_buy_now', 'button_buy_now_filter');
add_filter('button_edit_article', 'button_edit_article_filter');
add_filter('button_back', 'button_back_filter');
add_filter('button_delete', 'button_delete_filter');


/*
//кнопка
$_array = array('img' => 'button_download.gif',
                                'href' => os_href_link('media/products/'.$content_data['content_file']),
'alt' => TEXT_DOWNLOAD,
'code' => ''
);

$_array = apply_filter('button_download', $_array);

if (empty($_array['code']))
{
  $_array['code'] = '<a href="'.$_array['href'].'">'.os_image_button($_array['img'], $_array['alt']).'</a>';
}

$button = $_array['code'];
*/
//кнопка button_write_review.gif. Добавить отзыв
function button_write_filter($_value)
{   
  return $_value;
}

//button_view.gif Отзыв
function button_view_filter($_value)
{
  return $_value;
}

//button_download.gif Загрузить
function button_download_filter($_value)
{
  return $_value;
}

//button_checkout.gif / Оформить
function button_checkout_filter($_value)
{
  return $_value;
}

//button_add_address.gif / Добавить отзыв
function button_add_address_filter($_value)
{
  $_value['img'] = 'small_delete.gif';
  return $_value;
}

//button_continue.gif / Продолжить
function button_continue_filter($_value)
{
  //$_value['code'] = 'ddd';
  return $_value;
}

//button_login.gif / Продолжить
function button_login_filter($_value)
{
  return $_value;
}

//button_update_cart/ Обновить
function button_update_cart_filter($_value)
{
  //$_value['img'] = 'button_search.gif';
  return $_value;
}

//button_update.gif/ Обновить
function button_update_filter($_value)
{
  // $_value['img'] = 'button_search.gif';
  return $_value;
}

//button_redeem.gif/ использовать
function button_redeem_filter($_value)
{

  return $_value;
}

//button_send.gif/ Отправить
function button_send_filter($_value)
{

  return $_value;
}

//button_admin.gif/ Админка
function button_admin_filter($_value)
{
  $_value['code'] = 'dddd';
  return $_value;
}

//button_change_address.gif/ Изменить
function button_change_address_filter($_value)
{
  $_value['code'] = 'dddd';
  // print_r($_value);
  return $_value;
}

//button_search.gif/ Поиск
function button_search_filter($_value)
{
  //$_value['code'] = 'Поиск';
  // print_r($_value);
  return $_value;
}

//button_print_schet.gif  счет
function button_print_schet_filter($_value)
{
  //$_value['code'] = 'Поиск';
  // print_r($_value);
  return $_value;
}

//button_print_kvitancia.gif квитанция
function button_print_kvitancia_filter($_value)
{
  //$_value['code'] = 'Поиск';
  // print_r($_value);
  return $_value;
}

//button_in_cart.gif в корзину
function button_in_cart_filter($_value)
{
  return $_value;
}

//button_print.gif Рапечатать
function button_print_filter($_value)
{
  $_value['code']  = '<a href="'.$_value['href'].'">print</a>';
  return $_value;
}

//button_affiliate_banners.gif Баннеры
function button_affiliate_banners_filter($_value)
{
  $_value['code'] = 'ddd';
  return $_value;
}

//button_affiliate_sales.gif Продажи
function button_affiliate_sales_filter($_value)
{
  return $_value;
}

//button_affiliate_clickthroughs.gif Клики
function button_affiliate_clickthroughs_filter($_value)
{
  return $_value;
}

//button_confirm_order.gif Клики
function button_confirm_order_filter($_value)
{
  return $_value;
}

//cart_big.gif купить
function button_cart_big_filter($_value)
{
  return $_value;
}

//button_login_small.gif купить
function button_login_small_filter($_value)
{
  return $_value;
}

//small_view.gif смотреть
function button_small_view_filter($_value)
{
  // $_value['code'] = 'see!';
  return $_value;
}

//small_edit.gif Редактировать
function button_small_edit_filter($_value)
{
  //$_value['code'] = 'Редактировать';
  return $_value;
}

//small_delete.gif Удалить
function button_small_delete_filter($_value)
{
//  $_value['code'] = 'Удалить';
  return $_value;
}

//edit_product Изменить
function button_edit_product_filter($_value)
{
  $_value['code'] = '<font color="red">edit</font>';
  return $_value;
}

//button_buy_now купить
function button_buy_now_filter($_value)
{
  $_value['code'] = '<font color="red">купить</font>';
  return $_value;
}

//edit_article.gif Редактировать
function button_edit_article_filter($_value)
{
  $_value['code'] = '<font color="red">Редактировать</font>';
  return $_value;
}

//button_back.gif Назад
function button_back_filter($_value)
{

  $_value['code'] = '<font color="red">Назад</font>';
 
  return $_value;
}

//button_delete.gif Удалить
function button_delete_filter($_value)
{

  $_value['code'] = '<font color="red">Удалить</font>';
 
  return $_value;
}


?>


9. Работа с метками в шаблоне

работает с версии 2.5.8 и выше

Можно добавлять метки во все шаблоны сразу

код плагина

=  'banner';
 
      return $array;
  }
?>


после включения плагина

метка {$banner} будет доступна во всех *.html шаблонах
....


10. Замена кнопок Купить на текст

В папке plugins либо шаблона, либо modules/plugins создать файл, например button_buy_now_plug.php

В него вставить нижеприведенный код

<?php
/*
Plugin Name: Замена кнопки Купить
Description: Плагин убирает картинку и заменяет ее текстом
Version: 1.0
*/

add_filter('button_cart_big', 'button_buy_now_plug_filter');

function button_buy_now_plug_filter($_value)
{
$_value['code'] = '<a href="'.$_value['href'].'" title="'.IMAGE_BUTTON_IN_CART.'">'.ICON_CART.'</a>';
return $_value;
}

?>


Собственно, <a href="'.$_value['href'].'" title="'.IMAGE_BUTTON_IN_CART.'">'.ICON_CART.'</a> и есть ссылка с титлом и т.д..
Тексты тянутся из языкового файла langs\язык\lang.php. т.е. используются тексты которые там уже есть.

В файле класса товара includes\classes\product.php
есть два метода(функции, кому как)
function getBuyNowButton
и
function getBuyNowButtonNew

каждая кнопка собирается из массива, на который повешен фильтр
в данном случае на первую $_array = apply_filter('button_buy_now', $_array);
на вторую $_array = apply_filter('button_cart_big', $_array);

Через плагин мы получаем массив кнопок в $_value, а из нее уже можно вытащить что там есть. Нам нужна была только ссылка, соответствено, $_value['href']

Можно заменять сразу две кнопки
<?php
/*
Plugin Name: Замена кнопки Купить
Description: Плагин убирает картинку и заменяет ее текстом
Version: 1.0
*/

add_filter('button_cart_big', 'button_cart_big_plug_filter');
add_filter('button_buy_now', 'button_buy_now_plug_filter');

function button_cart_big_plug_filter($_value)
{
$_value['code'] = '<a href="'.$_value['href'].'" title="'.IMAGE_BUTTON_IN_CART.'">'.ICON_CART.'</a>';
return $_value;
}

function button_buy_now_plug_filter($_value)
{
$_value['code'] = '<a href="'.$_value['href'].'" title="'.IMAGE_BUTTON_IN_CART.'">'.ICON_CART.'</a>';
return $_value;
}

?>


вроде все. у меня работает.


Источник



Copyright ShopOS