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

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

  • 09 февраля 2016 г. , редакция: 1455012658
  • Цитата
    Когда убираю параметр cat_id, характеристики из фильтра исчезают, остается одна кнопка Найти

    Дело в том, что при выставлении категории остаются характеристики, которые к ней привязаны, а если все категории, то остаются только общие характеристики
  • 08 февраля 2016 г.
  • Цитата
    нет доступа к phpmyadmin

    Что такое phpmyadmin в данном случае, просто сценарий. Пишите вручную php команды на выгрузку всех данных базы. Как вариант, создайте тестовый хост, залейте туда нетронутый последний экземпляр сайта, затем аккуратно перенесите данные из последней бд на тестовую. Вот и откатились.
  • 08 февраля 2016 г. , редакция: 1454945854
  • Вот рекомендация разработчика cms.diafan https://user.diafan.ru/forum/show3045/#27865
    Цитата
    Виталий (DIAFAN.CMS)
    А-а, так это еще 5.3 обновленная..? Хм. Ну не знаю, это точно в ТП, наверное, с доступами. Случай совсем уникальный.

    Т.е. надо смотреть, что у Вас получилось в итоге на хосте. Со слов дать рекомендацию затруднительно, т.к. данную ситуацию либо надо моделировать, либо получить доступ к Вашему хосту и смотреть на месте.
  • 08 февраля 2016 г. , редакция: 1454946146
  • Обратите внимание на это сообщение https://user.diafan.ru/forum/show3045/#27854
    Цитата
    Виталий (DIAFAN.CMS)
    ...
    У нас был косяк с обновлением со старых версий, я писал раньше, когда народ обновлялся с 5.4 до 6.0, затем откатывался обратно, и снова обновлялся, там множились файлы всех версий в кастоме до абсурда. Это проблемы не было у тех, кто просто обновлялся, без откатов. Мы это ошибку исправили, но у тех, у кого она была, косяк с размноженными файлами в кастоме остался. Если надо, могу дать инструкцию, как починить такой запутанный сайт.
    ...

    и на это https://user.diafan.ru/forum/show3045/#27857
    Цитата
    Виталий (DIAFAN.CMS)
    Значит, смотрите, только Вам даю! Больше никому!
    Копируете из текущей сборки:
    modules/custom/custom.inc.php
    modules/update/update.inc.php
    modules/update/admin/update.admin.action.php
    в папку своей темы в custom.

    Затем откатываетесь до версии, из которой файлы скинулись в тему. Можно попробовать пооткатываться на разные точки. Вперед назад. Увидеть, что лишние файлы из custom ушли. И тогда вернуться опять к новой точке обновления. Потом и эти три файла уйдут из папки custom. Как-то так.

    Но копию сайта лучше сделать перед этим! А то даже я на одном своем сайте все сломал.
  • 06 февраля 2016 г. , редакция: 1454789893
  • В оригинальном файле cart.view.info.php (версии diafan.cms 6.0.1.0) присутствует ошибка (мелкая).
    Ищем строчку
    Код
    <td class="cart_remove"><span class="js_cart_remove" confirm="'.$this->diafan->_('Вы действительно хотите удалить товар из корзины?', false).'"><input type="checkbox" id="del'.$row["id"].'" name="del'.$row["id"].'" value="1"></span></td>

    и меняем её на эту
    Код
    <td class="cart_remove"><span class="js_cart_remove" confirm="'.$this->diafan->_('Вы действительно хотите удалить товар из корзины?', false).'"><input type="hidden" id="del'.$row["id"].'" name="del'.$row["id"].'" value="1"></span></td>

    Сбрасываем кэш, проверяем.
  • 07 февраля 2016 г.
  • Круто, Вы же хотели, чтоб удаляло, но не сказали, что не надо все.
    Ок.
    Цитата
    В оригинальном файле cart.view.info.php (версии diafan.cms 6.0.1.0) присутствует ошибка (мелкая).

    На самом деле присутствует две ошибки. Все сначало. Берем оригинальный файл cart.view.info.php (версии diafan.cms 6.0.1.0)
    Ищем строчку
    Код
    <td class="cart_remove"><span class="js_cart_remove" confirm="'.$this->diafan->_('Вы действительно хотите удалить товар из корзины?', false).'"><input type="checkbox" id="del'.$row["id"].'" name="del'.$row["id"].'" value="1"></span></td>

    и меняем её на эту
    Код
    <td class="cart_remove"><span class="js_cart_remove" confirm="'.$this->diafan->_('Вы действительно хотите удалить товар из корзины?', false).'"><input type="hidden" id="del'.$row["id"].'" name="del'.$row["id"].'" value="0"></span></td>

    Сбрасываем кэш, проверяем.
  • 07 февраля 2016 г.
  • Если продолжить, то в оригинальном файле useradmin.view.panel.php (версии diafan.cms 6.0.1.0) присутствует ТОЖЕ ошибка (мелкая).
    Эта строчка:
    Код
    <a href="'.($link_current_edit==BASE_PATH.ADMIN_FOLDER.'/site/edit1/'?BASE_PATH.ADMIN_FOLDER.'/'.($_GET["help"]?'?help=1':'site/'):$link_current_edit).'" title="'.$this->diafan->_('Редактировать текущую страницу в административной части', false).'">


    Должна быть такой
    Код
    <a href="'.($link_current_edit==BASE_PATH.ADMIN_FOLDER.'/site/edit1/'?BASE_PATH.ADMIN_FOLDER.'/'.(!empty($_GET["help"])?'?help=1':'site/'):$link_current_edit).'" title="'.$this->diafan->_('Редактировать текущую страницу в административной части', false).'">

  • 08 февраля 2016 г. , редакция: 1454918641
  • Если включить режим отображения ошибок в diafan.cms 6.0.1.0 (на текущий момент это последняя версия), авторизоваться как администратор сайта и зайти на страницу сайта клиентской части (не административной части сайта), то увидите ошибку.
    Цитата
    Undefined index: help
    /site.ru/public_html/modules/useradmin/views/usera1dmin.view.panel.php:41

    Для ее решения необходимо использовать условие
    Код
    !empty($_GET["help"])?

    Кстате на демо версии http://demo.diafan.ru/ сегодня ошибку исправели, но в пакете DIAFAN.CMS 6.0.1.0 от 4 февраля 2016 г. она еще есть.

    Или Вы спрашиваете про особенности использования условий проверки?
    Код

    if ($_GET["help"])
    {
    }

    Код

    if (isset($_GET["help"]))
    {
    }

    Код

    if (!empty($_GET["help"]))
    {
    }
  • 08 февраля 2016 г. , редакция: 1454920332
  • Цитата
    спорить о быстродействии интерпретируемых языков программирования, как минимум не рационально :)

    Согласен. Но хотел бы пояснить следующее. У каждого программиста, если присмотреться, есть свой подчерк. Также есть стиль, которому придерживаются программисты diafan. Предлагая свое решение, я основывался именно исходя из этого стиля.
    Говоря о быстродействии интерпретируемых языков программирования, то в данном случае это не важно. Это было бы важно, если это был бы (например) процесс импортирования/экспортирования данных, где большие массивы данных и ограниченное время на выполнение скрипта.
    Да, Gar|k (DIAFAN.CMS) и Виталий (DIAFAN.CMS), это пояснение конечно же мной адресовано не Вам, это Вы и без меня знаете. Пояснял я это для новичков, которые только знакомятся с программированием
  • 08 февраля 2016 г. , редакция: 1454920545
  • Цитата
    Ну вот, мы сами исправили, но кое-кто продолжает считать, что мы исправляем только после

    Виталий (DIAFAN.CMS), да я это вообще не считаю "косяком". Это мелкая опечатка.
    Цитата
    Не боги горшки обжигают
  • 08 февраля 2016 г. , редакция: 1454964647
  • Цитата
    на одном проекте была тема с тем на форум/вопро-ответ/отзывы постились всякие кракозябры/ реклама и не помогала никакая капча/рекапча абсолютно, при чем даже метрика не отобразала таких посетителей ( на форуме даже была тема когда человек руками каждый день чистил - Диафан был ни при чем

    Это бред. Поясню. Готовим робота иметирующего поведение человека на сайте. Ставим перед ним задачу писать сообщения на форуме определенного содержания. Защита: в настройках diafan.cms ставим использование капчи и (или) публиковать на сайте после проверки модератором.
    OOO "СЕРВИСОПТКОМ" (SERVOPTKOM), у Вас наболело из-за того, что не используете возможности cms? Не воспринимайте это за оскарбление в Ваш адрес. Просто очень часто встречаюсь с тем, что люди делают выводы не на чем не основываясь.
    Да, Вы говорите еще про фаерволы (полагал, что Вы скажите еще про уровни L2, L3). А Вы в курсе как они работают или его просто установили и считаете, что все Ок.
  • 09 февраля 2016 г. , редакция: 1455013109
  • Уточню, вы приводите лог авторизации
    Цитата
    auth.txt

    Но он здесь лишь второстипенен, нужен лог работы с файлами, лог веб сервера (уточню лог веб сервера, это не лог работы сервака, а лог apache и т.п.) + лог ssh, ftp. Т.е. логи, позволяющие понять откуда зараженный файл прилетел
  • 09 февраля 2016 г.
  • Любимов Павел (webnavigator), спасибо. Код интересный. Тяга у меня к этому (хобби). Могу позже привести пример BackDoor написанного практически без единой буквы - он мне больше нравится.

    И так, в распоряжении soderzhimoe-icon.php.pdf (код плохиша), auth.txt (лог авторизации, не расширенный), log_proftpd.txt (только лог открытия и закрытия ссесий ftp, т.е. не расширенный)
    С этого делать вывод не возможно. НО вы обращали внимание на это
    Цитата
    Failed password for root from 183.3.202.107 port 37110 ssh2

    И это с изрядной периодичностью. Если это не владелец, то это тупой подбор с одного ip
  • 09 февраля 2016 г.
  • Дополню. Т.е. виден постоянный подбор пороля с адреса 183.3.202.107. При этом подбор для root? Предположу, что у Вас, OOO "СервисОптКом" (Servoptkom), все таки свистнули парольку. Так, что это либо хост виноват, либо Вы. Почему я предположил, что хост. Да потому, что нельзя разрешать соединение под root с удалёнки. Это первое, что ломают (имя - стандарт, остается подбор пароля).
  • 05 февраля 2016 г.
  • Полагаю это не полный текст ошибки. Если есть сложности с программированием, то перезалейте файл cart.action.php (возьмите его из оригинального пакета cms.diafan). Сбрости кэш и проверьте, повторится ли ошибка.
  • 13 октября 2016 г. , редакция: 1476345591
  • Эхх. Что с Вами будешь делать. Думал Максим (web-prosto) отпишется, что решил.
    Цитата
    Ладно, а то уже от темы отошли тут... пойду дальше пытаться разбираться... когда решится задача, то отпишусь и тут...
    Наверно забыл.

    Продолжаю. Берем файл clauses.model.php, ищем функцию
    Код
    public function show_block($count, $site_ids, $cat_ids, $sort, $images, $images_variation, $tag){ ... }
    и излагаем ее вот так
    Код
    public function show_block($count, $site_ids, $cat_ids, $sort, $images, $images_variation, $tag)
    {
    $time = mktime(23, 59, 0, date("m"), date("d"), date("Y"));

    if($sort == 'keywords')
    {
    if($this->diafan->_site->titlemodule)
    {
    $title = $this->diafan->_site->titlemodule;
    }
    else
    {
    $title = $this->diafan->_site->name;
    }
    }
    $where = '';

    //кеширование
    $cache_meta = array(
    "name" => "block",
    "cat_ids" => $cat_ids,
    "site_ids" => $site_ids,
    "count" => $count,
    "lang_id" => _LANG,
    "time" => $time,
    "sort" => $sort.($sort == 'keywords' ? $title : ''),
    "current" => ($this->diafan->_site->module == 'clauses' && $this->diafan->_route->show ? $this->diafan->_route->show : ''),
    "images" => $images,
    "images_variation" => $images_variation,
    "access" => ($this->diafan->configmodules('where_access_element', 'clauses') || $this->diafan->configmodules('where_access_cat', 'clauses') ? $this->diafan->_users->role_id : 0),
    "tag" => $tag,
    );

    if ($sort == "rand" || ! $result = $this->diafan->_cache->get($cache_meta, "clauses"))
    {
    $minus = array();
    $one_cat_id = count($cat_ids) == 1 && substr($cat_ids[0], 0, 1) !== '-' ? $cat_ids[0] : false;
    if(! $this->validate_attribute_site_cat('clauses', $site_ids, $cat_ids, $minus))
    {
    return false;
    }
    $inner = "";
    if($cat_ids)
    {
    $inner = " INNER JOIN {clauses_category_rel} as r ON r.element_id=e.id"
    ." AND r.cat_id IN (".implode(',', $cat_ids).")";
    }
    elseif(! empty($minus["cat_ids"]))
    {
    $inner = " INNER JOIN {clauses_category_rel} as r ON r.element_id=e.id"
    ." AND r.cat_id NOT IN (".implode(',', $minus["cat_ids"]).")";
    }
    $where = '';
    if($site_ids)
    {
    $where .= " AND e.site_id IN (".implode(",", $site_ids).")";
    }
    elseif(! empty($minus["site_ids"]))
    {
    $where .= " AND e.site_id NOT IN (".implode(",", $minus["site_ids"]).")";
    }
    if($sort == 'keywords')
    {
    Custom::inc('includes/searchwords.php');
    $searchwords = new Searchwords();
    $searchwords->max_length = $this->diafan->configmodules("max_length", "search");
    $names = $searchwords->prepare($title);
    if(empty($names))
    {
    return false;
    }

    $keys = DB::query_fetch_key_value("SELECT id, keyword FROM {search_keywords} WHERE keyword IN ('".implode("', '", $names)."')", "keyword", "id");
    if(count($keys) < count($names))
    {
    return;
    }
    $inner .= " INNER JOIN {search_results} AS sr ON sr.element_id=e.id AND sr.table_name='clauses'";
    $inner .= " INNER JOIN {search_index} AS i ON sr.id=i.result_id AND i.keyword_id IN ('".implode("', '", $keys)."') AND i.rating=0";
    }
    if($this->diafan->_site->module == 'clauses' && $this->diafan->_route->show)
    {
    $where .= $where.' AND e.id<>'.$this->diafan->_route->show;
    }
    if($tag)
    {
    $t = DB::query_fetch_array("SELECT id, [name] FROM {tags_name} WHERE [name]='%s' AND trash='0'", $tag);
    if(! $tag)
    {
    return false;
    }
    $inner .= " INNER JOIN {tags} AS t ON t.element_id=e.id AND t.element_type='element' AND t.module_name='clauses' AND t.tags_name_id=".$t["id"];
    }

    if ($sort == "rand")
    {
    $max_count = DB::query_result(
    "SELECT COUNT(DISTINCT e.id) FROM {clauses} as e"
    .$inner
    .($this->diafan->configmodules('where_access_element', 'clauses') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='clauses' AND a.element_type='element'" : "")
    ." WHERE e.[act]='1' AND e.trash='0' AND e.created<%d"
    .($this->diafan->_site->module == 'clauses' && $this->diafan->_route->show ? " AND e.id<>".$this->diafan->_route->show : '')
    ." AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
    .$where
    .($this->diafan->configmodules('where_access_element', 'clauses') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : ''),
    $time, $time, $time
    );
    $rands = array();
    for ($i = 1; $i <= min($max_count, $count); $i++)
    {
    do
    {
    $rand = mt_rand(0, $max_count - 1);
    }
    while (in_array($rand, $rands));
    $rands[] = $rand;
    }
    }
    else
    {
    $rands[0] = 1;
    }
    $result["rows"] = array();

    foreach ($rands as $rand)
    {
    switch($sort)
    {
    case "date":
    $order = ' ORDER BY e.created DESC, e.id DESC';
    break;

    case "rand":
    $order = '';
    break;

    default:
    $order = ' ORDER BY e.sort DESC, e.id DESC';
    break;
    }
    $rows = DB::query_range_fetch_all(
    "SELECT e.id, e.[name],e.[anons], e.timeedit, e.site_id, e.created FROM {clauses} AS e"
    .$inner
    .($this->diafan->configmodules('where_access_element', 'clauses') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='clauses' AND a.element_type='element'" : "")
    ." WHERE e.[act]='1' AND e.trash='0' AND e.created<%d"
    .($this->diafan->_site->module == 'clauses' && $this->diafan->_route->show ? " AND e.id<>".$this->diafan->_route->show : '')
    ." AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
    .$where
    .($this->diafan->configmodules('where_access_element', 'clauses') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
    ." GROUP BY e.id"
    .$order,
    $time, $time, $time,
    $sort == "rand" ? $rand : 0,
    $sort == "rand" ? 1 : $count
    );

    $result["rows"] = array_merge($result["rows"], $rows);
    }
    $this->elements($result["rows"], array("count" => $images, "variation" => $images_variation));

    // если категория только одна, задаем ссылку на нее
    if (!empty($result["rows"]) && $one_cat_id)
    {
    $cat = DB::query_fetch_array("SELECT [name], site_id, id FROM {clauses_category} WHERE id=%d LIMIT 1", $one_cat_id);

    $result["name"] = $cat["name"];
    $result["link_all"] = $this->diafan->_route->link($cat["site_id"], $cat["id"], 'clauses', 'cat');
    $result["category"] = true;
    }
    // если раздел сайта только один, то задаем ссылку на него
    elseif (!empty($result["rows"]) && count($site_ids) == 1)
    {
    $result["name"] = DB::query_result("SELECT [name] FROM {site} WHERE id=%d LIMIT 1", $site_ids[0]);
    $result["link_all"] = $this->diafan->_route->link($site_ids[0]);
    $result["category"] = false;
    }
    if(! empty($result["rows"]) && $tag)
    {
    $result["name"] .= ': '.$t["name"];
    }
    //сохранение кеша
    if ($sort != "rand")
    {
    $this->diafan->_cache->save($result, $cache_meta, "clauses");
    }
    }
    foreach ($result["rows"] as &$row)
    {
    $this->prepare_data_element($row);
    }
    foreach ($result["rows"] as &$row)
    {
    $this->format_data_element($row);
    }

    // это то, что добавили
    foreach ($result["rows"] as $key => $r_w)
    $result["rows"][$key]["counter"] = $this->get_counter_view($r_w["id"]);

    return $result;
    }

    Можно продолжить теперь не только для шаблонного тега статей, но и для вывода похожих статей. Находим функцию
    Код
    public function show_block_rel($count, $images, $images_variation){ ... }
    и излагаем ее вот так
    Код
    public function show_block_rel($count, $images, $images_variation)
    {
    $time = mktime(23, 59, 0, date("m"), date("d"), date("Y"));

    //кеширование
    $cache_meta = array(
    "name" => "block_rel",
    "count" => $count,
    "lang_id" => _LANG,
    "element_id" => $this->diafan->_route->show,
    "images" => $images,
    "images_variation" => $images_variation,
    "access" => ($this->diafan->configmodules('where_access_element', 'clauses') || $this->diafan->configmodules('where_access_cat', 'clauses') ? $this->diafan->_users->role_id : 0),
    "time" => $time
    );

    if (! $result = $this->diafan->_cache->get($cache_meta, "clauses"))
    {
    $result["rows"] = DB::query_range_fetch_all(
    "SELECT e.id, e.[name], e.[anons], e.created, e.timeedit, e.site_id FROM {clauses} AS e"
    ." INNER JOIN {clauses_rel} AS r ON e.id=r.rel_element_id AND r.element_id=%d"
    .($this->diafan->configmodules("rel_two_sided") ? " OR e.id=r.element_id AND r.rel_element_id=".$this->diafan->_route->show : '')
    .($this->diafan->configmodules('where_access_element', 'clauses') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='clauses' AND a.element_type='element'" : "")
    ." 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)"
    .($this->diafan->configmodules('where_access_element', 'clauses') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
    ." GROUP BY e.id"
    ." ORDER BY e.sort DESC",
    $this->diafan->_route->show, $time, $time, $time, 0, $count
    );
    $this->elements($result["rows"], array("count" => $images, "variation" => $images_variation));
    $this->diafan->_cache->save($result, $cache_meta, "clauses");
    }
    foreach ($result["rows"] as &$row)
    {
    $this->prepare_data_element($row);
    }
    foreach ($result["rows"] as &$row)
    {
    $this->format_data_element($row);
    }

    // это то, что добавили
    foreach ($result["rows"] as $key => $r_w)
    $result["rows"][$key]["counter"] = $this->get_counter_view($r_w["id"]);

    return $result;
    }


    М-да. Если у кого-нибудь не получилось (а данный код я проверил - работает), то не забудьте в настройках модуля отметить следующие пункты, а то наверняка будите думать, что приведенный код - ошибочный. См. картинку.


    Ну, как-то так. Надеюсь принцип понятен. Успехов, коллеги.

Новости

  • 25 марта, вторник
  • Мы обновили систему тарифов, учитывая опыт работы с клиентами и современные рыночные условия. Новая тарифная сетка разработана специально для того, чтобы лучше отвечать вашим потребностям. Резкого повышения цен не произошло. Более того, некоторые тарифы даже стали выгоднее и доступнее. 
  • 17 января
  • В преддверии 2025 года была выпущена сборка 7.2.5, которая не приносит радикальных изменений в функциональности, но способствует повышению стабильности работы системы и расширению возможностей облачного сервиса для создания сайтов.
  • 18 июня 2024 г.
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.