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

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

  • 01 мая 2015 г. , редакция: 1430485270
  • Сталкивался с подобной проблемой, по стандарту форму нельзя разрывать таблицей.. Решил проблему разместив всю форму внутри ячейки и вынес текстовые значения из формы в другую ячейку. Вот еще есть решение, возможно поможет.
  • 22 декабря 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.'/' : '' ) );
  • 16 ноября 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";
    }


    Там еще были доделки, я их убрал из кода, поэтому проверяйте, вместе исправим если что.
  • 16 ноября 2015 г.
  • С 1С и статусам заказа хуже дело обстоит, там нормально сделать только конфигурацию 1с править, обработку выгрузки. Так как приходит только статус "в обработке" остальные 1с не считает нужным присылать, в том числе "выполнен". Протокол не обязывает 1с присылать все статусы, а их там всего пара-тройка.
  • 28 апреля 2015 г. , редакция: 1430235689
  • Передавать могут только пользователи со статусом "партнер". Вот тут условия при которых можно лишиться статуса.
    Надеюсь публикация не запрещена?
    Код
    Партнер может* лишиться статуса партнера, в случае если:

    Партнер лишился собственного сайта, либо не поддерживает и не обновляет его, либо партнерский сайт выглядит заброшенным, и/или работает с техническими ошибками.
    Партнер более 6 месяцев не разрабатывает сайты с использованием DIAFAN.CMS (не покупает лицензии).
    Партнер нарушил условия продаж лицензий на DIAFAN.CMS со скидкой, либо был замешан в нелегальной активности.
    *Партнер лишается статуса на усмотрение компании Диафан. Возможно заново подать заявку на партнерство на текущих, устранив причины лишения статуса партнера (если у партнера был тарифный план 4.х с базовой стоимостью лицензии 2000 рублей, после лишение статуса восстановление на тарифный план 4.х невозможно.).
  • 06 марта 2015 г.
  • http://www.diafan.ru/dokument/full-manual/introduction/panel_redaktirovaniya_stranits_sayta_vizualnyy_red/
    Пункт
    "Добавить/Изменить изображение Добавить/Изменить изображение (плагин DIAFAN.CMS). "

    Чтобы вставить изображение, необходимо:

    1. Поставить клавиатурный курсор туда, где необходимо вставить изображение.
    2. На панели редактирования нажать кнопку «Вставить/Редактировать изображение».
    3. В появившемся окне можно либо кликнуть на ранее загруженные картинки, либо выбрать картинку с вашего компьютера (для этого необходимо нажать кнопку «Обзор» и в выпавшем проводнике компьютера выбрать нужную картинку, и уже затем кликнуть на неё мышкой).
    4. В окне выбрать метод увеличения картинки до большой и нажать «Ok».
  • 06 марта 2015 г.
  • Таблица {images} колонка "name", уникальность гарантируется тем что в начало имени вставлен id изображения из этой же таблицы. Модифицированные изображения хранятся с тем же именем, только в других директориях.
  • 19 августа 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 это номер характеристики "Штрихкод" в диафане, при наведении на параметр в админке показывается.
  • 22 октября 2013 г.
  • Реврайты надо переписать. В IIS реврайты находятся в web.config в корне сайта
    Код
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.webServer>

    <!-- Begin REMOVABLE New Error Checking -->
    <httpErrors errorMode="Detailed"/>
    <asp scriptErrorSentToBrowser="true"/>
    <!-- End -->

    <rewrite>
    <rules>
    <rule name="diafan1">
    <match url="^.*sitemap.xml$" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll">
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    </conditions>
    <action type="Rewrite" url="index.php?rewrite=sitemap.xml" appendQueryString="true" />
    </rule>
    <rule name="diafan2">
    <match url="(.*)(/)?" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll">
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    </conditions>
    <action type="Rewrite" url="index.php?rewrite={R:1}" appendQueryString="true" />
    </rule>
    </rules>
    </rewrite>

    </system.webServer>

    </configuration>

    Давно писал, уже не помню были ли ошибки.
    Под IIS были проблемы с загрузкой файлов и картинок, не смог сходу решить, поэтому купили дешевый хостинг на апаче. В интернетах пишут что можно подпилить любое приложение для загрузки файлов в IIS, так что не отчаивайтесь.. решаемо.
  • 20 сентября 2013 г.
  • Добавить в запрос к базе данных вывод полного текста и добавить этот тег в вывод новости
    Код
    $result = DB::query("SELECT e.id, e.created, e.[name], e.[anons], e.cat_id, e.site_id, e.[text] FROM {news} AS e"
    .($this->diafan->_user->id ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='news'" : "")
    ." WHERE e.[act]='1' AND e.trash='0'"
    ." AND e.created<=%d AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
    ." AND (e.access='0'"
    .($this->diafan->_user->id ? " OR e.access='1' AND a.role_id=".$this->diafan->_user->role_id : '')
    .")"
    ." AND e.site_id IN (".implode(",", $site_ids).")"
    ." ORDER BY e.created DESC, e.id DESC LIMIT ".$limit, $time, $time, $time);
    $last = '';
    $items = '';

    while ($row = DB::fetch_array($result))
    {
    if (! $this->diafan->configmodules("cat", "news", $row["site_id"]))
    {
    $row["cat_id"] = 0;
    }
    $link = $this->diafan->_route->link($row["site_id"], "news", $row["cat_id"], $row["id"]);
    if(! $link)
    {
    continue;
    }
    if (empty($last))
    {
    $last = date("D, d F Y H:i:s T", $row['created']);
    }
    $items .= "
    <item>
    <title>".$this->diafan->prepare_xml($row['name'])."</title>
    <link>".BASE_PATH_HREF.$link."</link>
    <description>".$this->diafan->prepare_xml($row['anons'])."</description>
    <yandex:full-text><![CDATA[".$this->diafan->prepare_xml($row['text'])."]]></yandex:full-text>\n
    <pubDate>".date("D, d F Y H:i:s T", $row['created'])."</pubDate>"
    .($this->diafan->configmodules("comments", "news", $row["site_id"]) ? "
    <comments>".BASE_PATH_HREF.$link."</comments>" : "")."
    </item>";
    }
  • 18 сентября 2013 г.
  • modules\shop\views\shop.view.id.php

    Код
    //вывод изображений товара
    if (!empty($result["img"]))
    {
    echo '<div class="shop_all_img">';
    $img=$result["img"][0];
    echo '<a href="' . BASE_PATH . $img["link"] . '" rel="prettyPhoto[gallery' . $result["id"] . 'shop]">';
    echo '<img src="' . BASE_PATH . $img["link"] . '" width="500" alt="' . $img["alt"] . '" title="' . $img["title"] . '" image_id="'.$img["id"].'"></a>';
    unset($result["img"][0]);
    foreach ($result["img"] as $img)
    {
    ....
  • 12 августа 2013 г.
  • Да, в таком удобнее чтобы были разные базы. Но никто не мешает без сетевых передач данных (как это делается в диафане) просто инсертить в базы городов (благо все доступы есть) еще одну неопублкиванную новость по кнопке "закинуть всем отделениям".
  • 08 августа 2013 г.
  • Один раз я подобную проблему решил вот как:
    во вьюшку добавил показ страницы сайта у которой название точно такое как у бренда.
    Причем показывать только если это выборка по бренду.
    Вьюшка тебе известна, модель тоже. В модели добавляешь данные страницы сайта если есть, а во вьюшке показываешь если есть данные.
  • 07 августа 2013 г.
  • Возьми за основу какую-нибудь форму простую (например модуля feedback) скопируй ее, убери лишнее и поменяй в ней action на свой, найди где эта форма обрабатывается, например feedback.ajax.php и добавь там обработчик этого случая по примеру.
  • 07 августа 2013 г.
  • Все формы что я в диафане видел отправляются аяксом, без перезагрузки. Или я не понимаю вопроса?
    В обратной связи например посылается без перезагрузки запрос, если все хорошо, то форма скрывается и пишется сообщение "сообщение отправлено".
  • 06 августа 2013 г. , редакция: 1375809622
  • У моего провайдера СМС - 30 копеек. Цены вполне реальные. Евгений зарабатывает с реферала до 500 руб.
    Бесшовная интеграция в Диафан это круто!
    Евгений, спасибо!
    Ссылку только реферальную исправь, а то благодарность не дойдет
Показывать по:

Новости

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

Форум