Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Форум Сообщения пользователя Андрей (koda)


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

Где отредактировать %order ?


Андрей (koda) 2401 сентября 2016 г.

добавить отдельный шаблон письма для админа в modules\cart\cart.action.php
Код
private function send_mails($order_id, $params, $payment)
{
Custom::inc('includes/mail.php');

$cart = $this->diafan->_tpl->get('table_mail', 'cart', $this->diafan->_shop->order_get($order_id));
$cart_admin = $this->diafan->_tpl->get('table_admin_mail', 'cart', $this->diafan->_shop->order_get($order_id));
$payment_name = '';
if($payment)
{
$payment_name = $payment["name"];

Показать весь код
if($payment["payment"] == 'non_cash')
{
$p = DB::query_fetch_array("SELECT code, id FROM {payment_history} WHERE module_name='cart' AND element_id=%d", $order_id);
$payment_name .= ', <a href="'.BASE_PATH.'payment/get/non_cash/ul/'.$p["id"].'/'.$p["code"].'/">'.$this->diafan->_('Счет для юридических лиц', false).'</a>,
<a href="'.BASE_PATH.'payment/get/non_cash/fl/'.$p["id"].'/'.$p["code"].'/">'.$this->diafan->_('Квитанция для физических лиц', false).'</a>';
}
}

$user_email = $this->diafan->_users->mail;
$user_phone = $this->diafan->_users->phone;
$user_fio = $this->diafan->_users->fio;
foreach ($params as $param)
{
if ($param["type"] == "email" && ! empty($_POST["p".$param["id"]]))
{
$user_email = $_POST["p".$param["id"]];
}
if ($param["info"] == "phone" && ! empty($_POST["p".$param["id"]]))
{
$user_phone = $_POST["p".$param["id"]];
}
if ($param["info"] == "name" && ! empty($_POST["p".$param["id"]]))
{
$user_fio = $_POST["p".$param["id"]];
}
}

//send mail admin
$subject = str_replace(array('%title', '%url', '%id', '%message'),
array(TITLE, BASE_URL, $order_id, strip_tags($this->message_admin_param)),
$this->diafan->configmodules('subject_admin', 'shop')
);

$message = str_replace(
array('%title',
'%url',
'%id',
'%message',
'%order',
'%payment',
'%fio'
),
array(
TITLE,
BASE_URL,
$order_id,
$this->message_admin_param,
$cart_admin,
$payment_name,
$user_fio
),
$this->diafan->configmodules('message_admin', 'shop'));

send_mail(
$this->diafan->configmodules("emailconfadmin", 'shop') ? $this->diafan->configmodules("email_admin", 'shop') : EMAIL_CONFIG,
$subject,
$message,
$this->diafan->configmodules("emailconf", 'shop') ? $this->diafan->configmodules("email", 'shop') : ''
);

if(in_array("subscribtion", $this->diafan->installed_modules))
{
if(! empty($user_phone))
{
$phone = preg_replace('/[^0-9]+/', '', $user_phone);
if(! DB::query_result("SELECT id FROM {subscribtion_phones} WHERE phone='%s' AND trash='0'", $user_phone))
{
DB::query("INSERT INTO {subscribtion_phones} (phone, name, created, act) VALUES ('%s', '%h', %d, '1')", $user_phone, $user_fio, time());
}
}
}

//send mail user
if (empty($user_email))
{
return;
}

if(in_array("subscribtion", $this->diafan->installed_modules) && ! empty($_POST['subscribe_in_order']))
{
$row_subscribtion = DB::query_fetch_array("SELECT * FROM {subscribtion_emails} WHERE mail='%s' AND trash='0' LIMIT 1", $user_email);

if(empty($row_subscribtion))
{
$code = md5(rand(111, 99999));
DB::query("INSERT INTO {subscribtion_emails} (created, mail, name, code, act) VALUES (%d, '%s', '%s', '%s', '1')", time(), $user_email, $user_fio, $code);
}
elseif(! $row_subscribtion["act"])
{
DB::query("UPDATE {subscribtion_emails} SET act='1', created=%d WHERE id=%d", $row_subscribtion['id'], time());
}
}

$subject = str_replace(
array('%title', '%url', '%id'),
array(TITLE, BASE_URL, $order_id),
$this->diafan->configmodules('subject', 'shop')
);

$message = str_replace(
array('%title', '%url', '%id', '%message', '%order', '%payment', '%fio'),
array(
TITLE,
BASE_URL,
$order_id,
$this->message_param,
$cart,
$payment_name,
$user_fio
),
$this->diafan->configmodules('message', 'shop')
);
send_mail(
$user_email,
$subject,
$message,
$this->diafan->configmodules("emailconf", 'shop') ? $this->diafan->configmodules("email", 'shop') : ''
);
}

