Ris

Ris

+657
Репутация
3771
Рейтинг
#1 [ЕСТЬ РЕШЕНИЕ] Подскажите пожалуйста как починить профили пользователей 5 мая 2016 в 19:34
Юрий,
А профили пользователей тут не при чем.
У Вас таблица cms_con_directory_of_transport_and_equip отсутствует. Может создавали тип контента, а потом удалили?
#2 Дефис для URL типа контента 4 мая 2016 в 23:06
Jestik,
Так ведь и в двойке слаг формируется с тире. Главное, чтобы это тире в именах таблиц не фигурировало.
#3 Дефис для URL типа контента 4 мая 2016 в 22:54
Нельзя. Мускул категорически против:

  1. You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MariaDB server version FOR the RIGHT syntax TO USE near '-history_cats i WHERE (i.parent_id = '1') ORDER BY i.ns_left' at line 2
  2.  
  3. SELECT i.*
  4. FROM cms_con_story-history_cats i
  5. WHERE (i.parent_id = '1')
  6. ORDER BY i.ns_left
#4 Вам интересно было бы жить в IT кластере 4 мая 2016 в 20:40
Нельзя безумных айтишников селить вместе, отдельно от нормальных людей.
Получится очередной Прюитт-Игоу.
#5 Как пользователю поменять email ? 2 мая 2016 в 22:06

А где взять "Значение поля uLogin ID" Что-то не разберусь ни как)))

Roman
Не надо нигде брать Значение поля uLogin ID. Я тоже не знаю что это такое.
Там же написано: "Заполните это поле, если хотите, чтобы значение было отличным от заданного в опциях компонента uLogin".
Оставьте поле пустым.

Кстати, проверил, юлогин нормально работает вместе с логинзой.
#6 Как пользователю поменять email ? 2 мая 2016 в 21:50
Roman,
Попробуйте и так и так. Потом всем расскажете.
#7 Как пользователю поменять email ? 2 мая 2016 в 21:09

Используйте uLogin для ICMS2

Андрей

Полностью согласен!
uLogin работает четко и корректно. В профиле пользователя появляется емейл и ссылка на профиль в соцсети.
У юлогина есть два решаемых недостатка. Невозможность самому поменять пароль на сайте и входить без юлогиновского аккаунта. Но это решается просьбой к администратору выдать временный пароль. Причем после смены пароля с помощью администратора пользователь может входить на сайт как с помощью юлогина, так и обычным способом!
Второй минус — огромные значки виджета. В обычном месте они выглядят, как пакеты с покупками, брошенные на асфальте перед торговым центром.

Пробовал двигать вправо — ничуть не лучше выглядит.

Проблема решается выносом виджета авторизации в боковую панель. Там он выглядит органично.

#8 Cannot connect to MySQL server: 2 мая 2016 в 20:43
Была такая же проблема. Дошло до ругани с моим хостером.
Решил проблему ограничением активности поисковых ботов. Особенно усердствовал бот от sputnik.ru. Его пришлось вообще забанить.
instantcms.ru/forum/thread23461.html
#9 Как должен выглядеть хук? 1 мая 2016 в 00:01
Спасибо, теперь почти понял.

Так делать не нужно. Используйте методы класса БД или модели.

Fuze

Это тяжелое наследие темного прошлого. Эта функция в данный момент работает на сайте под InstantCMS 1.9. Пять лет работает.

global лучше не использовать, сделать так:

Fuze

Завтра попробую. Еще раз спасибо за помощь! v
#10 Как должен выглядеть хук? 30 апреля 2016 в 23:37

Создайте файл этого хука, пропишите его в манифесте и делайте с моделью что хотите.

Loadырь

Но зачем мне тогда городить огород с хуками, если с моделью делать что хочу?
Я и так просто написал условие во фронтенде и допфункцию в модели. У меня и так всё работает.

Как раз спрашивал, как сделать тоже самое, но не внося изменений в системные файлы (в модель).
#11 Как должен выглядеть хук? 30 апреля 2016 в 19:37

1. Проверить, нет ли уже в движке хука на нужную вам правку функционала.

