подсчет количества объявлений в категориях и подкатегориях и кнопка запомнить меня

Тема в разделе "Boxcode", создана пользователем _han, 30 май 2015.

  1. _han

    _han Создатель

    Регистр.:
    28 дек 2014
    Сообщения:
    28
    Симпатии:
    0
    Всем доброго времени суток, подскажите пожалуйста как сделать подсчет количества объявлений, объектов и статей в категориях и подкатегориях, а также как добавить кнопку "запомнить меня"? Если кто реализовал это чудо, поделитесь или подскажите как и где что править. Буду очень благодарен.
    Версия - boxcode 8.5
     
  2. sarkis

    sarkis

    Регистр.:
    27 фев 2014
    Сообщения:
    249
    Симпатии:
    36
    для того,чтобы сделать подсчет количества объявлений в категории ,вам нужно :

    1) в файле /moduls/doska/doska.php
    добавить код в любое место в конце кода (к примеру ,после функции serias_lvl_num_category)
    Код:
     
    function count_advert($id_category){
      
         $this->kolvo_advert='';
         $db_query="select count(*)
            from ".DB_PREF."advert advert "
            ." where "
            ." n_category=".$id_category." and advert.hide='show' "
            ."  and advert.end_putdate > ".$GLOBALS["timeGlobal"]."   "
            .$this->add_db_query_country().$this->add_db_query_region().$this->add_db_query_city();
           
         $q_ident=obr_db_query($db_query);
         $this->kolvo_advert=mysql_result($q_ident,0);
           
             return ($this->kolvo_advert);
    
        }


    2) заходите в файл /templates/шаблон/moduls/doska/mtemplates/page/category_to_glav_page_site.html


    в цикле ,который начинается с таких строк {foreach from = $mas_category value="category"}

    счетчки ставите так : { $obj_doska->count_advert($category['id_category'])} счетчик для категорий

    а в цикле ,который начинается с таких строк {foreach from = $mas_inferiorcategory value="podcategory" }

    счетчки ставите так : { $obj_doska->count_advert($podcategory['id_category'])} счетчик для подкатегорий


    Все ............
     
  3. _han

    _han Создатель

    Регистр.:
    28 дек 2014
    Сообщения:
    28
    Симпатии:
    0
    Спасибо за столь быстрый ответ, но...

    Чтото не получается в файле /moduls/doska/doska.php добавить код в любое место в конце кода (к примеру ,после функции serias_lvl_num_category:(

    function count_advert($id_category){

    $this->kolvo_advert='';
    $db_query="select count(*)
    from ".DB_PREF."advert advert "
    ." where "
    ." n_category=".$id_category." and advert.hide='show' "
    ." and advert.end_putdate > ".$GLOBALS["timeGlobal"]." "
    .$this->add_db_query_country().$this->add_db_query_region().$this->add_db_query_city();

    $q_ident=obr_db_query($db_query);
    $this->kolvo_advert=mysql_result($q_ident,0);

    return ($this->kolvo_advert);

    }

    Вот часть моего кода в конце:

    else
    {

    $mas_series_num_category = $this->serias_lvl_num_category($num_category);
    if ( $mas_series_num_category )
    {

    $mas_data_category = $this->obj_cache_category->get_data_mas_num($mas_series_num_category);
    $link = $this->dir_http."/alladv/";
    foreach ( $mas_data_category as $one_category )
    {
    $link .= $one_category["united_name_url"]."/";
    $mas_links_series_category[] = array( "link" => $link, "name" => $one_category["name"]);
    }

    }

    после добавления вылетала ошибка.

    И еще в файле /templates/шаблон/moduls/doska/mtemplates/page/category_to_glav_page_site.html

    в цикле ,который начинается с таких строк {foreach from = $mas_category value="category"}
    счетчки ставите так : { $obj_doska->count_advert($category['id_category'])} счетчик для категорий

    а в цикле ,который начинается с таких строк {foreach from = $mas_inferiorcategory value="podcategory" }
    счетчки ставите так : { $obj_doska->count_advert($podcategory['id_category'])} счетчик для подкатегорий

    Тоже похоже чтото не допонял куда именно вставлять или заменять?

    <ul id="tab_gl_page_category_idoska">

    {foreach from = $mas_category value="category"}
    <li class="item">

    <div class="block_name_category_tab_glpage_adv">
    {if $category["image"] }

    и ниже:

    <ul class="list_podcategory_glpage_adv">
    {foreach from = $mas_inferiorcategory value="podcategory" }
    <li>
    <a href="{$obj_doska->forming_all_name_url_category($podcategory['id_category'],'inferior')}">{ $podcategory["name"] }</a>
    </li>
    {/foreach}
    </ul>
     
  4. sarkis

    sarkis

    Регистр.:
    27 фев 2014
    Сообщения:
    249
    Симпатии:
    36
    у вас есть функция

    Код:
     function serias_lvl_num_category($num_category)
         {
          $rez = false;
          if ( isset($this->cache_series_mas_num_category[$num_category]) )
            {
             $rez = $this->cache_series_mas_num_category[$num_category];
            }
           else
             {
              //$rez = search_series_num_lvl_category($this->mas_all_category,$num_category);
              $rez = $this->obj_cache_category->search_series_num_data($num_category);
              $this->cache_series_mas_num_category[$num_category] = $rez;
             }
         
          return ($rez);
         }

    сразу после этой функции добавляете мою функцию ,которую написал выше .

    -------------------------------------------------------------------
    в самом шаблоне есть два цикла для вывода :
    1) категорий {foreach from = $mas_category value="category"}
    2) подкатегорий {foreach from = $mas_inferiorcategory value="podcategory" }

    в каждый цикл (во внутрь ) добавьте соответствующий счетчик
     
  5. _han

    _han Создатель

    Регистр.:
    28 дек 2014
    Сообщения:
    28
    Симпатии:
    0
    ок, спасибо разобрался... видать с утра спал еще )) ... но есть пару моментов:

    1. в категории показывается (0) например "Строительство и ремонт 0" хотя объявления там есть
    2. после добавления объявления в категории и подкатегории цифра кол-ва объявлений не меняется (если конечно через админку в категориях пересохранить какую нибуть категорию)

    Например:
    Строительство и ремонт (0)

    Отделочные материалы (15)
    Строительные материалы (7)
    Разное (1)


    В чем может быть причина?
     
  6. sarkis

    sarkis

    Регистр.:
    27 фев 2014
    Сообщения:
    249
    Симпатии:
    36
    /moduls/doska/filesmodul/forming_to_glav_page_site.php


    $tpl->caching = 0;
    $tpl->cache_lifetime = -1;

    $tpl->template_dir = $this->dir_template_mfile."/page/";

    $tpl->assign($mas_perem);
    $text = $tpl->fetch("category_to_glav_page_site.html",$cache_category == 0 ? true : false);


    Замените свой код на этот ..Он отключает кеш
     
  7. _han

    _han Создатель

    Регистр.:
    28 дек 2014
    Сообщения:
    28
    Симпатии:
    0
    Спасибо, помогло с ПОДкатегориями, но в категориях цифра с нуля не меняется. Вопрос, а отключение кеша на работоспособность доски не повлияет?
     
  8. sarkis

    sarkis

    Регистр.:
    27 фев 2014
    Сообщения:
    249
    Симпатии:
    36
    на работоспособонсть не повлияет ..
    Сорри , данный код не для категорий ,а только для подкатегорий ..Не досмотрел ...
    Позже будет решение
     
  9. _han

    _han Создатель

    Регистр.:
    28 дек 2014
    Сообщения:
    28
    Симпатии:
    0
    понятно, а еще вопрос: для объектов и статей аналогично делать? или там ньюансы есть
     
  10. _han

    _han Создатель

    Регистр.:
    28 дек 2014
    Сообщения:
    28
    Симпатии:
    0
    кнопку "запомнить меня" установил воспользовавшись подсказкой в этой теме: https://www.nulled.cc/threads/215689/page-113

    Может кому пригодится:
    1. в файле hablon_form_enter_site, который лежит в шаблоне вставляем в удобное место:
    <label><input name="save" type="checkbox" value='1'> Запомнить меня</label>

    2. в самом конце кода ищем:
    function focus_pf_login_authorize_light(type)
    {
    var obj_form = document.forms.form_authorize_light;
    //alert(23);
    if ( type == 1 )
    {
    if ( gv_authorize_focus_pf_login ) return;
    obj_form.name_user.value = "";
    }
    else
    {

    }

    и перед последней скобкой вставляем:
    if (isset($_POST['save'])){
    setcookie("login","", time()+604800,"/");
    setcookie("pass","", time()+604800,"/");
    session_destroy();

    }


    Должно получиться так:
    function focus_pf_login_authorize_light(type)
    {
    var obj_form = document.forms.form_authorize_light;
    //alert(23);
    if ( type == 1 )
    {
    if ( gv_authorize_focus_pf_login ) return;
    obj_form.name_user.value = "";
    }
    else
    {
    if ( gv_authorize_focus_pf_password ) return;
    obj_form.password_user.value = "";
    }
    if (isset($_POST['save'])){
    setcookie("login","", time()+604800,"/");
    setcookie("pass","", time()+604800,"/");
    session_destroy();

    }


    }

    Вот и все...
     
    Последнее редактирование: 2 июн 2015