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

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

  • 01 сентября 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.
  • 12 марта 2016 г.
  • Если тема уже есть, то нужно в нее зайти, и в поле "Импорт темы" выбрать скачанный архив дополнения. Затем сохранить.
  • 12 января 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
  • 07 января 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;
    }

    Поиск по артикулу включен и поиск по нему заменен на редирект в случае если такой идентификатор найден. Не готовый рецепт, но для начала достаточно.
  • 10 декабря 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);
    }
    }
  • 19 октября 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);
  • 13 октября 2015 г.
  • modules/shop/shop.1c.php 694 строка
    Код
    $this->import_categories($xml->Классификатор, $site_id);

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

    Написал на скорую руку, отпишитесь заработало или нет.
  • 20 августа 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>';
  • 14 июля 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 'тип элемента модуля'
  • 30 июня 2015 г.
  • Заменить функцию в news.model.php

    Код
    public function show_block($count, $site_ids, $cat_ids, $sort, $images, $images_variation,$prior)
    {
    $time = mktime(23, 59, 0, date("m"), date("d"), date("Y"));

    if($sort == 'keywords')
    {
    if($this->diafan->_site->titlemodule)
    {
    $title = $this->diafan->_site->titlemodule;
    }
    else
    {
    $title = $this->diafan->_site->name;
    }
    }

    //кеширование
    $cache_meta = array(
    "name" => "block",
    "cat_ids" => $cat_ids,
    "site_ids" => $site_ids,
    "count" => $count,
    "prior" => $prior,
    "lang_id" => _LANG,
    "time" => $time,
    "sort" => $sort.($sort == 'keywords' ? $title : ''),
    "images" => $images,
    "images_variation" => $images_variation,
    "access" => ($this->diafan->configmodules('where_access_element', 'news') || $this->diafan->configmodules('where_access_cat', 'news') ? $this->diafan->_users->role_id : 0),
    );

    if (! $result = $this->diafan->_cache->get($cache_meta, "news"))
    {
    $minus = array();
    $one_cat_id = count($cat_ids) == 1 && substr($cat_ids[0], 0, 1) !== '-' ? $cat_ids[0] : false;
    if(! $this->validate_attribute_site_cat('news', $site_ids, $cat_ids, $minus))
    {
    return false;
    }
    $where = "";
    if($sort == 'keywords')
    {
    Custom::inc('includes/searchwords.php');
    $searchwords = new Searchwords();
    $names = $searchwords->prepare($title);
    if(empty($names))
    {
    return false;
    }
    foreach ($names as $i => $name)
    {
    $where .= ($i ? " OR ": " AND (")."LOWER(e.[name]) LIKE '%%".$name."%%'";
    }
    $where .= ")";
    }
    if($this->diafan->_site->module == "news" && $this->diafan->_route->show)
    {
    $where .= " AND e.id<>".$this->diafan->_route->show;
    }
    $inner = "";
    if($cat_ids)
    {
    $inner = " INNER JOIN {news_category_rel} as r ON r.element_id=e.id"
    ." AND r.cat_id IN (".implode(',', $cat_ids).")";
    }
    elseif(! empty($minus["cat_ids"]))
    {
    $inner = " INNER JOIN {news_category_rel} as r ON r.element_id=e.id"
    ." AND r.cat_id NOT IN (".implode(',', $minus["cat_ids"]).")";
    }
    if($site_ids)
    {
    $where .= " AND e.site_id IN (".implode(",", $site_ids).")";
    }
    elseif(! empty($minus["site_ids"]))
    {
    $where .= " AND e.site_id NOT IN (".implode(",", $minus["site_ids"]).")";
    }
    if($prior!='')
    $where .= " AND e.prior = '".$prior."' ";
    $result["rows"] = DB::query_range_fetch_all(
    "SELECT e.id, e.[name],e.[anons], e.timeedit, e.site_id, e.created FROM {news} AS e"
    .$inner
    .($this->diafan->configmodules('where_access_element', 'news') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='news' AND a.element_type='element'" : "")
    ." WHERE e.[act]='1' AND e.trash='0' AND e.created<%d"
    .($this->diafan->_site->module == 'news' && $this->diafan->_route->show ? " AND e.id<>".$this->diafan->_route->show : '')
    ." AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
    .($this->diafan->configmodules('where_access_element', 'news') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
    .$where
    ." GROUP BY e.id ORDER BY e.prior DESC, e.created DESC, e.id DESC",
    $time, $time, $time, 0, $count
    );
    $this->elements($result["rows"], array("count" => $images, "variation" => $images_variation));

    // если категория только одна, задаем ссылку на нее
    if (!empty($result["rows"]) && $one_cat_id)
    {
    $cat = DB::query_fetch_array("SELECT [name], site_id, id FROM {news_category} WHERE id=%d LIMIT 1", $one_cat_id);

    $result["name"] = $cat["name"];
    $result["link_all"] = $this->diafan->_route->link($cat["site_id"], $cat["id"], 'news', 'cat');
    $result["category"] = true;
    }
    // если раздел сайта только один, то задаем ссылку на него
    elseif (!empty($result["rows"]) && count($site_ids) == 1)
    {
    $result["name"] = DB::query_result("SELECT [name] FROM {site} WHERE id=%d LIMIT 1", $site_ids[0]);
    $result["link_all"] = $this->diafan->_route->link($site_ids[0]);
    $result["category"] = false;
    }
    $this->diafan->_cache->save($result, $cache_meta, "news");
    }
    foreach ($result["rows"] as &$row)
    {
    $this->prepare_data_element($row);
    }
    foreach ($result["rows"] as &$row)
    {
    $this->format_data_element($row);
    }
    return $result;
    }


    В news.php заменить функцию
    Код
    public function show_block($attributes)
    {
    $attributes = $this->get_attributes($attributes, 'count', 'site_id', 'cat_id', 'sort', 'images', 'images_variation', 'only_module', 'template','prior');

    $count = $attributes["count"] ? intval($attributes["count"]) : 3;
    $site_ids = explode(",", $attributes["site_id"]);
    $cat_ids = explode(",", $attributes["cat_id"]);
    $sort = $attributes["sort"] == "date" || $attributes["sort"] == "keywords" ? $attributes["sort"] : "";
    $images = intval($attributes["images"]);
    $prior = $attributes["prior"];
    $images_variation = $attributes["images_variation"] ? strval($attributes["images_variation"]) : 'medium';

    if ($attributes["only_module"] && ($this->diafan->_site->module != "news" || in_array($this->diafan->_site->id, $site_ids)))
    return;

    if($attributes["cat_id"] == "current")
    {
    if($this->diafan->_site->module == "news" && (empty($site_ids[0]) || in_array($this->diafan->_site->id, $site_ids))
    && $this->diafan->_route->cat)
    {
    $cat_ids[0] = $this->diafan->_route->cat;
    }
    else
    {
    $cat_ids = array();
    }
    }

    $result = $this->model->show_block($count, $site_ids, $cat_ids, $sort, $images, $images_variation,$prior);
    $result["attributes"] = $attributes;

    echo $this->diafan->_tpl->get('show_block', 'news', $result, $attributes["template"]);
    }


    Использовать так в шаблоне так
    Код
    <insert name="show_block" module="news" cat_id="1" prior="1">

  • 29 июня 2015 г.
  • Давайте сделаю начало, а аяксовой форму пусть ктонить другой подскажет.

    Заменятем registration.view.form.php или делаем новый шаблон с таким содержимым
    Код

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

    if (!$result["user"])
    {
    echo $result["error"];
    echo '<div class="block">';
    echo '<h3><a href="#auth" rel="prettyPhoto">'.$this->diafan->_('Вход на сайт').'</a></h3>';
    echo '<div id="auth" style="display:none"><form method="post" action="'.$result["action"].'" class="login">
    <input type="hidden" name="action" value="auth">

    <input type="text" name="name" placeholder="'.$this->diafan->_('Имя пользователя').'" autocomplete="off">

    <input type="password" name="pass" placeholder="'.$this->diafan->_('Пароль').'" autocomplete="off">

    <input type="checkbox" id="not_my_computer" name="not_my_computer" value="1">
    <label for="not_my_computer">'.$this->diafan->_('Чужой компьютер').'</label>

    <input type="submit" value="Войти"><br>';
    if (! empty($result["reminding"]))
    {
    echo '<a href="'.$result["reminding"].'" class="arrow-link black">'.$this->diafan->_('Забыли пароль?').'</a> ';
    }
    if(! empty($result["registration"]))
    {
    echo '<a href="'.$result["registration"].'" class="arrow-link black">'.$this->diafan->_('Регистрация').'</a>';
    }
    echo '</form>';

    if(! empty($result["use_loginza"]))
    {
    $this->diafan->_site->js_view[] = 'http://loginza.ru/js/widget.js';
    echo '<br><a href="https://loginza.ru/api/widget?token_url='.urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']).'" class="loginza">
    <img src="http://loginza.ru/img/providers/yandex.png" alt="Yandex" title="Yandex">
    <img src="http://loginza.ru/img/providers/google.png" alt="Google" title="Google Accounts">
    <img src="http://loginza.ru/img/providers/vkontakte.png" alt="Вконтакте" title="Вконтакте">
    <img src="http://loginza.ru/img/providers/mailru.png" alt="Mail.ru" title="Mail.ru">
    <img src="http://loginza.ru/img/providers/twitter.png" alt="Twitter" title="Twitter">
    <img src="http://loginza.ru/img/providers/loginza.png" alt="Loginza" title="Loginza">
    <img src="http://loginza.ru/img/providers/myopenid.png" alt="MyOpenID" title="MyOpenID">
    <img src="http://loginza.ru/img/providers/openid.png" alt="OpenID" title="OpenID">
    <img src="http://loginza.ru/img/providers/webmoney.png" alt="WebMoney" title="WebMoney">
    </a><br><br>';
    }
    echo '</div></div>';
    }
    else
    {
    echo '<div class="block profile-block">';
    echo '<h3>'.$this->diafan->_('Профиль').'</h3>';
    if (!empty($result["avatar"]))
    {
    echo '<img src="'.BASE_PATH.USERFILES.'/avatar/'.$result["name"].'.png" width="'.$result["avatar_width"].'" height="'.$result["avatar_height"].'" alt="'.$result["fio"].' ('.$result["name"].')" class="avatar profile-hello-avatar">';
    }
    echo '<div class="profile-hello-text">
    '.$this->diafan->_('Здравствуйте').',<br>';

    echo $result["fio"];
    echo '!
    </div>';

    echo '<ul class="menu">';
    if($result['userpage'])
    {
    echo '<li><a href="'.$result['userpage'].'">'.$this->diafan->_('Личная страница').'</a></li>';
    }
    if(! empty($result["usersettings"]))
    {
    echo '<li><a href="'.$result["usersettings"].'">'.$this->diafan->_('Настройки').'</a></li>';
    }
    if (!empty($result['messages']))
    {
    echo '<li><a href="'.$result['messages'].'">'.$result['messages_name'];
    if($result['messages_unread'])
    {
    echo ' (<b>'.$result['messages_unread'].'</b>)';
    }
    echo '</a></li>';
    }
    echo '</ul>';



    echo '<form action="'.BASE_PATH_HREF.'logout/?'.rand(0, 99999).'" method="POST">
    <input type="submit" value="'.$this->diafan->_('Выйти', false).'">
    </form>';
    echo '</div>';
    }
  • 25 июня 2015 г.
  • УСТАНОВКА:
    Создайте тему в интерфейсе «Темы и дизайн» и импортируйте туда скачанный архив. При создании отметьте опцию «Применить». Импортировать можно в уже существующую примененную тему.

    В обновлении исправление тормозов.. странная ошибка кастомизации. Если использовать after при кастомизации именно этой функции жутко тормзит сайт, 6 секунд загружается. Пришлось заменять целиком функцию с помощью replace.
  • 25 июня 2015 г.
  • По основной категории
    Код

    INSERT INTO `diafan_shop_param_element` (`value1`, `param_id`, `element_id`, `trash`)
    select '<номер значения>', <номер параметра>, id, '0' from diafan_shop where cat_id=<номер категории> and trash='0';

    По дополнительным категориям и по основной
    Код

    INSERT INTO `diafan_shop_param_element` (`value1`, `param_id`, `element_id`, `trash`)
    select '<номер значения>', <номер параметра>, element_id, '0' from diafan_shop_category_rel where cat_id=<номер категории> and trash='0';


    Номер значения смотри тут diafan_shop_param_select по номеру параметра
  • 25 мая 2015 г.
  • Добавить динамический блок
    1) создать динамический блок, в нем указать модуль "новости" (вкладка динамические блоки в страницах сайта)
    2) вставить шаблонный тег <insert name="show_dynamic" module="site" id="000"> в шаблон site.php где 000 это номер динамического блока
  • 19 мая 2015 г. , редакция: 1432055045
  • Добавляем новую операцию в shop.admin.php
    Код
    /**
    * @var array дополнительные групповые операции
    */
    public $group_action = array(
    "group_no_buy" => array('name' => "Товар временно отсутствует", 'module' => 'shop'),
    "group_not_no_buy" => array('name' => "Товар в наличии", 'module' => 'shop'),
    "group_hit" => array('name' => "Хит", 'module' => 'shop'),
    "group_not_hit" => array('name' => "Не хит", 'module' => 'shop'),
    "group_action" => array('name' => "Акция", 'module' => 'shop'),
    "group_not_action" => array('name' => "Не акция", 'module' => 'shop'),
    "group_new" => array('name' => "Новинка", 'module' => 'shop'),
    "group_not_new" => array('name' => "Не новинка", 'module' => 'shop'),
    "group_yandex" => array('name' => "Параметры товара для yandex market", 'module' => 'shop'),
    );


    Добавляем обработку в shop.admin.action.php

    Код

    switch ($_POST["action"])
    {
    case 'group_yandex':
    $this->group_yandex();
    break;

    ......


    Добавляем там же метод в класс

    Код

    private function group_yandex()
    {
    if ( ! $this->diafan->configmodules("yandex"))
    {
    return;
    }

    if(! empty($_POST["ids"]))
    {
    $ids = array();
    foreach ($_POST["ids"] as $id)
    {
    $id = intval($id);
    if($id)
    {
    $ids[] = $id;
    }
    }
    $yandex='typePrefix='.str_replace("\n", '', $this->diafan->filter($_POST, "string", "yandex_typePrefix"))."\n"
    .'vendor='.str_replace("\n", '', $this->diafan->filter($_POST, "string", "yandex_vendor"))."\n"
    .'model='.str_replace("\n", '', $this->diafan->filter($_POST, "string", "yandex_model"))."\n"
    .'vendorCode='.str_replace("\n", '', $this->diafan->filter($_POST, "string", "yandex_vendorCode"))."\n"
    .'sales_notes='.str_replace("\n", '', $this->diafan->filter($_POST, "string", "yandex_sales_notes"))."\n"
    .'manufacturer_warranty='.str_replace("\n", '', $this->diafan->filter($_POST, "string", "yandex_manufacturer_warranty"))."\n"
    .'country_of_origin='.str_replace("\n", '', $this->diafan->filter($_POST, "string", "yandex_country_of_origin"))."\n"
    .'bid='.$this->diafan->filter($_POST, "string", "yandex_bid")."\n"
    .'cbid='.$this->diafan->filter($_POST, "string", "yandex_cbid");
    DB::query("UPDATE {shop} SET yandex='%s' WHERE id IN (%s)",$yandex, implode(",", $ids));
    $this->diafan->_cache->delete("", "shop");
    }
    }


    В shop.admin.php добавляем перегруженную функцию group_action_panel_filter

    Код
    /**
    * Выводит фильтры для панели групповых операций
    *
    * @param string $value последнее выбранное значение в списке групповых операций
    * @return string
    */
    public function group_action_panel_filter($value)
    {
    // все стандартные фильтры
    $dop=parent::__call('group_action_panel_filter', array($value));

    $dop .= '<div class="dop_group_yandex hide">';
    $dop .= $this->diafan->_('Основная ставка').':<br>
    <input type="text" maxLength="70" name="yandex_bid" size="40" value=""> '.$this->diafan->help('Целое положительное значение. Например: 21, что соответствует ставке 0,21 у.е. Если параметр не задан, то задается настройками модуля.')
    .'<br>'
    . $this->diafan->_('Ставка для карточек').':<br>
    <input type="text" maxLength="70" name="yandex_cbid" size="40" value=""> '.$this->diafan->help('Целое положительное значение. Например: 21, что соответствует ставке 0,21 у.е. Если параметр не задан, то задается настройками модуля.')
    .'<br>'
    . $this->diafan->_('Группа товаров / категория').':<br>
    <input type="text" maxLength="70" name="yandex_typePrefix" size="40" value=""><br>'
    . '<br>'.$this->diafan->_('Производитель').':<br>
    <input type = "text" maxLength="70" name="yandex_vendor" size="40" value=""><br>'
    . $this->diafan->_('Модель').':<br>
    <input type = "text" maxLength="70" name="yandex_model" size="40" value=""><br>'
    . $this->diafan->_('Код товара (указывается код производителя)').':<br>
    <input type = "text" maxLength="70" name="yandex_vendorCode" size="40" value=""><br>'
    . $this->diafan->_('Отличие товара от других, или акции магазина (кроме скидок)').':<br>
    <input type = "text" maxLength="50" name="yandex_sales_notes" size="40" value=""><br>'
    . $this->diafan->_('Официальная гарантия производителя').':
    <input type = "checkbox" name="yandex_manufacturer_warranty" value="1"><br><br>'
    . $this->diafan->_('Страна производства товара').':<br>
    <input type = "text" maxLength="70" name="yandex_country_of_origin" size="40" value="">
    ';

    $dop .= "</div>";
    return $dop;
    }


    PS код не проверял, если найдете ошибки - исправлю.
Показывать по:

Новости

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

Форум