Fuze
Нет, этого нет и быть не может. Это кроме меня вряд ли кому пригодится.
Для обеспечения спецолимпиады на сайте потребовалось создать в таблице рейтинга новую колонку votedate (время голосования).
После этого создал датасеты "лучшие за день" и "лучшие за вчерашний день". И важно, что именно не дата публикации, а сумма рейтинга проголосовавших за отведенное время имеет значение…
Собственно все работает, но пришлось добавить новую функцию в модель контента:


  1. public function getBest($ctype_name, $dataset)
  2. {
  3. if ($dataset == 'bestweek') {if (date("H")<20)
  4. {
  5. $dfrom = date("Y-m-d H:i:s",mktime(20, 0, 0, date("m") , date("d")-9, date("Y")));
  6. $dto = date("Y-m-d H:i:s",mktime(19, 59, 59, date("m") , date("d"), date("Y")));
  7. }
  8. else
  9. {
  10. $dfrom = date("Y-m-d H:i:s",mktime(20, 0, 0, date("m") , date("d")-7, date("Y")));
  11. $dto = date("Y-m-d H:i:s",mktime(19, 59, 59, date("m") , date("d")+1, date("Y")));
  12. }
  13.  
  14. $sql = "SELECT target_id, SUM(score) as points FROM cms_rating_log WHERE target_subject = 'anec' AND votedate BETWEEN '$dfrom' AND NOW()
  15. GROUP BY target_id ORDER BY points DESC LIMIT 0, 15";
  16. } else {
  17. if (date("H")<20)
  18. {
  19. $dfrom = date("Y-m-d H:i:s",mktime(20, 0, 0, date("m") , date("d")-3, date("Y")));
  20.  
  21. $dto = date("Y-m-d H:i:s",mktime(19, 59, 59, date("m") , date("d")-1, date("Y")));
  22. }
  23. else
  24. {
  25. $dfrom = date("Y-m-d H:i:s",mktime(20, 0, 0, date("m") , date("d")-1, date("Y")));
  26. $dto = date("Y-m-d H:i:s",mktime(19, 59, 59, date("m") , date("d"), date("Y")));
  27. }
  28. $sql="Select target_id, sum(score) as points From cms_rating_log Where votedate Between '$dfrom' And '$dto' Group by target_id Order by points DESC LIMIT 15";
  29. }
  30. $items = array();
  31. $arr = $this->db->query($sql);
  32. while ($joke = mysqli_fetch_assoc($arr)){
  33. global $points;
  34. $id = $joke['target_id'];
  35. $points = $joke['points'];
  36. $table_name = $this->table_prefix . $ctype_name;
  37.  
  38. $this->select('u.nickname', 'user_nickname');
  39.  
  40. $this->join('cms_users', 'u', 'u.id = i.user_id');
  41.  
  42. $this->useCache("content.item.{$ctype_name}");
  43.  
  44. $item = $this->getItemByField($table_name, 'id', $id, function($item, $model){
  45. global $points;
  46. $item['user'] = array(
  47. 'id' => $item['user_id'],
  48. 'nickname' => $item['user_nickname']
  49. );
  50. $item['rating'] = $points;
  51.  
  52.  
  53. return $item;
  54.  
  55. }, 'id');
  56. $items[] = $item;
  57. unset ($points);
  58. }
  59.  
  60. return $items;
  61.  
  62. }
  63.  
  64. }
И условие во фронтенд:

  1. if ($dataset == 'bestyesterday' || $dataset == 'besttoday'){
  2. $items = $this->model->getBest($ctype['name'], $dataset);
  3. $total = 15;} else {
  4. $total = $this->model->getContentItemsCount($ctype['name']);
  5. $items = $this->model->getContentItems($ctype['name']);
  6. }
И вот мне бы хотелось всю эту красоту из системный файлов вынести.
#1 Как должен выглядеть хук? 30 апреля 2016 в 18:41
Почитал про инстантправославие. Проникся идеей выноса всех изменений в отдельные файлы и вызов их по хуку.
Теперь хочу выяснить, как это должно выглядеть с точки зрения создателей CMS.
Допустим, возникла потребность в создании хитрого датасета, который никак средствами стандартной модели не сделать. Или потребовалось в определенном типе контента выводить комментарии в другом порядке и в другом шаблоне.
Как в таком случае активировать вышеупомянутый хук?
Просто в системный файл вписывать условие, что если if(something){$this->runExternalHook(filehook, $parametrs -> $tarametrs) ?
Файл с хуком располагается в месте filehook и в нем содержится класс (или не содержится?) и функция, которую активирует данный хук.
Как все это правильно должно выглядеть?
#12 Взаимозависимые списки select 29 апреля 2016 в 20:56

Какие средства можно использовать для решение данной задачи.

Samuil

Mysql.
MariaDB тоже подойдет.
#13 Сео оптимизация и продвижение 26 апреля 2016 в 21:03

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

Заралик

Это называется оверквотинг. То есть перерасход мониторной бумаги.
Вы знаете как подорожала мониторная бумага?

Попробуйте выделить мышью только нужный текст и нажать "Цитировать выделанное".
#14 [ЕСТЬ РЕШЕНИЕ] Перенос на поддомены 25 апреля 2016 в 19:29
На самом деле, если нужно клонировать дважды сайт с уже готовым контентом — проще сделать это на опенсервере.
Берем восстанавливаем из сохраненной копии базу рабочего сайта в базу на опенсервере. Например дибифоржем.
Потом устанавливаем второй сайт в ту же базу, указав общую таблицу юзеров и другой префикс для остальных таблиц.
Потом создаем вторую базу, также восстанавливаем в неё сохраненную копию рабочего сайта, меняем префиксы у всех таблиц например этим.
Таблицы с измененным префиксом закидываем в первую базу, предварительно удалив вновьсозданные таблицы с другим префиксом.
Также и с третьим сайтом.
После чего имеем грандиозную базу с тремя разными префиксами, сохраняем её резервную копию дибифоржем и восстанавливаем базу на рабочем сайте из этой копии.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.