сделать копию modules\cart\views\cart.view.table_mail.php в modules\cart\views\cart.view.table_admin_mail.php
отредактировать шаблон как необходимо.
Во вложении архив с этими модификациями, устанавливать как любое дополнение через темы. Останется только исправить cart.view.table_admin_mail.php.

Узнать количество заполненных карточек с помощью MySQL или по другому


Андрей (koda) 2405 мая 2016 г., редакция 1462425873

Код
select count(id) from diafan_shop where text1!='' and trash='0';

Как добавить "Мы в соцсетях"?


Андрей (koda) 2415 марта 2016 г.

Найти значки соц сетей, например эти, вставить их через визуальный редактор как картинки, сделать ссылками ведущими на соответствующие сети.

сервис ulogin


Андрей (koda) 2412 марта 2016 г.

Если тема уже есть, то нужно в нее зайти, и в поле "Импорт темы" выбрать скачанный архив дополнения. Затем сохранить.

Методы формирующие вид административной части


Андрей (koda) 2412 января 2016 г.

Выводить в списке так:
Код
public function list_variable_update_is($row, $var)
{
return '<div class="update_is">'.($row["update_is"]==1?'включено':'выключено').'</div>';
}

есть еще
Код
'fast_edit' => true


Значения для type:

  1. editor
  2. text
  3. select
  4. numtext
  5. floattext
  6. string

Когда подключено быстрое редактирование:

  1. numtext
  2. text
  3. floattext
  4. editor
  5. textarea
  6. string

Поиск по артикулам на сайте


Андрей (koda) 2407 января 2016 г.

В свое время добавлял в функцию list_search файл shop.model.php
такой код
Код
if(!empty($_GET['article']))// поиск по артикулу
{

$count = DB::query_result(
"SELECT COUNT(DISTINCT s.id) FROM {shop} AS s "
. ($this->diafan->_users->role_id ? " LEFT JOIN {access} AS a ON a.element_id=s.id AND a.module_name='shop' AND a.element_type='element'" : "")
. " WHERE s.[act]='1' AND s.trash='0' and s.id=%d "
." AND s.date_start<=%d AND (s.date_finish=0 OR s.date_finish>=%d)",
intval($_GET['article']), $time, $time
);

Показать весь код
if($count>0)
$this->diafan->redirect(BASE_PATH.$this->diafan->_route->link($this->diafan->_site->id, intval($_GET['article']), 'shop'), '301');
else
$this->result["error"] = $this->diafan->_('Извините, ничего не найдено.', false);
return $this->result;
}

Поиск по артикулу включен и поиск по нему заменен на редирект в случае если такой идентификатор найден. Не готовый рецепт, но для начала достаточно.

Импорт картинок товара при импорте csv файла


Андрей (koda) 2429 декабря 2015 г.

Пробуйте, именно так и работает из коробки.

Импорт картинок товара при импорте csv файла


Андрей (koda) 2424 декабря 2015 г.

При импорте определяется что это ссылка по началу http:// и загружается с внешнего сайта.
Мне приходилось еще добавлять обработку ftp:// если нужно опубликую.

Настройка SSL-сертефиката


Андрей (koda) 2422 декабря 2015 г., редакция 1450782398

Выглядит похожим на правду, но еще подобные алгоритмы есть в админке.
adm/includes/init.php
в функции init
Код
define('BASE_PATH', "http".(isset($_SERVER['HTTP_X_HTTPS']) && $_SERVER['HTTP_X_HTTPS'] != '0' ? "s" : '')."://".getenv("HTTP_HOST")."/".( REVATIVE_PATH ? REVATIVE_PATH.'/' : '' ) );

Настройка SSL-сертефиката


Андрей (koda) 2422 декабря 2015 г.

Возможно вы говорите вот об этой ошибке
Могу скинуть свое решение.

Настройка рассылки по зазакам


Андрей (koda) 2410 декабря 2015 г.

