Сталкивался с подобной проблемой, по стандарту форму нельзя разрывать таблицей.. Решил проблему разместив всю форму внутри ячейки и вынес текстовые значения из формы в другую ячейку. Вот еще есть решение, возможно поможет.
Я вот какое решение делал для такого случая
Сделал и на моем складе и на сайте одинаковые статусы заказов, чтобы при синхронизации по имени сопоставлять.
Затем доделал функцию синхронизации заказов
modules/shop/shop.1c.php 504 строка заменить функцию
Код
/**
* Обмен информацией о заказах: отправка файла обмена на сайт
*
* @return void
*/
private function sale_file()
{
$filename = basename($_GET['filename']);
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();
}
}
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";
}
Там еще были доделки, я их убрал из кода, поэтому проверяйте, вместе исправим если что.
С 1С и статусам заказа хуже дело обстоит, там нормально сделать только конфигурацию 1с править, обработку выгрузки. Так как приходит только статус "в обработке" остальные 1с не считает нужным присылать, в том числе "выполнен". Протокол не обязывает 1с присылать все статусы, а их там всего пара-тройка.
Передавать могут только пользователи со статусом "партнер". Вот тут условия при которых можно лишиться статуса.
Надеюсь публикация не запрещена?
Код
Партнер может* лишиться статуса партнера, в случае если:
Партнер лишился собственного сайта, либо не поддерживает и не обновляет его, либо партнерский сайт выглядит заброшенным, и/или работает с техническими ошибками.
Партнер более 6 месяцев не разрабатывает сайты с использованием DIAFAN.CMS (не покупает лицензии).
Партнер нарушил условия продаж лицензий на DIAFAN.CMS со скидкой, либо был замешан в нелегальной активности.
*Партнер лишается статуса на усмотрение компании Диафан. Возможно заново подать заявку на партнерство на текущих, устранив причины лишения статуса партнера (если у партнера был тарифный план 4.х с базовой стоимостью лицензии 2000 рублей, после лишение статуса восстановление на тарифный план 4.х невозможно.).
http://www.diafan.ru/dokument/full-manual/introduction/panel_redaktirovaniya_stranits_sayta_vizualnyy_red/
Пункт
"Добавить/Изменить изображение Добавить/Изменить изображение (плагин DIAFAN.CMS). "
Чтобы вставить изображение, необходимо:
1. Поставить клавиатурный курсор туда, где необходимо вставить изображение.
2. На панели редактирования нажать кнопку «Вставить/Редактировать изображение».
3. В появившемся окне можно либо кликнуть на ранее загруженные картинки, либо выбрать картинку с вашего компьютера (для этого необходимо нажать кнопку «Обзор» и в выпавшем проводнике компьютера выбрать нужную картинку, и уже затем кликнуть на неё мышкой).
4. В окне выбрать метод увеличения картинки до большой и нажать «Ok».
Таблица {images} колонка "name", уникальность гарантируется тем что в начало имени вставлен id изображения из этой же таблицы. Модифицированные изображения хранятся с тем же именем, только в других директориях.
Самый быстрый способ если у вас артикул не используется вместо артикула штрихкод ставить, например так:
- Заменить в файле "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 это номер характеристики "Штрихкод" в диафане, при наведении на параметр в админке показывается.
Давно писал, уже не помню были ли ошибки.
Под IIS были проблемы с загрузкой файлов и картинок, не смог сходу решить, поэтому купили дешевый хостинг на апаче. В интернетах пишут что можно подпилить любое приложение для загрузки файлов в IIS, так что не отчаивайтесь.. решаемо.
Добавить в запрос к базе данных вывод полного текста и добавить этот тег в вывод новости
Код
$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>";
}
Смотри <модуль>.ajax.php там обработчик запроса. В ответе передаются команды, в том числе и на скрытие формы. Откроешь - там будет очевидно что комментить.
Да, в таком удобнее чтобы были разные базы. Но никто не мешает без сетевых передач данных (как это делается в диафане) просто инсертить в базы городов (благо все доступы есть) еще одну неопублкиванную новость по кнопке "закинуть всем отделениям".
Один раз я подобную проблему решил вот как:
во вьюшку добавил показ страницы сайта у которой название точно такое как у бренда.
Причем показывать только если это выборка по бренду.
Вьюшка тебе известна, модель тоже. В модели добавляешь данные страницы сайта если есть, а во вьюшке показываешь если есть данные.
Возьми за основу какую-нибудь форму простую (например модуля feedback) скопируй ее, убери лишнее и поменяй в ней action на свой, найди где эта форма обрабатывается, например feedback.ajax.php и добавь там обработчик этого случая по примеру.
Все формы что я в диафане видел отправляются аяксом, без перезагрузки. Или я не понимаю вопроса?
В обратной связи например посылается без перезагрузки запрос, если все хорошо, то форма скрывается и пишется сообщение "сообщение отправлено".
У моего провайдера СМС - 30 копеек. Цены вполне реальные. Евгений зарабатывает с реферала до 500 руб.
Бесшовная интеграция в Диафан это круто!
Евгений, спасибо!
Ссылку только реферальную исправь, а то благодарность не дойдет
В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке.