Ris

Ris

+657
Репутация
3771
Рейтинг
#1 HOOK fulltext_search - Как объединить результаты поиска? 6 марта 2017 в 23:30
А если всё это выводить одной пачкой? Нет thread_id — значит item — тема и выводим сам item. Нет контента — выводим дескрипшн.

  1.  
  2. if (!empty($item['thread_id'])) {$thread = $forum_model->getThread($item['thread_id']);}
  3. else {$thread = $item;}
  4.  
  5. if (empty($item['content_html'])) {$item['content_html'] = $item['description'];}
  6.  
  7. // скрытый текст
  8. if(!empty($this->options['hidetext_enable'])){
  9.  
  10. $hidetext = cmsCore::isControllerExists('hidetext') ?
  11. cmsCore::getController('hidetext') :
  12. false;
  13.  
  14. if ($hidetext && !empty($item['content_html'])){
  15. $item['content_html'] = $hidetext->parseHide($item['content_html']);
  16. }
  17. }
  18.  
  19. return array_merge($item, array(
  20. 'url' => href_to('forum', 'pfind', array($item['id'])),
  21. 'title' => $thread['title'],
  22. 'fields' => array($item['content_html']),
  23. 'date_pub' => $item['date_pub'],
  24. 'image' => ''
  25. ));
#2 Дата в статьях 6 марта 2017 в 19:50

А подскажите как в статьях убрать дату их добавления? чтобы в статье не было даты добавления. 2.5.1

zeozao
#3 HOOK fulltext_search - Как объединить результаты поиска? 6 марта 2017 в 19:40
Kreator,
Вот содержимое хука из форума от Loadырь

  1. <?php
  2.  
  3. class onForumFulltextSearch extends cmsAction {
  4.  
  5. public function run(){
  6.  
  7. $sources = array(
  8. 'threads' => LANG_FORUM_THREADS_ON_FORUM,
  9. 'posts' => LANG_FORUM_POSTS_ON_FORUM
  10. );
  11.  
  12. $table_names = array(
  13. 'threads' => 'forum_threads',
  14. 'posts' => 'forum_posts'
  15. );
  16.  
  17. $match_fields = array(
  18. 'threads' => array('title', 'description'),
  19. 'posts' => array('content_html')
  20. );
  21.  
  22. $select_fields = array(
  23. 'threads' => array('id', 'slug', 'title', 'description', 'date_pub'),
  24. 'posts' => array('id', 'thread_id', 'content_html', 'date_pub')
  25. );
  26.  
  27. $filters = array(
  28. 'threads' => array(),
  29. 'posts' => array()
  30. );
  31.  
  32. $forum_model = $this->model;
  33.  
  34. return array(
  35. 'name' => $this->name,
  36. 'sources' => $sources,
  37. 'table_names' => $table_names,
  38. 'match_fields' => $match_fields,
  39. 'select_fields' => $select_fields,
  40. 'filters' => $filters,
  41. 'item_callback' => function($item, $model, $sources_name, $match_fields, $select_fields) use ($forum_model){
  42. if ($sources_name == 'threads'){
  43.  
  44. return array_merge($item, array(
  45. 'url' => href_to('forum', 'tfind', array($item['id'])),
  46. 'title' => $item['title'],
  47. 'fields' => array($item['description']),
  48. 'date_pub' => $item['date_pub'],
  49. 'image' => ''
  50. ));
  51.  
  52. } else {
  53.  
  54. $thread = $forum_model->getThread($item['thread_id']);
  55.  
  56. // скрытый текст
  57. if(!empty($this->options['hidetext_enable'])){
  58.  
  59. $hidetext = cmsCore::isControllerExists('hidetext') ?
  60. cmsCore::getController('hidetext') :
  61. false;
  62.  
  63. if ($hidetext && !empty($item['content_html'])){
  64. $item['content_html'] = $hidetext->parseHide($item['content_html']);
  65. }
  66. }
  67.  
  68. return array_merge($item, array(
  69. 'url' => href_to('forum', 'pfind', array($item['id'])),
  70. 'title' => $thread['title'],
  71. 'fields' => array($item['content_html']),
  72. 'date_pub' => $item['date_pub'],
  73. 'image' => ''
  74. ));
  75. }
  76. }
  77. );
  78. }
  79. }
#4 HOOK fulltext_search - Как объединить результаты поиска? 6 марта 2017 в 18:45
Join?
#5 [ЕСТЬ РЕШЕНИЕ] Наборы в постах 6 марта 2017 в 18:42

А как копировать из спойлера?

@Sergey316516554
Вот даже с маленького мобильника нармально копируется.
---
—
field: (SELECT date_pub FROM cms_comments WHERE target_id = i.id AND target_subject = 'posts' GROUP BY target_id)
condition: dy
value: 3

Вы что там, с калькулятора в интернет ходите? shock
#6 [ЕСТЬ РЕШЕНИЕ] Наборы в постах 6 марта 2017 в 17:23

и вообще страшно похерить базу данных

@Sergey316516554
Так сохраните таблицу cms_content_datasets перед манипуляциями. Вверху кнопка экспорт.

Просто скопипастить не вариант..

@Sergey316516554
Почему не вариант? Дважды мышой в это поле, что там было — стираем, что я написал — вставляем.
Радуемся.
#7 [ЕСТЬ РЕШЕНИЕ] Обязательное добавление аватара при регистрации в 2.7.1 6 марта 2017 в 12:56

Но после обновления до 2.7.1 перестало работать. У Вас работает?

Dorimen
Да, у меня работает.
А перестало у Вас работать по одной простой причине: \system\controllers\images\frontend.php — системный файл и при обновлении заменяется на дефолтный.
Просто закомментируйте это:
  1. if (!cmsUser::isLogged()) {
  2.  
  3. return $this->cms_template->renderJSON(array(
  4. 'success' => false,
  5. 'error' => 'auth error'
  6. ));
  7.  
  8. }
еще раз.
#8 [ЕСТЬ РЕШЕНИЕ] Обязательное добавление аватара при регистрации в 2.7.1 6 марта 2017 в 12:44
Вот в этой теме:
instantcms.ru/blogs/moi-razrabotki/hak-zagruzka-avatara-pri-registraci-instantcms-2.html
в комментариях довольно понятно написано, что менять.

А потом молиться, чтобы кулхацкеры не просекли дырку и не положили сайт.
#9 Уведомления 6 марта 2017 в 00:18

Пожалуй имелось ввиду эта ссылочка

TopPMR
Это работает, но не совсем православно. При обновлении движка всё слетит.
Вот православный хук:
instantcms.ru/users/files/download6433.html

Проверен, подвергнут ритуалу изгнания бесов и окроплен святой водой.
#10 [ЕСТЬ РЕШЕНИЕ] Тестирование мигратора INSTANTCMS1.1.* - INSTANTCMS2.7.1 5 марта 2017 в 20:58

Зачем переносить фотки форума, статей в папку old?

Zau4man
Просто потому, что так сделано в миграторе от разработчиков.
Тестировал одновременно на одном сайте два мигратора. И чтобы не создавать миллион папок с картинками...
smile

2. отмена переноса в old

Zau4man
Поправить всего три файла:
\system\controllers\emigrator\model.php
\system\controllers\emigrator\migrate\comments\endcomments.php
\system\controllers\emigrator\frontend.php
#11 [ЕСТЬ РЕШЕНИЕ] Как автору статьи разрешить удалять комментарии под ней? 5 марта 2017 в 16:34
Вот жОсткий хак на эту тему.
instantcms.ru/users/files/download6432.html

Тупо добавляется кнопка "Удалить" хозяину контента и выдаются права на это удаление.
Как выполнить это компонентом (или хуком) — надо подумать.
#12 Уведомления 5 марта 2017 в 00:55

Потому что каждый раз лезть во вкладку, которая на сайте не на виду

Sam Hain
Сообщения можно вытащить на видное место виджетом.
#13 [ЕСТЬ РЕШЕНИЕ] Тестирование мигратора INSTANTCMS1.1.* - INSTANTCMS2.7.1 5 марта 2017 в 00:30

там часть ссылок декодировать надо. не помню в какой версии ввели.

Zau4man

Вот это ценная информация! Спасибо!
У меня еще на 1.9 сайт и такого нет. Завтра изучу этот вопрос.
Ну наверняка можно еще одну функцию в модели приделать для декодирования поля контент и отправлять текст перед инсертом в эту функцию.
#14 Уведомления 5 марта 2017 в 00:08
Sam Hain,
1. Лайки — это оценка рейтинга? На некоторых сайтах лайкают с частотой пулемета. База разрослась бы до гига за день.
2. Уведомление об ответе на комментарий идут на почту ввиду того, что возможны комментарии от гостя и если ответить на комментарий гостя, куда ему придет уведомление?
3. Где-то на форуме есть решение, как сделать галку поставленной по умолчанию.
4. Часть уведомлений нет смысла отправлять на сайт. Например, какой смысл уведомлять на сайте о личных сообщениях?

Реализация системы оповещений устроена так, чтобы не создавать проблем при любых настройках сайта.
Если требуется доработка системы оповещений под определенный сайт с определенными настройками — можно найти на этом сайте людей, которые доработают систему оповещения. Или доработать самому.
#15 [ЕСТЬ РЕШЕНИЕ] Тестирование мигратора INSTANTCMS1.1.* - INSTANTCMS2.7.1 4 марта 2017 в 23:38
Zau4man,
Можно, конечно.
Вы вот целую функцию написали, а я лентяй, тупо поменял бы прямо в базе
UPDATE cms_comments SET content = REPLACE(content, 'go/url=', 'url=')
Собственно там и сейчас так сделано.
  1. //-----------------------------------------------------------------------------------------------------//
  2. // ЗАМЕНА ТЕГОВ В КОНТЕНТЕ
  3. //-----------------------------------------------------------------------------------------------------//
  4.  
  5. public function tagsReplace($table, $column = 'content') {
  6.  
  7. $this->replace($table, $column, '/upload/', '/upload/old/');
  8.  
  9. $this->replace($table, $column, '/images/', '/upload/old/');
  10.  
  11. }
На самом деле структура таблиц очень разная со множеством нюансов (типа новостей — категории статей в первой ветке и форумов, как категорий во второй), поэтому костылей пришлось втыкать немеряное количество. Можно сказать, что весь мигратор состоит из костылей.
Отсюда и такая масса различных глюков, которые я записал в список по устранению и буду устранять.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.