modules/shop/inc/shop.inc.order.php 478 строка
заменить функцию
Код

public function send_mail_change_status($order_id, $status)
{
return;
Custom::inc('includes/mail.php');
$email = ($this->diafan->configmodules("emailconf", 'shop')
&& $this->diafan->configmodules("email", 'shop')
? $this->diafan->configmodules("email", 'shop') : '' );

$lang_id = DB::query_result("SELECT lang_id FROM {shop_order} WHERE id=%d", $order_id);

Показать весь код
if(! $lang_id)
{
$lang_id = $this->diafan->_languages->site;
}
$user_mail = DB::query_result(
"SELECT value FROM {shop_order_param_element} AS e"
." INNER JOIN {shop_order_param} AS p ON p.id=e.param_id AND p.type='email'"
." WHERE e.element_id=%d", $order_id
);
if($user_mail)
{
$status = DB::query_result("SELECT name".$lang_id." FROM {shop_order_status} WHERE id=%d LIMIT 1", $status);

$subject = str_replace(array ( '%title', '%url' ), array ( TITLE, BASE_URL ), $this->diafan->configmodules('subject_change_status', 'shop', 0, $lang_id));

$message = str_replace(array ( '%title', '%url', '%order', '%status' ), array ( TITLE, BASE_URL, $order_id, $status), $this->diafan->configmodules('message_change_status', 'shop', 0, $lang_id));

send_mail($user_mail, $subject, $message, $email);
}
}

Настройка рассылки по зазакам


Андрей (koda) 2409 декабря 2015 г.

Используйте только запрет отсылки, если только это нужно. От лишних функций ничего не будет плохого.

синхронизация с Мой склад


Андрей (koda) 2416 ноября 2015 г.

С 1С и статусам заказа хуже дело обстоит, там нормально сделать только конфигурацию 1с править, обработку выгрузки. Так как приходит только статус "в обработке" остальные 1с не считает нужным присылать, в том числе "выполнен". Протокол не обязывает 1с присылать все статусы, а их там всего пара-тройка.

синхронизация с Мой склад


Андрей (koda) 2416 ноября 2015 г.

