Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.
Всего найдено: 1412
-
19 июня 2018 г.
-
ЦитатаТакое бывает, когда скрипт пытается отправить письмо и не может.
Чуть-чуть уточню. В cms возможны два варианта отправки писем. Первый вариант - отправка с помощью php-скрипта. Это быстрый вариант, но, так как спамеры злоупотребляют этим, большинство авторитетных почтовых серверов либо отправляют такие письма в спам, либо вообще блокируют их доставку. Второй вариант - отправка с помощью SMTP. В данном случае при отправке письма идет взаимодействие с внешним почтовым сервером. И здесь скорость отправки зависит от множества факторов. Например, от настроек почтового сервера (могут быть выставлены задержки и иные финты). Также может влиять и текущая загруженность почтового сервера. В общем много факторов и в каждом случае они индивидуальны (поэтому время задержки может варьироваться). В свою очередь cms вынуждена дожидаться ответа от почтового сервера. Как только получен ответ, cms завершает заложенные в нее процессы.
ЦитатаА ещё крутилку-спиннер планируем же мы поставить? ;)
Индикатор процесса поставить не проблема. Важна заинтересованность в этом. А индикатор заинтересованности - это раздел "Пожеланий": https://user.diafan.ru/wishlist/ -
-
-
-
26 апреля 2018 г.
-
Проверил, установив актуальную DIAFAN.CMS и залив в кастомную тему дефолтную папку themes. То есть воспроизвел кастомизацию темы. Все работает.
Сама крутяжка подключается с помощью css. Файл css/style.css:Код/* defer */
form[loading="true"] {
display: inline-block;
background: url(../img/loader.gif) no-repeat left center;
min-width: 50px;
min-height: 50px;
padding: 8px 0px 0px 50px;
margin: 0px;
cursor: progress;
}
Вам необходимо проверить правильный ли у Вас указан путь к анимации. -
-
-
-
24 апреля 2018 г. , редакция: 1524529301
-
Все так же. В моделе модуля идет определение переменной $result["view_rows"]ЦитатаКак в этом случае подключать новый шаблон оформления?
Попробую пояснить на примере. Возьмем файл shop.model.php. В этом файле возьмем функцию вывода списка товаров. В указанной функции определяется представление списка, например,Кодpublic function list_()
. То есть представление в данном случае определено в файле shop.view.list.php. Далее представление уже элементов в списке, как было ранее, жестко определялось в shop.view.list.php. Теперь же этой жесткости нет. В той же функцииКод$this->result["view"] = 'list';
можно изменить как основное представление, так и представление списков исходя из каких-либо условий (т.е. не трогая основное представление). Для этого нужно лишь изменить значение, например,Кодpublic function list_()
То есть представление элементов списка определено в shop.view.rows.php.Код$this->result["view_rows"] = 'rows';
Все верно. Такой подход позволяет легко решить множество вопросов. Например, во время отработки ajax в action можно изменить не только основное представление, но и представление списка элементов не плодя полукопии основного представления.ЦитатаЭто понятно, но ведь не зря новую конструкцию ввели, для скорости или еще для чего
Как практический пример, то такой подход используется в реализации кнопки "Показать еще". Для этого в настройках модуля активируем соответствующий пункт и на странице списка элементов появиться кнопка "Показать еще". Нажав такую кнопку список элементов на странице дополниться еще одной партией списка, сменив пагинацию и url-адрес без перезагрузки самой страницы. -
-
-
-
27 апреля 2018 г. , редакция: 1524815107
-
ЦитатаВиталий позже даст комментарии на этот счёт.
Попробую разъяснить некоторые моменты, по которым возникают вопросы.
Возьмем в качестве примера модуль "Интернет-магазин", а именно вывод списка товаров. И так, сами данные для списка товаров генерирует public function list_() (modules/shop/shop.model.php). В указанной функции задается значениеТакое значение в последующем будет использовано в представлении (modules/shop/views/shop.view.list.php) следующим образом:Код$this->result["view_rows"] = 'rows';
Так как в моделе модуля было определено, что $this->result["view_rows"] = 'rows';, то выражение $this->get($result["view_rows"], 'shop', $result); будет равно следующему:Код//вывод списка товаров
if(! empty($result["rows"]))
{
//вывод сортировки товаров
if(! empty($result["link_sort"]))
{
echo $this->get('sort_block', 'shop', $result);
}
echo '<div class="shop-pane">';echo $this->get($result["view_rows"], 'shop', $result);
echo '</div>';
}Таким образом обеспечена обратная совместимость с ранее сделанными наработками. И если в своих шаблонах Вы оставите примерно вот такое (как было ранее):Кодecho $this->get('rows', 'shop', $result);
То ничего страшного не произойдет. Все будет работать так, как и задумывалось Вами ранее.Код//вывод списка товаров
if(! empty($result["rows"]))
{
//вывод сортировки товаров
if(! empty($result["link_sort"]))
{
echo $this->get('sort_block', 'shop', $result);
}
echo '<div class="shop-pane">';echo $this->get('rows', 'shop', $result);
echo '</div>';
}
Если же в представлении Вы используете, например, другое указание для вывода элементов в списке:То так же ничего страшного не произойдет за исключением. Например, при отработке нажатия кнопки "Показать еще" будет использован шаблон, указанный в $this->result["view_rows"] = 'rows';, что вызовет расхождения в логике отображения элементов списка.Кодecho $this->get('rows_xxx', 'shop', $result);
Если Вам не требуется функционал кнопки "Показать еще" или иной функционал, завязанный на $this->result["view_rows"], то можно ничего не менять и действовать по старому. Если же требуется, то правильным будет определение такого значения в модели. Например, выдержка из кастомизированного файла shop.model.custom.php:Таким образом можно легко переопределить значение, не переопределяя весь код функции.Код/**
* Генерирует данные для списка товаров
*
* @return void
*/
after public function list_()
{
$this->result["view_rows"] = 'rows_xxx';
}
Возможно в последующем, если это будет нужным, данное направление будет усовершенствовано и определение такого значения будет выведено в административную часть сайта. Тогда в моделе не потребуется, что либо дописывать. -
-
-
-
27 апреля 2018 г. , редакция: 1524818778
-
Цитатаиспользовать не один вариант изменённого вывода списка - "rows_one", "rows_two" и т. д. ?
То есть Вы в одном представлении списка элементов (shop.view.list.php) задействуете разные варианты представлений вывода элементов в списке? Если так, то важно понимать, что те значения, которые Вы присвоите $this->result["view_rows"] в представлении, модель модуля об этом не узнает. Поэтому, например, та же кнопка "Показать еще" будет использовать значение $this->result["view_rows"], которое было определено в модели.
В самом представлении вывода списка товаров Вы можете использовать как варианттак и вариантКодecho $this->get('rows_xxx', 'shop', $result);
Разница в таких вариантах в том, что при втором варианте в представление элементов списка придет измененное значение $this->result["view_rows"].Код$this->result["view_rows"] = 'rows_xxx';
echo $this->get($this->result["view_rows"], 'shop', $result);
Если Вы переопределили $this->result["view_rows"] в представлении, то, например, для того, чтобы задействовать функционал кнопки "Показать еще" Вам будет необходимо внести изменения в логику ее action, что тоже очень легко. Или не изменять логику, если не нужен такой функционал. -
-
-
-
27 апреля 2018 г. , редакция: 1524820231
-
Дополню. Чтобы переопределить action для кнопки "Показать еще", достаточно взглянуть на html-код этой кнопки (скриншот прилагается). В поле action будет указано название функцииТо есть в данном случае необходимо изменить или добавить, если ее нет, функцию list_. Cms автоматически поймет, что action для кнопки был переопределен.Код
<input type="hidden" name="action" value="list_">
Еще в дополнение. В том же html-коде можно обратить внимание на строчкуВ поле mode значение model говорит, что будет задействовано поведение, которое определено в моделе модуля. Если Вы добавите ту же функцию в action, то значение mode автоматически измениться на action. Соответственно cms задействует именно Вашу функцию в action.Код<input type="hidden" name="mode" value="model">
-
-
-
-
27 апреля 2018 г.
-
ЦитатаА так по-моему делать нельзя.
Сергей (universe), это уж сильная фраза. Не буду переубеждать. Но посыл Ваш понял. Донесу до разработчиков cms, может они примут решение, что данное значение также будет определяться в административной части сайта, как и шаблон list
PS: различные вариации отображения можно реализовать в одной вьюшки list и одной rows, используя лишь условия вывода. -
-
-
-
23 апреля 2018 г.
-
На самом деле решений множество.
В public function list_search() приходит $_POST с параметрами запроса. Как вариант, можно сформировать не один запрос для всех задействованных характеристик, как в дефолте, и получить INNER JOIN между ними, а сформировать запрос для каждой характеристики в отдельности. То есть получите несколько запросов к базе данных. Далее остается просто объединить полученные результирующие ряды, исключая повторения элементов. На выходе получите тот же FULL JOIN. Таким образом все это можно прокрутить в public function list_search(), не внося каких-либо серьезных изменений в код, что позволит в дальнейшем спокойно обновлять cms без каких либо усилий. -
-
-
-
12 апреля 2018 г. , редакция: 1523537974
-
Кровля Плюс (krovlyaplus2014), возьмите актуальный дистрибутив DIAFAN.CMS и поставьте с нуля на тот же хостинг. В ходе установки cms подскажет, что у Вас не так. Если все пройдет успешно, но в админку заново установленной cms Вы не сможете попасть, то сообщите, какие записи в логе ошибок.
-
-
-
-
13 апреля 2018 г.
-
В документации к DIAFAN.CMS есть подробные примеры. Например, вот здесь: https://www.diafan.ru/dokument/full-manual/developers/admin/module/
-
-
-
-
10 апреля 2018 г.
-
И так. Вы говорите:И далее уточняете:ЦитатаСейчас занимаюсь этим, много недочетов.Попробую пояснить. То, что Вы указали как недочет, не является таковым. В cms могут находится как собственные товары, так и товары загруженные из 1С:Предприятие. Поэтому идентификаторы хранятся не в одном поле.ЦитатаСуть завязана на id, но id в 1с другого формата.
Почему же нельзя. Можно выгрузить имеющийся товар используя функцию импорта/экспорта товара. Удалить весь товар. Далее синхронизировать товары с 1С. Затем загрузить ранее выгруженный товар с помощью функции импорт/экспорт, но ориентируясь уже на артикул товара (определяется в настройках описания импорта/экспорта товаров). Конечно, так как синхронизируются в таком случае данные с двух источников, то необходим ориентир. Вот в данном случае ориентиром, например, может быть артикул товара. То есть артикулы товаров у Вас в 1С и на сайте должны сходится, если Вы говорите что такие товары являются дубликатом.ЦитатаНельзя просто стереть, и выгрузить из 1с.
Вы уверены, что "победили"? А то далее Вы говорите, что синхронизация после этого у Вас идет не так, как ожидаете.ЦитатаНу ладно, это победил.
Дополнительно добавлю, что пока Вы осваиваете cms, то перед такими манипуляциями, как синхронизация или импорт/экспорт товаров обязательно создавайте резервные копии файлов и базы данных. -
-
-
-
03 апреля 2018 г.
-
Обработка изображений настраивается в административной части сайта, в разделе "Обработка изображений". Непосредственное применение настроек определяется в настройках модуля. Например, в настройках модуля "Интернет-магазин", во кладке "Изображения". Также по аналогии в других модулях. Подробнее написано в документации к DIAFAN.CMS: https://www.diafan.ru/dokument/full-manual/upmodules/images/#Nastroyki
-
-
-
-
30 марта 2018 г.
-
Думаю, что проще объяснить как это сделать через шаблон сайта. Создайте файл, например, с названием test.php в директории custom/название_активной_темы_сайта/themes/
Далее внесите следующее, как пример, содержание в созданный файл:Далее в административной части сайта создайте новую страницу. Нажмите кнопку "Дополнительные параметры" и в открывшейся панели найдите поле "Псевдоссылка". В указанном поле напишите слово "test". В той же панели найдите поле "Дизайн страницы" и в выпадающем списке выберите пункт: "Шаблон страницы test.php [test.php]". Далее сохраните изменения. На этом все. Перейдя по адресу site.ru/test/ у Вас откроется страница с содержанием: "Мой файл test.php".Код<?php
/**
* Шаблон страницы test.php
*
*/
if(! defined("DIAFAN"))
{
$path = __FILE__;
while(! file_exists($path.'/includes/404.php')){
$parent = dirname($path);
if($parent == $path) exit;
$path = $parent;
}
include $path.'/includes/404.php';
}
echo 'Мой файл test.php';
?> -
-
-
-
31 марта 2018 г.
-
О том, что такое тема сайта можно подробнее прочитать в документации: https://www.diafan.ru/dokument/full-manual/sysmodules/themes/
Если Вы используете активную тему, то вместо слова "название_активной_темы_сайта" должно быть именно название активной темы. Открыв на хостинге сайта папку "custom" (находится в корне сайта) Вы увидите подпапки или одну подпапку (зависит от количества установленных тем сайта), название которых совпадает с названием ранее созданных тем сайта.
Если Вы не используете кастомизацию (не используете темы сайта), то Вам необходимо создать указанный ранее файл в директории: themes (находится в корне сайта). -
-
-
-
24 марта 2018 г.
-
В качестве идентификатора можно использовать, например:
- собственное значение (это то значение, которое Вы сами придумываете и следите, чтобы оно не повторялось в других товарах);
- идентификатор на сайте (это значение берется из поля под названием id в таблице базы данных сайта);
- название (идентификатором выступает само название элемента, при этом такие названия должны быть уникальны);
- артикул (идентификатором выступает сам артикул элемента, при этом такие значения должны быть уникальны);
С более подробной информацией можно ознакомиться, посмотрев документацию к DIAFAN.CMS: https://www.diafan.ru/dokument/full-manual/modules/shop/#Import/eksport-YA.Market -
-
-
-
24 марта 2018 г.
-
Если делать дамп средствами cms, то в такой дамп попадут все таблицы cms за исключением нескольких технических. Поэтому такой дамп надо заливать либо средствами cms, либо в уже имеющуюся базу данных cms
Содержание дампа может быть разбито на несколько файлов (зависит о объема данных). Если хостинг поддерживает архивирование, то такие части дампа будут сжаты в один архивный файл, который и будет Вами получен при скачивании дампа. Далее, кода загружается дамп обратно, временные лимиты хостинга могут не позволить обработать все части дампа архивного файла. Поэтому можно сначала разархивировать полученный файл. Затем последовательно импортировать такие файлы (сначала первый, затем второй и т.д.). Таким образом все будет восстановлено.ЦитатаИмпортирую дамп обратно - нет ветки -
-
-
Новости
-
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