Ris

Ris

+657
Репутация
3771
Рейтинг
#1 Массовое добавление тега к записям 19 июня 2019 в 16:04

Видимо запрос не верно составлен?

Yar
Запрос верно составлен. А там точно есть записи, у которых категория 184 ?

Попробуйте так:
  1. UPDATE `cms_con_places` SET `tags`= concat(tags,', ослиные ушки нарасхват') WHERE category_id = 184
#2 Imperavi Redactor удаление изображений с сервера 19 июня 2019 в 14:30
Такое не подойдет?
/blogs/zapiski-dinozavra/poisk-i-perenos-neispolzuemyh-kartinok-v-upload.html
#3 Загрузка в поле Изображение - undefined 16 июня 2019 в 17:49
Dmitry,
Если у вас VPS — найдите php.ini и сделайте memory_limit метров 384 или 512 если есть возможность.
Если шаред хостинг — напишите в техподдержку, чтобы лимит памяти добавили.
#4 Почему instantcms 2 не WORDPRESS? 15 июня 2019 в 20:19
На мой взгляд в Инстанте прекрасно всё. Кроме дефолтного шаблона. И дефолтный шаблон прекрасен для понимающего вебмастера, который понимает, как его расширять и модифицировать.
Но люди же же хотят всего сразу из коробки. И они в чем-то правы.
Если есть возможность, было бы неплохо положить в установочный файл пару-тройку шаблонов на выбор. Дефолтный — резиновый — лендинг — визитка.
Мне кажется, что это сильно увеличило бы популярность движка.
И увеличило бы нагрузку на разработчиков и техподдержку…
#5 Изменить принцип работы фильтра в ТК 15 июня 2019 в 11:15

А не проще ли в строке "%{$value}%" убрать проценты?

Loadырь
Тогда уж не лайк, а жОсткий эквал!
  1. public function applyFilter($model, $value) {
  2. return $model->filterEqual($this->name, "{$value}");
  3. }
#6 Изменить принцип работы фильтра в ТК 15 июня 2019 в 00:52

во втором примере накопал на, первый взгяд, нужное.
Но так и не смог добиться чтобы работало как надо.

Олег Васильевич я
Надо было вот тут копать:
www.mysql.ru/docs/man/Regexp.html
Там чернозём толще...
___________________________

Вот так тогда уж:
  1. public function applyFilter($model, $value) {
  2. return $model->filter('i.'.$this->name. " REGEXP '^$value$'") ;
  3. }
#7 Изменить принцип работы фильтра в ТК 15 июня 2019 в 00:07
Олег Васильевич я,
Вот так:
  1. public function applyFilter($model, $value) {
  2. $value_len = strlen($value);
  3. return $model->filterLike($this->name, "%{$value}%")->filterAnd()->filter("CHAR_LENGTH(i.{$this->name}) =". $value_len) ;
  4. }
#8 Изменить принцип работы фильтра в ТК 14 июня 2019 в 23:04
Олег Васильевич я,
Видимо придется как-то фильтровать по длине строки..
Завтра подумаю, сейчас жена зовёт.
#9 В админке не отображаются пользователи 14 июня 2019 в 13:40

но я не понял что значит "Очистите фильтр в таблице над списком пользователей" Подскажите плиз

ignat
Это значит, что ни в одном из этих окошек не должно быть ничего!
#10 Редактор ломает гиф файлы! 14 июня 2019 в 13:34

Подскажите пожалуйста рецепт, как настроить редактор

Дмитрий Баринов
Панель управления — Компоненты — Загрузка изображений
Пресету Редактор: Redactor выставьте разрешение больше, чем размер ваших гифок.
Да хоть 100000х100000 выставляйте, если дисковое пространство на сервере не жалко…
#11 Изменить принцип работы фильтра в ТК 14 июня 2019 в 13:21
Олег Васильевич я,
Давайте рассуждать логически. Если мы хотим, чтобы в выборку попадал хлеб, но не попадала хлеборезка, значит следующим символом после искомой подстроки должен быть либо пробел, либо знак препинания.
Допустим мы ищем в поле content.
Тогда нам нужно зайти в файл \system\fields\html.php, найти там функцию
  1. public function applyFilter($model, $value) {
  2. return $model->filterLike($this->name, "%{$value}%");
  3. }
и привести её к какому-то такому виду:
  1. public function applyFilter($model, $value) {
  2. return $model->filterLike($this->name, "%{$value} %")->filterOr()->filterLike($this->name, "%{$value}.%")->filterOr()->filterLike($this->name, "%{$value},%")->filterOr()->filterLike($this->name, "%{$value}?%");
  3. }
