Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.
Всего найдено: 1415
-
05 июля 2018 г. , редакция: 1530819467
-
ЦитатаИтого отдельные характеристики выпилить из поиска нельзя.
На форуме уже давалось решение: https://user.diafan.ru/forum/show4396/#42878 Нужно чуть доработать реакцию именно на определенные характеристики. И все, делов то.
Цитатак сожалению мы не можем выпилить отдельных характеристики
Ну не знаю, в чем сложность то? Все ж элементарно. Нужно лишь желание вникнуть, дальше дело техники.
ЦитатаОсталась одна дикая штука: морфология
Возможно самое простое для Вас решение, это интегрировать поиск, например, от yandex: https://site.yandex.ru/ Интеграция описана на приведенной странице. Всего-то пару строк скопировать и вставить. Там и морфология есть, и для индексации полезно. -
-
-
-
24 июня 2018 г.
-
При удалении темы, происходит физическое удаление файлов с хостинга. Восстановить удаленную тему возможно из резервных копий, если Вы делаете таковые. Начиная с версии DIAFAN.CMS 6.0.7.1 также при удалении темы сайта возможно физическое удаление информации из базы данных, если пользователь ответит утвердительно на такое предложение в возникающем диалоговом окне. Аналогичное поведение и в разделе "Дополнения к cms".
-
-
-
-
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 -
-
-
Новости
-
25 марта, вторник
-
Мы обновили систему тарифов, учитывая опыт работы с клиентами и современные рыночные условия. Новая тарифная сетка разработана специально для того, чтобы лучше отвечать вашим потребностям. Резкого повышения цен не произошло. Более того, некоторые тарифы даже стали выгоднее и доступнее.
-
17 января
-
В преддверии 2025 года была выпущена сборка 7.2.5, которая не приносит радикальных изменений в функциональности, но способствует повышению стабильности работы системы и расширению возможностей облачного сервиса для создания сайтов.
-
18 июня 2024 г.
-
В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
Блоги
-
24.04.2024
-
Выпустили новую сборку DIAFAN.CMS 7.1.4.
Блоги
-
12.01.2024
-
В данном руководстве познакомим вас с панелью управления DIAFAN.CMS