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

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

  • 19 июня 2018 г.
  • Цитата
    Такое бывает, когда скрипт пытается отправить письмо и не может.

    Чуть-чуть уточню. В cms возможны два варианта отправки писем. Первый вариант - отправка с помощью php-скрипта. Это быстрый вариант, но, так как спамеры злоупотребляют этим, большинство авторитетных почтовых серверов либо отправляют такие письма в спам, либо вообще блокируют их доставку. Второй вариант - отправка с помощью SMTP. В данном случае при отправке письма идет взаимодействие с внешним почтовым сервером. И здесь скорость отправки зависит от множества факторов. Например, от настроек почтового сервера (могут быть выставлены задержки и иные финты). Также может влиять и текущая загруженность почтового сервера. В общем много факторов и в каждом случае они индивидуальны (поэтому время задержки может варьироваться). В свою очередь cms вынуждена дожидаться ответа от почтового сервера. Как только получен ответ, cms завершает заложенные в нее процессы.

    Цитата
    А ещё крутилку-спиннер планируем же мы поставить? ;)

    Индикатор процесса поставить не проблема. Важна заинтересованность в этом. А индикатор заинтересованности - это раздел "Пожеланий": https://user.diafan.ru/wishlist/
  • 28 мая 2018 г.
  • Скорее всего у Вас в настройках активирован пункт - авторизация по e-mail адресу, а не по логину. Проверить легко: при авторизации первое поле у Вас звучит как "Логин:" или "E-mail:"? Как говориться надо вводить то, что необходимо при текущих настройках.
  • 30 ноября 2018 г.
  • Цитата
    А мне делать будет не красиво наверное

    У меня другое мнение. Делать можно. И не надо смотреть, что кто-то уже сделал. Это нормальная здоровая конкуренция. Вот плагиат - плохо, а вложить свою реализацию - хорошо.
  • 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;
    }

    Вам необходимо проверить правильный ли у Вас указан путь к анимации.
  • 27 апреля 2018 г.
  • Цитата
    А так по-моему делать нельзя.

    Сергей (universe), это уж сильная фраза. Не буду переубеждать. Но посыл Ваш понял. Донесу до разработчиков cms, может они примут решение, что данное значение также будет определяться в административной части сайта, как и шаблон list

    PS: различные вариации отображения можно реализовать в одной вьюшки list и одной rows, используя лишь условия вывода.
  • 24 апреля 2018 г. , редакция: 1524529301
  • Цитата
    Как в этом случае подключать новый шаблон оформления?
    Все так же. В моделе модуля идет определение переменной $result["view_rows"]

    Попробую пояснить на примере. Возьмем файл shop.model.php. В этом файле возьмем функцию вывода списка товаров
    Код
    public function list_()
    . В указанной функции определяется представление списка, например,
    Код
    $this->result["view"] = 'list';
    . То есть представление в данном случае определено в файле shop.view.list.php. Далее представление уже элементов в списке, как было ранее, жестко определялось в shop.view.list.php. Теперь же этой жесткости нет. В той же функции
    Код
    public function list_()
    можно изменить как основное представление, так и представление списков исходя из каких-либо условий (т.е. не трогая основное представление). Для этого нужно лишь изменить значение, например,
    Код
    $this->result["view_rows"] = 'rows';
    То есть представление элементов списка определено в shop.view.rows.php.

    Цитата
    Это понятно, но ведь не зря новую конструкцию ввели, для скорости или еще для чего
    Все верно. Такой подход позволяет легко решить множество вопросов. Например, во время отработки ajax в action можно изменить не только основное представление, но и представление списка элементов не плодя полукопии основного представления.

    Как практический пример, то такой подход используется в реализации кнопки "Показать еще". Для этого в настройках модуля активируем соответствующий пункт и на странице списка элементов появиться кнопка "Показать еще". Нажав такую кнопку список элементов на странице дополниться еще одной партией списка, сменив пагинацию и url-адрес без перезагрузки самой страницы.
  • 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"] = 'rows_xxx';
    echo $this->get($this->result["view_rows"], 'shop', $result);
    Разница в таких вариантах в том, что при втором варианте в представление элементов списка придет измененное значение $this->result["view_rows"].

    Если Вы переопределили $this->result["view_rows"] в представлении, то, например, для того, чтобы задействовать функционал кнопки "Показать еще" Вам будет необходимо внести изменения в логику ее action, что тоже очень легко. Или не изменять логику, если не нужен такой функционал.
  • 27 апреля 2018 г. , редакция: 1524815107
  • Цитата
    Виталий позже даст комментарии на этот счёт.

    Попробую разъяснить некоторые моменты, по которым возникают вопросы.

    Возьмем в качестве примера модуль "Интернет-магазин", а именно вывод списка товаров. И так, сами данные для списка товаров генерирует public function list_() (modules/shop/shop.model.php). В указанной функции задается значение
    Код
    $this->result["view_rows"] = 'rows';
    Такое значение в последующем будет использовано в представлении (modules/shop/views/shop.view.list.php) следующим образом:
    Код
    //вывод списка товаров
    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>';
    }
    Так как в моделе модуля было определено, что $this->result["view_rows"] = 'rows';, то выражение $this->get($result["view_rows"], 'shop', $result); будет равно следующему:
    Код
    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>';
    }
    То ничего страшного не произойдет. Все будет работать так, как и задумывалось Вами ранее.

    Если же в представлении Вы используете, например, другое указание для вывода элементов в списке:
    Код
    echo $this->get('rows_xxx', 'shop', $result);
    То так же ничего страшного не произойдет за исключением. Например, при отработке нажатия кнопки "Показать еще" будет использован шаблон, указанный в $this->result["view_rows"] = 'rows';, что вызовет расхождения в логике отображения элементов списка.

    Если Вам не требуется функционал кнопки "Показать еще" или иной функционал, завязанный на $this->result["view_rows"], то можно ничего не менять и действовать по старому. Если же требуется, то правильным будет определение такого значения в модели. Например, выдержка из кастомизированного файла shop.model.custom.php:
    Код
    /**
    * Генерирует данные для списка товаров
    *
    * @return void
    */
    after public function list_()
    {
    $this->result["view_rows"] = 'rows_xxx';
    }
    Таким образом можно легко переопределить значение, не переопределяя весь код функции.

    Возможно в последующем, если это будет нужным, данное направление будет усовершенствовано и определение такого значения будет выведено в административную часть сайта. Тогда в моделе не потребуется, что либо дописывать.
  • 27 апреля 2018 г. , редакция: 1524820231
  • Дополню. Чтобы переопределить action для кнопки "Показать еще", достаточно взглянуть на html-код этой кнопки (скриншот прилагается). В поле action будет указано название функции
    Код
    <input type="hidden" name="action" value="list_">
    То есть в данном случае необходимо изменить или добавить, если ее нет, функцию list_. Cms автоматически поймет, что action для кнопки был переопределен.

    Еще в дополнение. В том же html-коде можно обратить внимание на строчку
    Код
    <input type="hidden" name="mode" value="model">
    В поле mode значение model говорит, что будет задействовано поведение, которое определено в моделе модуля. Если Вы добавите ту же функцию в action, то значение mode автоматически измениться на action. Соответственно cms задействует именно Вашу функцию в action.
  • 23 апреля 2018 г.
  • На самом деле решений множество.

    В public function list_search() приходит $_POST с параметрами запроса. Как вариант, можно сформировать не один запрос для всех задействованных характеристик, как в дефолте, и получить INNER JOIN между ними, а сформировать запрос для каждой характеристики в отдельности. То есть получите несколько запросов к базе данных. Далее остается просто объединить полученные результирующие ряды, исключая повторения элементов. На выходе получите тот же FULL JOIN. Таким образом все это можно прокрутить в public function list_search(), не внося каких-либо серьезных изменений в код, что позволит в дальнейшем спокойно обновлять cms без каких либо усилий.
  • 12 апреля 2018 г. , редакция: 1523537974
  • Кровля Плюс (krovlyaplus2014), возьмите актуальный дистрибутив DIAFAN.CMS и поставьте с нуля на тот же хостинг. В ходе установки cms подскажет, что у Вас не так. Если все пройдет успешно, но в админку заново установленной cms Вы не сможете попасть, то сообщите, какие записи в логе ошибок.
  • 10 апреля 2018 г.
  • И так. Вы говорите:
    Цитата
    Сейчас занимаюсь этим, много недочетов.
    И далее уточняете:
    Цитата
    Суть завязана на id, но id в 1с другого формата.
    Попробую пояснить. То, что Вы указали как недочет, не является таковым. В cms могут находится как собственные товары, так и товары загруженные из 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/
    Далее внесите следующее, как пример, содержание в созданный файл:
    Код
    <?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';
    ?>
    Далее в административной части сайта создайте новую страницу. Нажмите кнопку "Дополнительные параметры" и в открывшейся панели найдите поле "Псевдоссылка". В указанном поле напишите слово "test". В той же панели найдите поле "Дизайн страницы" и в выпадающем списке выберите пункт: "Шаблон страницы test.php [test.php]". Далее сохраните изменения. На этом все. Перейдя по адресу site.ru/test/ у Вас откроется страница с содержанием: "Мой файл 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 марта 2018 г.
  • Цитата
    Да. И в принципе я не вижу почему не должно хватать ресурсов на простейшую операцию.

    Вообще настройки php влияют только на само php и не влияют на настройки базы данных. Но именно в указанном случае виновен браузер, который не верно отдает mime тип. Решение, как всегда, элементарно :)
Показывать по:

Новости

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