Я вот какое решение делал для такого случая
Сделал и на моем складе и на сайте одинаковые статусы заказов, чтобы при синхронизации по имени сопоставлять.
Затем доделал функцию синхронизации заказов
modules/shop/shop.1c.php 504 строка заменить функцию
Код
/**
* Обмен информацией о заказах: отправка файла обмена на сайт
*
* @return void
*/
private function sale_file()
{
$filename = basename($_GET['filename']);

if(preg_match('/\.php$/', $filename))

Показать весь код
{
return;
}

File::save_file(file_get_contents('php://input'), 'tmp/1c/'.$filename);

$xml = simplexml_load_file(ABSOLUTE_PATH.'tmp/1c/'.$filename);

File::delete_file('tmp/1c/'.$filename);

foreach ($xml->Документ as $xml_order)
{
$id = $xml_order->Номер;
list($y, $m, $d) = explode('-', $xml_order->Дата);
list($h, $i, $s) = explode(':', $xml_order->Время);
$created = mktime($h, $i, $s, $m, $d, $y);

$status_name='';
if(isset($xml_order->ЗначенияРеквизитов->ЗначениеРеквизита))
{
foreach($xml_order->ЗначенияРеквизитов->ЗначениеРеквизита as $r)
{
switch ($r->Наименование)
{
case 'Проведен':
$proveden = ($r->Значение == 'true');
break;

case 'ПометкаУдаления':
$udalen = ($r->Значение == 'true');
break;
case 'Статус заказа':
$status_name = strval($r->Значение) ;
break;
}
}
}

if(! empty($udalen))
{
$status = 2;
}
elseif(! empty($proveden))
{
$status = 3;
}
else
{
$status = 0;
}

if(!empty($status_name))
{
$status_id = DB::query_result("SELECT id FROM {shop_order_status} WHERE name1='%s' AND trash='0' LIMIT 1", $status_name);
}
else
$status_id = DB::query_result("SELECT id FROM {shop_order_status} WHERE status='%d' AND trash='0' LIMIT 1", $status);

if(DB::query_result("SELECT id FROM {shop_order} WHERE id=%d", $id))
{
$status_id_old=DB::query_result("SELECT status_id FROM {shop_order} WHERE id=%d", $id);
if($status == 1)
{
$this->diafan->_shop->order_pay($id);
}
else if($status_id_old!=$status_id)
{
$this->diafan->_shop->order_send_mail_change_status($id, $status_id);
}
DB::query("UPDATE {shop_order} SET status='%d', status_id=%d, created=%d WHERE id=%d", $status, $status_id, $created, $id);
}
else
{
DB::query("INSERT INTO {shop_order} (status, status_id, created".($id ? ", id" : '').") VALUES ('%d', %d, %d".($id ? ", %d" : '').")", $status, $status_id, $created, $id);
if(! $id)
{
$id = DB::insert_id();
}
}

$order_goods = array();
// Товары
foreach ($xml_order->Товары->Товар as $xml_product)
{
$import_good_id = 0;
$import_price_id = '';
$order_goods_id = 0;
$good_id = 0;
if(strstr($xml_product->Ид, '#'))
{
list($import_good_id, $import_price_id) = explode('#', $xml_product->Ид, 2);
}
else
{
$import_good_id = $xml_product->Ид;
}

$article = $xml_product->Артикул;
$name = $xml_product->Наименование;
$count_goods = $xml_product->Количество;
$price = $xml_product->ЦенаЗаЕдиницу;
$discount_id = 0;

if(isset($xml_product->Скидки->Скидка))
{
$discount_id = DB::query_result("SELECT id FROM {shop_discount} WHERE discount=%d", $xml_product->Скидки->Скидка->Процент);
}
$join_params = '';
if($import_good_id)
{
$good_id = DB::query_result("SELECT id FROM {shop} WHERE import_id='%h'".(! preg_match('/[^0-9]+/', $import_good_id) ? " OR id='%s'" : ''), $import_good_id, $import_good_id);
if($good_id && $import_price_id)
{
$price_id = DB::query_result("SELECT price_id FROM {shop_price} WHERE good_id=%d AND import_id='%h'".(! preg_match('/[^0-9]+/', $import_price_id) ? " OR price_id='%s'" : ''), $good_id,$import_price_id, $import_price_id);
if($price_id)
{
$rs = DB::query_fetch_all("SELECT * FROM {shop_price_param} WHERE price_id=%d", $price_id);
foreach ($rs as $r)
{
if($r["param_value"])
{
$i = (empty($i) ? 1 : $i + 1);
$join_params .= " INNER JOIN {shop_order_goods_param} AS p".$i." ON p".$i.".order_goods_id=g.id AND p".$i.".param_id=".$r["param_id"]." AND p".$i.".value=".$r["param_value"];
}
}
}
}
}
if(! $good_id && $article)
{
if(! $good_id = DB::query_result("SELECT id FROM {shop} WHERE article='%h'", $article))
continue;
}
if(! $good_id && $name)
{
if(! $good_id = DB::query_result("SELECT id FROM {shop} WHERE [name]='%h'", $name))
continue;
}

$order_goods_id = DB::query_result("SELECT g.id FROM {shop_order_goods} AS g".$join_params." WHERE g.order_id=%d AND g.good_id=%d AND g.trash='0'", $id, $good_id);

if($order_goods_id)
{
DB::query("UPDATE {shop_order_goods} SET count_goods=%d, price=%f, discount_id=%d WHERE id=%d", $count_goods, $price, $discount_id, $order_goods_id);
}
else
{
$order_goods_id = DB::query("INSERT INTO {shop_order_goods} (order_id, good_id, count_goods, price, discount_id) VALUES (%d, %d, %d, %f, %d)", $id, $good_id, $count_goods, $price, $discount_id);
}
$order_goods[] = $order_goods_id;
}
// удаляет покупки, которых нет в файле
if($order_goods)
{
$del_goods = DB::query_fetch_value("SELECT id FROM {shop_order_goods} WHERE id NOT IN (%s) AND order_id=%d", implode(",", $order_goods), $id, "id");
if($del_goods)
{
DB::query("DELETE FROM {shop_order_goods_param} WHERE order_goods_id IN (%s)", implode(",", $del_goods));
DB::query("DELETE FROM {shop_order_goods} WHERE id IN (%s)", implode(",", $del_goods));
}
}
DB::query("UPDATE {shop_order} SET summ=%f WHERE id=%d", $xml_order->Сумма, $id);
}

echo "success";
}


Там еще были доделки, я их убрал из кода, поэтому проверяйте, вместе исправим если что.

