Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.
Всего найдено: 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"] {
****} -
-
-
-
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 уже доступна к установке.
Блоги
-
24.04.2024
-
Выпустили новую сборку DIAFAN.CMS 7.1.4.
Блоги
-
12.01.2024
-
В данном руководстве познакомим вас с панелью управления DIAFAN.CMS