Возможно есть способ проще, но это уже думать надо… laugh
#12 Регистрация на сайте по номеру телефона, а не через e-mail 13 июня 2019 в 15:31
Я предлагаю всем успокоиться и немного подождать.
Разработчики Instantcms в ближайшее время собираются доработать алгоритм авторизации и регистрации. После этого будет возможность модификации способа авторизации при помощи хуков в соответствии с нуждами каждого вебмастера.
#1 Mysql. Игры разума. 12 июня 2019 в 00:07
Небольшая предыстория:
Давно хочу обновить свой сайт до актуальной версии. Но не просто обновить, а практически создать сайт заново и потом инсертить данные в таблицы не изменяя их структуры. При этом правильно создать новые поля в типах контента, избавиться от напрасных компонентов, которые давно удалены, но тут и там всплывают их следы, правильно сделать хуки с учетом накопленного опыта и т.д. То есть глобальная работа над ошибками.
Надеюсь таким образом получить правильно сделанный сайт с правильной структурой и предсказуемым поведением.
Все работы производятся на опенсервере, конфигурация mariadb дефолтная.
Таблицы не мигрирую целиком, а переношу данные инсертом, чтобы не трогать структуру новых таблиц.
То есть например:
  1. INSERT IGNORE INTO новаябаза.cms_comments(`id`, `parent_id`, `level`, `ordering`, `user_id`, `date_pub`, `date_last_modified`, `target_controller`, `target_subject`, `target_id`, `target_url`, `target_title`, `author_name`, `author_email`, `author_url`, `content`, `content_html`, `is_deleted`, `is_private`, `rating`, `is_approved`) SELECT `id`, `parent_id`, `level`, `ordering`, `user_id`, `date_pub`, `date_last_modified`, `target_controller`, `target_subject`, `target_id`, `target_url`, `target_title`, `author_name`, `author_email`, `author_url`, `content`, `content_html`, `is_deleted`, `is_private`, `rating`, `is_approved` FROM стараябаза.cms_comments
  2.  
И всё шло хорошо, пока дело не дошло до комментариев. А их миллион. И после инсерта комментариев из старой базы в новую новый сайт встал колом. Загрузка виджета комментариев 38 секунд.
  1. SELECT i.*, r.score AS `is_rated`, u.nickname AS `user_nickname`, u.is_deleted AS `user_is_deleted`, u.groups AS `user_groups`, u.avatar AS `user_avatar`, IF(online.date_created IS NOT NULL AND TIMESTAMPDIFF(SECOND, online.date_created, NOW()) <= 180, 1, 0) AS `is_online`
  2. FROM cms_comments i
  3. LEFT JOIN cms_users AS u ON u.id = i.user_id
  4. LEFT JOIN cms_sessions_online AS online ON online.user_id = u.id
  5. LEFT JOIN cms_comments_rating AS r ON r.comment_id = i.id AND r.user_id='1'
  6. WHERE (i.is_deleted IS NULL) AND (i.is_approved = '1')
  7. ORDER BY i.date_pub DESC
  8. LIMIT 0, 20
  9. Время выполнения 37.64345 секунд
Стал удалять из запроса по таблице и выяснил, что если не делать запросов в cms_sessions_online, то есть просто установить
  1. LEFT JOIN cms_sessions_online AS online ON online.user_id = 1
то всё летает. Запрос выполняется за 0.00000 секунд

Стал экспериментировать с индексами таблицы cms_sessions_online. И выяснил интересную вещь. Если добавить в индекс date_created столбец user_id, то запросы в комментариях начинают выполняться за ноль секунд. Всё опять летает!

  1. SELECT i.*, r.score AS `is_rated`, u.nickname AS `user_nickname`, u.is_deleted AS `user_is_deleted`, u.groups AS `user_groups`, u.avatar AS `user_avatar`, IF(online.date_created IS NOT NULL AND TIMESTAMPDIFF(SECOND, online.date_created, NOW()) <= 180, 1, 0) AS `is_online`
  2. FROM cms_comments i
  3. LEFT JOIN cms_users AS u ON u.id = i.user_id
  4. LEFT JOIN cms_sessions_online AS online ON online.user_id = u.id
  5. LEFT JOIN cms_comments_rating AS r ON r.comment_id = i.id AND r.user_id='1'
  6. WHERE (i.is_deleted IS NULL) AND (i.is_approved = '1')
  7. ORDER BY i.date_pub DESC
  8. LIMIT 0, 20
  9. Время выполнения 0.00085 секунд
Кто-нибудь из понимающих сможет мне объяснить в чем дело?
#13 Регистрация на сайте по номеру телефона, а не через e-mail 11 июня 2019 в 09:00

Теперь в последней версии можно своими хуками организовать регистрацию и авторизацию по любому полю.

Loadырь
По любому полю… если оно пройдет валидацию на мыльность. smile
  1. if (!$password || !$email || $this->validate_email($email) !== true){
  2. cmsUser::addSessionMessage(LANG_LOGIN_ERROR, 'error');
  3. $this->redirectBack();
  4. }
#14 Регистрация на сайте по номеру телефона, а не через e-mail 10 июня 2019 в 21:49

Достаточно ли для этого только лишь написания определённого хука или компонента?

Polzovinst
Почти достаточно.
Но один системный файл всё же придется править. Там проверка на "мыльность". И если вводить телефон, он не пройдет валидации и до хука дело не дойдет.
У меня два года работает подобный функционал. При каждом обновлении правлю системные файлы...
-------------------------------------------------------------------------------
Написал просьбу на изменение валидации на гитхабе.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.