Способ хеширования пароля


Андрей (koda) 2425 октября 2015 г.

Как-то не вяжутся случайные числа с хешированием при авторизации. Как сверять хеши паролей если в алгоритме случайные числа?

Файл config.php


Андрей (koda) 2419 октября 2015 г., редакция 1445272245

Код
<?php
/**
* Файл конфигурации
*
* @package DIAFAN.CMS
* @author diafan.ru
* @version 5.4
* @license http://www.diafan.ru/license.html
* @copyright Copyright (c) 2003-2015 OOO «Диафан» (http://www.diafan.ru/)
*/

Показать весь код

if (! defined('DIAFAN'))
{
include dirname(__FILE__).'/includes/404.php';
}

//папка, в которой лежит сайт. Для корня домена оставьте пустым
define("REVATIVE_PATH", "");

//название сайта, добавляется к тегу title в конце через дефис
define("TIT1", "site.ru");

//параметры подключения к БД
define("DB_URL", "mysqli://user:pass@localhost/name_database");

//префикс таблиц сайта в БД
define("DB_PREFIX", "diafan_");

//кодировка БД
define("DB_CHARSET", "utf8");

//название папки с визуальным редактором
define("USERFILES", "userfiles");

//версия DIAFAN.CMS
define("VERSION_CMS", "5.4");

//ЧПУ папки панели администрирования
define("ADMIN_FOLDER", "admin");

//мобильная версия true/false (да/нет)
define("MOBILE_VERSION", false);

//demo-версия true/false (да/нет)
define("IS_DEMO", false);

//включить режим разработки, когда на сайт выводятся все возможные ошибки true/false (да/нет)
define("MOD_DEVELOPER", true);

//включить режим технического обслуживания сайта, сайт станет недоступен для пользователей (шаблон оформления сообщения в themes/503.php) true/false (да/нет)
define("MOD_DEVELOPER_TECH", false);

//отключить кеширование true/false (да/нет)
define("MOD_DEVELOPER_CACHE", true);

//выводить запросы к БД на сайте true/false (да/нет)
define("MOD_DEVELOPER_PROFILING", false);


//адрес FTP текущего сайта
define("FTP_HOST", "");

//путь к DIAFAN.CMS, после входа ftp-пользователя, например, www/site.ru/docs/
define("FTP_DIR", "");

//имя FTP-пользователя
define("FTP_LOGIN", "");

//пароль FTP-пользователя
define("FTP_PASSWORD", "");

//главный ящик администратора, владельца сайта, используется по умолчанию во всех уведомлениях
define("EMAIL_CONFIG", "123@gmail.com");

//использовать SMTP-авторизацию при отправке почтовых сообщений true/false (да/нет)
define("SMTP_MAIL", false);

//url почтового сервера (например, smtp.site.ru)
define("SMTP_HOST", "");

//логин почты
define("SMTP_LOGIN", "");

//пароль к почте
define("SMTP_PASSWORD", "");

//порт (по умолчанию 25)
define("SMTP_PORT", "");

//экстремальное кэширование
define("CACHE_EXTREME", false);

//использовать Memcached сервер для кэширования
define("CACHE_MEMCACHED", false);

//хост сервера Memcached
define("CACHE_MEMCACHED_HOST", "");

//порт сервера Memcached
define("CACHE_MEMCACHED_PORT", "");

//часовой пояс сайта, в формате http://www.php.net/manual/en/timezones.php
define("TIMEZONE", "Europe/Moscow");

//конец строки ЧПУ, по умолчанию "/". Можно ввести ".htm"
define("ROUTE_END", "/");

//использовать автоматическое формирование ЧПУ для модулей true/false (да/нет)
define("ROUTE_AUTO_MODULE", true);

//подключить SMS-уведомления true/false (да/нет)
define("SMS", false);

// ключ для сервиса byteHand
define("SMS_KEY", "");

// id в системе byteHand
define("SMS_ID", "");

// подпись для уведомлений
define("SMS_SIGNATURE", "");

//дата последнего экспорта заказов в систему 1С:Предприятие
define("LAST_1C_EXPORT", "");

// разрешить вставлять во frame
define("NO_X_FRAME", false);

магазин не заполняется товаром


Андрей (koda) 2419 октября 2015 г.

id править в базе сильно не желательно. На скрине во вложении как изменить порядковый номер в свойствах таблицы.

