Хак Только код

_kot

Создатель
Сообщения
8
Симпатии
12
Баллы
330
В этой теме предлагаю добавлять "хаки" для расширения функционала.
Делимся кодом и не флудим тему.

Osclass - поиск юзера и его объявлений.
В файл function.php, вашей темы, в самом низу, добавил следующее
PHP:
//mod sz wildcard search
function search_wildcard_usrname($params) {

    if (@$params['sPattern']) {
        $mSearch =  Search::newInstance();
        $query_elements = (array) json_decode($mSearch->toJson());
        $pattern = $query_elements['sPattern'];
        $query_elements['sPattern'] = str_replace(' ', '* ', $pattern) . '*';
        $mSearch->setJsonAlert($query_elements);

        // username search
        $aPattern = explode(' ', $pattern);
        $userNameCond = '';

        foreach ($aPattern as $word) {
            if ($word) $userNameCond .= sprintf(" || %st_item.s_contact_name LIKE '%s%%'", DB_TABLE_PREFIX, $word);
        }

        $mSearch->addConditions("1 = 1 " . $userNameCond);
        $mSearch->addGroupBy(DB_TABLE_PREFIX.'t_item.pk_i_id');
    }
}

osc_add_hook('search_conditions', 'search_wildcard_usrname', 1);
 
Последнее редактирование:

_kot

Создатель
Сообщения
8
Симпатии
12
Баллы
330
Когда пользователь заходит на сайт и начинает что-то искать или заходить и читать объявления, его может посетить мысль разместить объявления. По статистике юзер размещает в той же категории где ищет.
Давайте отследим где находится юзер, в какой категории и поможем ему с автозаполнением категории, если он решит разместить объявление

В файле function.php вашей темы в самом низу добавим код
PHP:
function sz_item_post_url_in_category() {

    $search_cat_id = osc_search_category_id();
    $search_cat_id = isset($search_cat_id[0]) ? $search_cat_id[0] : 0;
    $search_cat_parent = Category::newInstance()->findByPrimaryKey($search_cat_id);
    $search_cat_parent =   $search_cat_parent['fk_i_parent_id'];
    osc_selectable_parent_categories() ? $allow_cat_parent = true :  $allow_cat_parent  = false;

    if ($search_cat_id && $search_cat_parent  || osc_is_ad_page()  || $allow_cat_parent) {

        if ( osc_rewrite_enabled() ) {

            osc_is_ad_page()   ?   $path = osc_base_url() . osc_get_preference('rewrite_item_new') . '/' . osc_item_category_id()
                            :   $path = osc_base_url() . osc_get_preference('rewrite_item_new') . '/' . osc_search_category_id()[0];
        } else {
            osc_is_ad_page()   ?   $path = sprintf(osc_base_url(true) . '?page=item&action=item_add&catId=%d', osc_item_category_id())
                            :   $path = sprintf(osc_base_url(true) . '?page=item&action=item_add&catId=%d', osc_search_category_id()[0]);
        }

    } else {

            //default url
            $path = osc_item_post_url();

    }
    return $path;
}

В файлах вашей темы находим osc_item_post_url(); и меняем на sz_item_post_url_in_category();


В большинстве тем для моб версий используется JS, что-бы это работало везде добавим немного кода )
В файле head.php найдем любой JS, там объявим переменные
JavaScript:
var osc_selectable_parent_categories = '<?php echo osc_selectable_parent_categories() ? 1 : 0 ; ?>';
var osc_is_search_page = '<?php echo osc_is_search_page() ? 1 : 0; ?>';
var osc_rewrite_enabled = '<?php echo osc_rewrite_enabled() ? 1 : 0; ?>';
var osc_item_post_url = '<?php echo osc_item_post_url(); ?>';

Дальше добавим код в основной JS файл вашей темы, это может быть global.js, main.js и т.д.
JavaScript:
if (osc_is_search_page == 1) {

        $("a#myBtn, a.publish").click(function (e) {
            e.preventDefault();
            catId = document.getElementById("sCatId").value;
            mainCat = document.getElementById("sMainCategory").value;

            if (osc_rewrite_enabled == 1) {

                if (mainCat == 0 && osc_selectable_parent_categories == 0) {
                    window.location.replace(osc_item_post_url);
                } else if (osc_selectable_parent_categories == 1) {
                    window.location.replace(osc_item_post_url + '/' + catId);
                } else {
                    window.location.replace(osc_item_post_url + '/' + catId);
                }

            } else {

                if (mainCat == 0 && osc_selectable_parent_categories == 0) {
                    window.location.replace(osc_item_post_url);
                } else if (osc_selectable_parent_categories == 1) {
                    window.location.replace(osc_item_post_url + '&catId=' + catId);
                } else {
                    window.location.replace(osc_item_post_url + '&catId=' + catId);
                }


            }

        });
    }

Селекторы как - a#myBtn, a.publish для каждой темы разные
Принцип в общем ясен ! )
 
  • Мне нравится
Симпатии: dmx
Верх