Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.
Всего найдено: 1412
-
11 декабря 2017 г. , редакция: 1512948398
-
По мотивам предложения в разделе "Пожелания".
Описание задачи:ЦитатаПоиск по сайту - выхватывает данные из характеристик товара, что портит выдачу данных (хотя кому то это может и быть нужным...)
пример (для понимания о чём я):
- Есть товар с названием где есть артикул:
"Душевая лейка 14.420.bronza"
- Есть товар унитаз с названием артикулом:
"Унитаз 11.221.zoloto"
попробуем найти в поиске по сайту артикул: "14.420"
и получаем в поисковой выдачи и тот и другой товар............
- оказывается "Унитаз 11.221.zoloto" появляется в выдаче из за того, что у этого товара есть
- характеристика с полем "Число" и задан размер 420
И так, на текущи момент актуальная версия DIAFAN.CMS 6.0.6.2.
Берем файл search.inc.php и находим функциюКодprivate function index_item($row, $config, $table_name, $site_id = 0) { ... }
В текущей версии следующий оригинальный код функции:Код/**
* Индексирует страницы модуля, прикрепленного к странице сайта
*
* @param array $row
* @return void
*/
private function index_item($row, $config, $table_name, $site_id = 0)
{
$this->current_insert++;
if(! empty($row["search_no_show"]))
return;
if (isset($row["act"]) && ! $row["act"])
return;
// дополнительные характеристики
if(in_array('param', $config["fields"]) && ! isset($row["param"]) && (! defined('_LANG') || ! isset($row["param"._LANG])))
{
$param = $this->get_param($row["id"], $table_name);
}
foreach ($this->langs as $l)
{
if (isset($row["act".$l]) && ! $row["act".$l])
continue;
$module_rating = 0;
if(! empty($config["rating"]))
{
$module_rating = $config["rating"];
}
$values_for_index = array();
foreach($config["fields"] as $field)
{
if($field == 'param' && isset($param))
{
$values_for_index[] = $param[$l];
}
else
{
$values_for_index[] = (array_key_exists($field.$l,$row) ? $row[$field.$l] : $row[$field]);
}
}
$access = ! empty($row["access"]) ? 1 : 0;
$date_start = ! empty($row["date_start"]) ? $row["date_start"] : 0;
$date_finish = ! empty($row["date_finish"]) ? $row["date_finish"] : 0;
$this->insert($row["id"], $table_name, $values_for_index, $module_rating, $l, $access, $date_start, $date_finish);
}
if($site_id)
{
$this->check_max($site_id, $table_name, $row["id"]);
}
}
Заменяем данный код на такой:Код/**
* Индексирует страницы модуля, прикрепленного к странице сайта
*
* @param array $row
* @return void
*/
private function index_item($row, $config, $table_name, $site_id = 0)
{
$this->current_insert++;
if(! empty($row["search_no_show"]))
return;
if (isset($row["act"]) && ! $row["act"])
return;
// дополнительные характеристики
if(in_array('param', $config["fields"]) && ! isset($row["param"]) && (! defined('_LANG') || ! isset($row["param"._LANG])))
{
$param = $this->get_param($row["id"], $table_name);
}
foreach ($this->langs as $l)
{
if (isset($row["act".$l]) && ! $row["act".$l])
continue;
$module_rating = 0;
if(! empty($config["rating"]))
{
$module_rating = $config["rating"];
}
$values_for_index = array();
foreach($config["fields"] as $field)
{
if($field == 'param' && $table_name == 'shop') continue;
if($field == 'param' && isset($param))
{
$values_for_index[] = $param[$l];
}
else
{
$values_for_index[] = (array_key_exists($field.$l,$row) ? $row[$field.$l] : $row[$field]);
}
}
$access = ! empty($row["access"]) ? 1 : 0;
$date_start = ! empty($row["date_start"]) ? $row["date_start"] : 0;
$date_finish = ! empty($row["date_finish"]) ? $row["date_finish"] : 0;
$this->insert($row["id"], $table_name, $values_for_index, $module_rating, $l, $access, $date_start, $date_finish);
}
if($site_id)
{
$this->check_max($site_id, $table_name, $row["id"]);
}
}
Жирным шрифтом выделено то, что добавлено для достяжения поставленной цели. То есть добавлена вот эта строка:Кодif($field == 'param' && $table_name == 'shop') continue;
Ну все, успехов всем :) -
-
-
-
01 декабря 2017 г. , редакция: 1512088723
-
Указанная ошибка говорит о достижении максимального значения autoincrement. Конечно пояснить, как это исправить немного сложнее, чем сделать самому, так как не понятен уровень квалификации. Но могу предложить такой вариант. Возможно он будет простым решением.
1. Сделайте резервную копию файлов сайта и базы данных на тот случай, если придется все вернуть в исходное состояние. Если не знаете как это сделать, то не делайте лучше ничего. Тогда доверьтесь какому-нибудь знакомому специалисту.
2. Посмотрите таблицу {shop}. id последнего значения должен быть равен 4294967295. Если так, то решаем, например следующим образом.
Далее вариант 1.
2.1.В таблице {shop} смените тип int(11) для поля PRIMARY KEY id (autoincrement) на тип, например, BIGINT(20). Теперь вместо 2^32 значений будет возможным - 2^64
Или вариант 2.
2.2.1. Выгрузите весть товар через импорт/экспорт товаров с ценами, картинками, значениями характеристик, описания, тегами и тому подобным (в общем все все все). Также выгрузите категории товаров. Характеристики товара сохраните самостоятельно. Длинные списки значений характеристик можно очень легко снять, используя функцию - "быстрое редактирование".
2.2.2. Через управление модулями просто удалите модуль "Интернет-магазин". После этого там же вновь создайте модуль интернет магазин.
2.2.3. Импортируйте обратно категории товаров, характеристики товаров, и сами товары используя те же методы, что и ранее при экспорте.
Пожалуй все. Теперь поясню, что произошло. Удалив модуль, Вы удаляете таблицы модуля в базе данных. Далее, после создания модуля, таблицы вновь создадутся с обнуленным autoincrement. А учитывая, что количество товаров у Вас далеко не 2^32, то Вы вновь можете начать исчерпывать выделенный лимит.
Если в таблице {shop} id последнее значения не приблизилось к 4294967295, то выставите в фильтре к таблице следующие значения (применительно именно к Вашей ситуации): site_id = 1, cat_id = 13. Если применив фильтр вылетит строчка, то удалите ее. Естественно перед этим сделайте резервную копию. После удаления строки попробуйте создать товар.
В общем, успехов. -
-
-
-
01 декабря 2017 г. , редакция: 1512108917
-
Нет. У Вас не большое кол-во товаров. Просто autoincremen, скорее всего, достиг своего предела.
Откройте, например, в phpmyadmin Вашу базу данных сайта. Далее откройте таблицу {shop} и посмотрите значение поля id последней строчки. Сообщите данное значение. Также отфильтруйте туже таблицу согласно таких значений: site_id = 1, cat_id = 13. Сообщите, что будет выдано по результатом фильтрации. -
-
-
-
29 ноября 2017 г.
-
Лучше в разделе Проекты данную информацию разместите. Уверен, будет результат.
-
-
-
-
16 ноября 2017 г.
-
1. array_unique - исключаем одинаковые значения
2. sort - сортируем массив (если неизвестно, будет ли упорядоченный массив), так как упрощает следующий этап и сокращает последующий код
3. array_walk - работаем с массивом через callback, т.е. в callback сравниваем два значения и делаем вывод.
Итог: почти все в одной простой строке. Чем не функция? :) -
-
-
-
16 ноября 2017 г.
-
Если данный факт можно воспроизвести на дефолтной версии DIAFAN.CMS, то разместите данное сообщение в разделе Ошибки. Разработчики cms отслеживают данный раздел - все исправят в ближайших обновлениях дистрибутива.
-
-
-
-
10 ноября 2017 г.
-
На мой взгляд здесь необходимо уточнить.Здесь важно не с какими возможностями, а с какими именно фильтрами. Предоставьте ссылку на такие фильтры и участники форума ответят, если сталкивались именно с ними. Или Вас интересуют именно такие возможности? Тогда это вопрос звучал бы так: как реализовать требуемые возможности фильтров. Возможно, участники форума постарались бы Вам помочь именно в реализации. Если же Ваш вопрос по конкретному дополнению к cms, то однозначно его лучше задать автору такого дополнения. Ему виднее, так как именно ему доступен оригинальный код дополнения.ЦитатаМожет кто сталкивался с установкой фильтра по характеристикам товара со следующими возможностями
-
-
-
-
02 ноября 2017 г. , редакция: 1509633497
-
Уточните о какой именно блокировки идет речь? Если Ваш сайт размещен на сервер, который физически входит в сегмент Украины, то там возможна блокировка ресурсов, загружаемых с yandex. Тогда в файлах /themes/functions/show_js.php и /adm/includes/theme.php находим и меняем ровно то, что сказалЦитата
В файлах /themes/functions/show_js.php и /adm/includes/theme.phpЦитатаНаходим и меняем
//yandex.st/jquery/1.10.2/jquery.min.js
//yandex.st/jquery/2.0.3/jquery.min.js
//yandex.st/jquery/form/3.14/jquery.form.min.js
//yandex.st/jquery-ui/1.10.3/jquery-ui.min.js
//yandex.st/jquery/cookie/1.0/jquery.cookie.min.js
на
//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js
//cdnjs.cloudflare.com/ajax/libs/jquery.form/4.2.1/jquery.form.min.js
//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js
//cdn.jsdelivr.net/jquery.cookie/1.4.1/jquery.cookie.min.js
</div>
</div>
Если же речь идет о иной блокировке, например, если в браузере включен режим инкогнито (защита от слежения), то тут немного сложнее. Во-первых, надо определить какие именно скрипты блокируются. Чаще всего это удаленно загружаемые скрипты. Но различные браузеры по разному реализовывают такой режим, поэтому список блокируемых скриптов может быть тоже разным. Во-вторых, как вариант решения, заблокированные скрипты, которые грузятся удаленно, можно скачать просто перейдя по их ссылкам, когда браузер не в режиме инкогнито. И затем положить скаченные скрипты в директорию с файлами сайта. Затем остается лишь исправить пути загрузки скриптов на самом сайте. То есть изменить адрес с удаленной загрузки на адрес того места на хосте, где Вы положили их.
Если же предложенные вариант не исправил ситуацию - браузер все равно блокирует такие скрипты, тогда надо либо корректировать такие скрипты, либо ставить условие на событие. То есть, если определяем, что включен режим блокировки, то переходим к альтернативному решению. -
-
-
-
02 ноября 2017 г. , редакция: 1509655681
-
Перейдите по данным ссылкам и скопируйте полученные файлы себе на хостинг, где лежит сайт, в папку js.
http://yandex.st/jquery/2.0.3/jquery.min.js
http://yandex.st/jquery/form/3.14/jquery.form.min.js
http://yandex.st/jquery-ui/1.10.3/jquery-ui.min.js
https://mc.yandex.ru/metrika/watch.js
Далее в файле show_js.php измените адрес загрузки скриптов с удаленных адресов на адрес хостинга:
//milinto.ru/js/jquery.min.js
//milinto.ru/js/jquery.form.min.js
//milinto.ru/js/jquery-ui.min.js
//milinto.ru/js/watch.js
Далее сбросьте кэш сайта. После этого посмотрите результат. -
-
-
-
12 ноября 2017 г.
-
Все зависит от контекста. Необходимо видеть ошибку. Возможно это и не ошибка. Возможно устаревшие ссылки или ссылки, которые были жестко определены, в кастомной теме уже явились ошибочными. В слепую сложно ответить. Но, если разобрались самостоятельно, то мой респект Вам. Так держать. Ни чего сложного нет.
-
-
-
-
17 октября 2017 г.
-
Владимир (ovengo), вот этоэто не строчка, а шаблонная функция: выводит информацию о заказанных товарах, т. н. корзину.Код
<insert name="show_block" module="cart">
Если корзина пуста, то, конечно, ни чего не будет выведено.Цитатано она не выводит ничего на главной странице.Все верно, если добавили товар в корзину, то тогда будет, что выводить. Это же логично.ЦитатаА вывод получается только на старнице непосредственно с добавленным товаром. -
-
-
-
30 ноября 2020 г.
-
Сформулируйте техническое задание и разместите его на страницах Проекты. Уверен, исполнитель найдётся.
-
-
-
-
07 октября 2017 г.
-
Кодpublic $tables = array(
array(
"name" => "название_таблицы",
// поля таблицы
"fields" => array(
array(
// пример: id
"name" => "название_поля",
// пример: INT(11) UNSIGNED NOT NULL AUTO_INCREMENT
"type" => "описание_поля",// поле переводится на другие языки (true|false)
"multilang" => true,
// комментарий виден из админера базы данных
"comment" => "комментарий к полю",
),
...
),
// ключи таблицы
"keys" => array(
// пример PRIMARY KEY (id) или KEY site_id (`site_id`)
"описание_ключа",
...
),
// комментарий виден из админера базы данных
"comment" => "комментарий к таблице",
),
...
);
Жирным шрифтом выделил то, что Вам нужно для мультиязычности. То есть к описанию поля добавляем толькоКод"multilang" => true,
-
-
-
-
07 октября 2017 г.
-
В настройках модуля "Поиск по сайту" есть параметры:
- Искать все слова сразу
Если не отмечено, ищет хотя бы одно слово.
- Искать часть слова
Если не отмечено, ищет слово и словоформы целиком. Если отмечено, то может найти длинное слово уже по первым трем-четырем символам. Если отмечено, то настройка «Искать все слова сразу» не работает.
- Минимальная длина слова
При изменении параметра необходимо переиндексировать весь сайт. Чем меньше этот параметр, тем больше места занимает поисковый индекс. Значение по умолчанию: 3.
Уверен, для Вашей задачи вполне подойдет. -
-
-
-
17 октября 2017 г.
-
То есть, с Ваших слов вся затыка в выводе галочки подписки на новости при оформлении заказа и кнопки - отписки от новостей? Если да, то так и скажите: как это сделать. Здесь не только подскажут, но и код приведут в пример. Минут за 10 сделаете сами.
А если не так, будте конкретны. Ясно изложите идею без отсылок типа: "вот в windows графический интерфейс клевый, а linux работает стабильно и шустро - вот такой винегрет хочу". Уверен, если идеи стоящие, то минимум они будут в addons, а скорее всего будут и в коробке. -
-
-
Новости
-
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