Изменение вложенности категорий товаров при импорте из 1С


Андрей (koda) 2413 октября 2015 г.

modules/shop/shop.1c.php 694 строка
Код
$this->import_categories($xml->Классификатор, $site_id);

заменить на
Код
foreach($xml->Классификатор->Группы as $group)
$this->import_categories($group, $site_id);

Написал на скорую руку, отпишитесь заработало или нет.

Способ хеширования пароля


Андрей (koda) 2411 октября 2015 г.

в файле core.php
Код
/**
* Кодирует пароль
*
* @param string $text исходный пароль
* @return string
*/
public function encrypt($text)
{
return md5($text);
}

gif или не gif, вот в чем вопрос!


Андрей (koda) 2404 октября 2015 г.

Шестерню в отдельное изображение и вращаеть его по этому примеру демо

Ярлыки на товаре.


Андрей (koda) 2427 сентября 2015 г.

Попробуй на CSS3 сделать. Выглядит впечатляюще при любом разрешении )
Вот эту инструкцию и демо

Синхронизация с сервисом МойСклад


Андрей (koda) 2424 сентября 2015 г.

1) да, штрихкод встанет в артикул
2) нужно добавить эти строки в конкретное место, без замен

Выгрузка и загрузка товаров CSV


Андрей (koda) 2421 августа 2015 г.

В этом modules/ shop/ shop.export.php выгрузка в CSV

Как изменить вывод харктеристик для поиска ?


Андрей (koda) 2420 августа 2015 г.

файл modules/ shop/ shop.view.show_search.php 191 строка
нужно заменить
Код
case 'select':
case 'multiple':
echo '
<span class="input-title">'.$row["name"].':</span>';
foreach ($row["select_array"] as $key => $value)
{
echo '<input type="checkbox" id="shop_search_p'.$row["id"].'_'.$key.'" name="p'.$row["id"].'[]" value="'.$key.'"'.(in_array($key, $row["value"]) ? " checked" : '').'>
<label for="shop_search_p'.$row["id"].'_'.$key.'">'.$value.'</label>
<br>';
}

на такой вывод
Код

case 'select':
case 'multiple':
echo '
<span class="input-title">'.$row["name"].':</span>';
echo '<select name="p'.$row["id"].'[]">';
foreach ($row["select_array"] as $key => $value)
{
echo '<option value="'.$key.'"'.(in_array($key, $row["value"]) ? " selected" : '').'>
'.$value.'</option>

Показать весь код
<br>';
}
echo '</select>';

Синхронизация с сервисом МойСклад


Андрей (koda) 2419 августа 2015 г.

Самый быстрый способ если у вас артикул не используется вместо артикула штрихкод ставить, например так:
- Заменить в файле "modules/shop/shop.1c.php" $xml_product->Артикул на $xml_product->Штрихкод

Если отдельной характеристикой, то уже нужно дописывать shop.1c.php строка 1122

Код

DB::query("DELETE FROM {shop_param_element} WHERE param_id=%d AND element_id=%d", 777, $id);
DB::query("INSERT INTO {shop_param_element} (param_id, element_id, [value]) VALUES (%d, %d, '%s')", 777, $id, strval($xml_product->Штрихкод));


Здесь 777 это номер характеристики "Штрихкод" в диафане, при наведении на параметр в админке показывается.

Как работает модуль Личные сообщения


Андрей (koda) 2419 августа 2015 г.

На этой странице отображаются уже начатые диалоги. А начать можно на странице пользователя, например приходя из комментария или форума. Ссылка примерно такая http://demo.cms.diafan.ru/user/?name=michael

Модуль изображения


Андрей (koda) 2414 июля 2015 г.

Нужно изменить таблицу картинок, добавив там вариант например "some_tag"
SQL запрос в базу данных
Код
ALTER TABLE `diafan_images`
CHANGE `element_type` `element_type` enum('element','cat','brand','some_tag') COLLATE 'utf8_general_ci' NOT NULL DEFAULT 'element' COMMENT 'тип элемента модуля'

Форма авторизации в модальном окне


Андрей (koda) 2401 июля 2015 г.

Где можно посмотреть?

Важно (всегда сверху)


Андрей (koda) 2401 июля 2015 г.

Наоборот добавил параметр prior в кеширование, чтобы он учитывался.
1 2 3 4 5 6