Вход • Регистрация

Всего найдено: 638

  • 09 сентября 2014 г.
  • Код

    $usapi = new Unisender($this->us_apikey);

    $data_array = array();
    foreach ($arr as $key => $value) {
    $data_array[] = array($value, $this->api_users_rass, 'active');
    }

    return $usapi->importContacts( array('field_names'=>array('email', 'email_list_ids', 'email_status'), 'data'=>$data_array ));

    api_users_rass - id рассылки
    arr - данные пользователей

    http://www.unisender.com/ru/help/api/libs/php/
  • 10 августа 2014 г.
  • примерно так можно "хакнуть" этот момент (не проверено)
    для начала создайте доп-характеристику с именем "Бренд"
    далее добавьте ее в конфигурацию экспорта
    далее в файле
    shop.export.php

    Код

    case 'param':
    if($field["name"] == "Бренд") {
    $brand_id = DB::query_fetch_value("SELECT brand_id FROM {shop}");
    $list[] = $brand_id;
    break;;
    }
    else
    if($field["param_type"] {
    ****
    }
  • 26 июля 2014 г.
  • смотрите в модели в соответствующие функции.
    насколько помню, в фёст пэдж передаются категории, а в блок - непосредственно объекты, потому у вас и не выводится ничего - во вьюхе черкните вначале vd($result); и смотрите чего там есть, а чего нет
  • 24 июля 2014 г.
  • на самом деле не так уж и много, все делается по аналогии с rel_elements, единственное надо учесть что последнее обрабатывается в ядре движка. Соответственно туда надо будет добавлять код. + в скрипты
  • 24 июля 2014 г.
  • сразу не бывает)) вот сейчас вроде как нашел где делал подобное но, как оказалось, почти без изменений ядра.

    может что и пропущу, но в целом примерно так

    Ленивым и непонятливым - не читать

    Код
    class Shop_admin {
    ***
    public $variables = array (
    'otzyvy' => array(
    'type' => 'module',
    'name' => 'otzyvy',
    ),
    );
    ***
    public function edit_variable_otzyvy(){

    $text = ' ';
    $result = DB::query("SELECT s.id, s.[name], s.cat_id, s.site_id FROM {ads} AS s"
    ." INNER JOIN {shop_rel_ads} AS r ON s.id=r.rel_ads_id AND r.element_id=%d"
    ." WHERE s.trash='0'",
    $this->diafan->edit
    );
    while ($row = DB::fetch_array($result))
    {
    $link = $this->diafan->_route->link($row["site_id"], 'ads', $row["cat_id"], $row["id"]);
    $img = DB::query_result("SELECT name FROM {images} WHERE element_id=%d AND module_name='ads' AND trash='0' ORDER BY sort ASC LIMIT 1", $row["id"]);
    $text .= '
    <div class="rel_ads_element" element_id='.$this->diafan->edit.' rel_id="'.$row["id"].'">
    <div class="rel_ads_element_actions">
    <a href="javascript:void(0)" confirm="'.$this->diafan->_('Вы действительно хотите удалить запись?').'" action="delete_rel_ads"><img src="'.BASE_PATH.'adm/img/delete.png" width="15" height="15" alt="'.$this->diafan->_('Удалить').'"></a>
    <a href="'.BASE_PATH.$link.'" target="_blank"><img src="'.BASE_PATH.'adm/img/view.png" width="21" height="13" alt="'.$this->diafan->_('Посмотреть на сайте').'"></a>
    </div>'
    .($img ? '<img src="'.BASE_PATH.USERFILES.'/small/'.$img.'"><br>' : '').$row["name"]
    .'
    <div class="clear"></div>
    </div>';
    }


    echo '
    <script type="text/javascript" src="/modules/shop/admin/admin.rel_ads.js"> </script>

    <tr id="rel_ads_elements">
    <td class="td_first">Связанные отзывы</td>
    <td>
    <div class="rel_ads_elements">'.$text.'</div>
    <a href="javascript:void(0)" class="rel_ads_module_plus" title="Добавить">
    <img src="/adm/img/add_new.png" width="14" height="14" alt="Добавить">
    </a>
    <div class="hide" id="rel_ads_module_container"></div>
    </td>
    </tr>';
    }

    }



    rel_ads.js - реализация аякса в админке
    Код

    ;$(document).ready(function(){
    $(".rel_ads_element").live('mouseover', function(){
    $(this).addClass("hover");
    $(this).find(".rel_ads_element_actions").show();
    });
    $(".rel_ads_element").live('mouseout', function(){
    $(this).removeClass("hover");
    $(this).find(".rel_ads_element_actions").hide();
    });

    $(".rel_ads_element_actions a").live('click', function() {
    var self = $(this);
    if (self.attr("action") != 'delete_rel_ads')
    {
    return true;
    }
    if (! confirm(self.attr("confirm")))
    {
    return false;
    }
    $.ajax({
    url : window.location.href,
    type : 'POST',
    dataType : 'json',
    data : {
    module: "shop",
    action: 'delete_rel_ads',
    element_id : self.parents(".rel_ads_element").attr("element_id"),
    rel_id : self.parents(".rel_ads_element").attr("rel_id"),
    rel_two_sided: $("#rel_ads_elements").attr("rel_two_sided"),
    check_hash_user : $('.check_hash_user').text()
    },
    success : (function(response)
    {
    self.parents(".rel_ads_element").remove();

    if (response.hash)
    {
    $('input[name=check_hash_user]').val(response.hash);
    $('.check_hash_user').text(response.hash);
    }
    })
    });
    return false;
    });

    $(".rel_ads_module_plus").click(function(){
    $.ajax({
    url : window.location.href,
    type : "POST",
    dataType : "json",
    data : {
    module: "shop",
    action: "show_rel_ads",
    },
    success : (function(response)
    {
    //console.log(response);
    if (response.data)
    {
    //console.log(prepare(response.data));
    $("#rel_ads_module_container").html(prepare(response.data));
    $.prettyPhoto.open("#rel_ads_module_container");
    }
    })
    });
    });

    $('.rel_module_navig a').live('click', function() {
    var self = $(this);
    $.ajax({
    url : window.location.href,
    type : 'POST',
    dataType : 'json',
    data : {
    module: "shop",
    action: 'show_rel_ads',
    element_id: $('input[name=id]').val(),
    rel_two_sided: $("#rel_elements").attr("rel_two_sided"),
    page: self.attr("page"),
    search: search,
    cat_id: cat_id,
    check_hash_user : $('.check_hash_user').text()
    },
    success : (function(response)
    {
    if (response.data)
    {
    $(".rel_all_elements_container").html(prepare(response.data));
    }
    if (response.hash)
    {
    $('input[name=check_hash_user]').val(response.hash);
    $('.check_hash_user').text(response.hash);
    }
    })
    });
    return false;
    });


    var search = '';
    var cat_id = '';
    $('.rel_module_search, .rel_module_cat_id').live('keyup change', function() {
    if($(this).is('.rel_module_search'))
    {
    search = $(this).val();
    }
    if($(this).is('.rel_module_cat_id'))
    {
    cat_id = $(this).val();
    }
    $.ajax({
    url : window.location.href,
    type : 'POST',
    dataType : 'json',
    data : {
    module: "shop",
    action: 'show_rel_ads',
    element_id: $('input[name=id]').val(),
    rel_two_sided: $("#rel_elements").attr("rel_two_sided"),
    search: search,
    cat_id: cat_id,
    check_hash_user : $('.check_hash_user').text()
    },
    success : (function(response)
    {
    if (response.data)
    {
    $(".rel_all_elements_container").html(prepare(response.data));
    }
    if (response.hash)
    {
    $('input[name=check_hash_user]').val(response.hash);
    $('.check_hash_user').text(response.hash);
    }
    })
    });
    });


    $('.rel_module a').live('click', function() {
    var self = $(this);
    if (! self.parents('.rel_module').find('div').is('.rel_module_selected'))
    {
    $.ajax({
    url : window.location.href,
    type : 'POST',
    dataType : 'json',
    data : {
    module: "shop",
    action: 'rel_ads',
    rel_id: self.parents(".rel_module").attr("element_id"),
    element_id: $('input[name=id]').val(),
    rel_two_sided: $("#rel_elements").attr("rel_two_sided"),
    check_hash_user : $('.check_hash_user').text()
    },
    success : (function(response)
    {
    //console.log(response);
    self.parents('.rel_module').find('div').addClass('rel_module_selected');
    if (response.data)
    {
    $(".rel_ads_elements").html(prepare(response.data));
    }
    if (response.id)
    {
    $("input[name=id]").val(response.id);
    }
    if (response.hash)
    {
    $('input[name=check_hash_user]').val(response.hash);
    $('.check_hash_user').text(response.hash);
    }
    })
    });
    }
    else
    {
    $.ajax({
    url : window.location.href,
    type : 'POST',
    dataType : 'json',
    data : {
    action: 'delete_rel_element',
    element_id : $('input[name=id]').val(),
    rel_id : self.parents(".rel_module").attr("element_id"),
    rel_two_sided: $("#rel_elements").attr("rel_two_sided"),
    check_hash_user : $('.check_hash_user').text()
    },
    success : (function(response)
    {
    self.parents('.rel_module').find('div').removeClass('rel_module_selected');
    $(".rel_ads_element[rel_id="+self.parents(".rel_ads_module").attr("element_id")+"]").remove();

    if (response.hash)
    {
    $('input[name=check_hash_user]').val(response.hash);
    $('.check_hash_user').text(response.hash);
    }
    })
    });
    }
    return false;
    });

    });



    admin.ajax.php
    Код

    if ($_POST["action"] != "show_rel_goods" !! && $_POST["action"] != "show_rel_ads" !! ) {


    затем чуть ниже
    Код

    case 'show_rel_ads':
    $this->show_rel_ads();
    break;
    case 'rel_ads':
    $this->rel_ads();
    break;
    case 'delete_rel_ads':
    $this->delete_rel_ads();
    break;


    и сами функции управления элементами
    Код

    private function show_rel_ads()
    {
    $name = ! empty($this->diafan->text_for_base_link["variable"]) ? $this->diafan->text_for_base_link["variable"] : 'name';
    if (empty($_POST["element_id"]))
    {
    $_POST["element_id"] = 0;
    }
    $nastr = 16;
    $list = '';
    if (empty($_POST["page"]))
    {
    $start = 0;
    $page = 1;
    if ( ! isset($_POST["search"]) && ! isset($_POST["cat_id"]))
    {
    $list = '<form>'.$this->diafan->_('Поиск') . ': <input type="text" size="30" class="rel_module_search">';
    if($this->diafan->configmodules("cat", $this->diafan->module))
    {
    $result = DB::query("SELECT id, [name], parent_id FROM {".$this->diafan->table."_category} WHERE trash='0' ORDER BY sort ASC");
    while ($row = DB::fetch_array($result))
    {
    $cats[$row["parent_id"]][] = $row;
    }
    $vals = array();
    if(! empty($_POST["cat_id"]))
    {
    $vals[] = $this->diafan->get_param($_POST, "cat_id", 2);
    }
    $list.= ' <select name="cat_id" class="rel_module_cat_id"><option value="">'.$this->diafan->_('Все').'</option>'.$this->diafan->get_options($cats, $cats[0], $vals) . '</select>';
    }
    $list.= '</form><div class="rel_all_elements_container">';
    }
    }
    else
    {
    $page = intval($_POST["page"]);
    $start = ($page - 1) * $nastr;
    }
    $rel_elements = array();
    if ($_POST["element_id"])
    {
    $result = DB::query("SELECT rel_ads_id FROM {".$this->diafan->table."_rel_ads} WHERE element_id=%d", $_POST["element_id"]);
    while ($row = DB::fetch_array($result))
    {
    $rel_elements[] = $row["rel_ads_id"];
    }
    }

    $where = '';
    $inner = '';


    $count = DB::query_result("SELECT COUNT(DISTINCT s.id) FROM {ads} AS s"
    .$inner
    ." WHERE s.trash='0'".$where);
    $result = DB::query_range("SELECT s.id, s.[".$name."] FROM {ads} AS s"
    .$inner
    ." WHERE s.trash='0' ".$where, $start, $nastr);

    while ($row = DB::fetch_array($result))
    {
    $img = DB::query_result("SELECT name FROM {images} WHERE element_id=%d AND module_name='%s' AND trash='0' ORDER BY sort ASC LIMIT 1", $row["id"], 'ads');
    $list .= '<div class="rel_module" element_id="' . $row["id"] . '">
    <div' . (in_array($row["id"], $rel_elements) ? ' class="rel_module_selected"' : '') . '>
    ' . ($img ? '<a href="#"><img src="' . BASE_PATH . USERFILES . '/small/' . $img . '"></a><br>' : '') . '
    <a href="#">' . $this->diafan->short_text($row[$name], 50) . '</a>
    </div>
    </div>';
    }
    $list .= '<div class="clear rel_module_navig">';
    for ($i = 1; $i <= ceil($count / $nastr); $i ++ )
    {
    if ($i != $page)
    {
    $list .= '<a href="#" page="' . $i . '">' . $i . '</a> ';
    }
    else
    {
    $list .= '[' . $i . '] ';
    }
    }
    $list .= '</div>';
    if (empty($_POST["page"]) && ! isset($_POST["search"]))
    {
    $list .= '</div>';
    }

    $this->result["data"] = $list;

    $this->send_json();
    }

    private function rel_ads()
    {
    if (empty($_POST["element_id"]))
    {
    DB::query("INSERT INTO {".$this->diafan->table."} () VALUES ()");
    $_POST["element_id"] = DB::last_id($this->diafan->table);
    $this->result["id"] = $_POST["element_id"];
    }
    if (! DB::query_result("SELECT id FROM {".$this->diafan->table."_rel_ads} WHERE element_id=%d AND rel_ads_id=%d LIMIT 1", $_POST["element_id"], $_POST["rel_id"]) )
    {
    DB::query("INSERT INTO {".$this->diafan->table."_rel_ads} (element_id, rel_ads_id) VALUES (%d, %d)", $_POST["element_id"], $_POST["rel_id"]);
    }

    $element_id = $this->diafan->get_param($_POST, "element_id", 0, 2);
    $name = ! empty($this->diafan->text_for_base_link["variable"]) ? $this->diafan->text_for_base_link["variable"] : 'name';

    $this->result["data"] = '';
    $result = DB::query("SELECT s.id, s.[".$name."], s.cat_id, s.site_id FROM {ads} AS s"
    ." INNER JOIN {".$this->diafan->table."_rel_ads} AS r ON s.id=r.rel_ads_id AND r.element_id=%d"
    ." WHERE s.trash='0'",
    $element_id
    );
    while ($row = DB::fetch_array($result))
    {
    $link = $this->diafan->_route->link($row["site_id"], $this->diafan->table, $row["cat_id"], $row["id"]);
    if($this->diafan->is_variable("images") || $this->diafan->is_variable("image"))
    {
    $img = DB::query_result("SELECT name FROM {images} WHERE element_id=%d AND module_name='%s' AND trash='0' ORDER BY sort ASC LIMIT 1", $row["id"], 'ads');

    }
    $this->result["data"] .= '
    <div class="rel_element" element_id="'.$element_id.'" rel_id="'.$row["id"].'">
    <div class="rel_element_actions">
    <a href="javascript:void(0)" confirm="'.$this->diafan->_('Вы действительно хотите удалить запись?').'" action="delete_rel_element"><img src="'.BASE_PATH.'adm/img/delete.png" width="13" height="13" alt="'.$this->diafan->_('Удалить').'"></a>
    <a href="'.BASE_PATH.$link.'" target="_blank"><img src="'.BASE_PATH.'adm/img/view.png" width="21" height="13" alt="'.$this->diafan->_('Посмотреть на сайте').'"></a>
    </div>'
    .(! empty($img) ? '<img src="'.BASE_PATH.USERFILES.'/small/'.$img.'"><br>' : '').$this->diafan->short_text($row[$name], 50)
    .'
    <div class="clear"></div>
    </div>';
    }

    $this->send_json();
    }


    private function delete_rel_ads()
    {
    DB::query("DELETE FROM {".$this->diafan->table."_rel_ads} WHERE element_id=%d AND rel_ads_id=%d", $_POST['element_id'], $_POST['rel_id']);

    $this->diafan->_cache->delete("", $this->diafan->module);

    $this->send_json();
    }
  • 03 июля 2014 г.
  • если посмотреть на функцию list_query то можноу видеть строку
    " GROUP BY s.id ORDER BY ".($this->diafan->sort ? $this->sort_config['sort_directions'][$this->diafan->sort].',' : '')

    в которой указано, что при наличии сортировки необходимо использовать настройки из sort_config

    То есть, для получения нужного вам результата надо всего то в начале этой функи сделать так:
    $this->diafan->sort = 1:
    1 - в том случае, если настройки не менялись и 1 - это сортировка по цене.

    Если необходима такая сортировка везде - добавьте эту же строку в конструктор класса.
  • 30 июня 2014 г.
  • private function validate()
    в файле registration.ajax.php

    проверка

    $mes = Validate::password($_POST["password"]);
    if ($mes)
    {
    $this->result["errors"]["password"] = $this->diafan->_($mes, false);
    }
    elseif ($_POST["password"] != $_POST["password2"])
    {
    $this->result["errors"]["password"] = $this->diafan->_('Пароли не совпадают', false);
    }

    Убрать последние 4 строки


    На первый взгляд - должно хватить
  • 24 июня 2014 г.
  • Делал.

    1 - в модели магазина пишете запрос на максимальную стоимость товара, ну и минимальную, если 0 не устраивает.
    - выводите его во вьюхе ползунка
    2 - отправляете форму с ползунком аяксом к контроллеру магазина, получаете данные, выводите в подготовленный div (или еще чего), в котором товары выводятся по умолчанию.

  • 27 июня 2014 г.
  • ориентировочно так
    Код

    private function get_min_max_price(){
    $max_price = 0;
    $min_price = 0;
    $r = DB::query("SELECT MAX( sp.price ) as maxprice, MIN( sp.price ) as minprice FROM {shop_price} sp"
    . " Inner join {shop} s"
    . " on s.id=sp.good_id"
    . " WHERE sp.trash = '0' AND s.trash='0'");
    //. " and s.cat_id=%d", $this->diafan->cat);
    $row = DB::fetch_array($r);
    $max_price = $row['maxprice'];
    $min_price = $row['minprice'];


    $res["maxprice"] = $max_price;
    $res["minprice"] = $min_price;
    include_once ABSOLUTE_PATH.'plugins/json.php';
    echo to_json($res);
    return true;
    }
Показывать по:

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум