Instant CMS 2 - проблемы

Помощь в решении проблем, возникающих при работе CMS

#811 20 августа 2015 в 07:30

Замеченные проблемы InstantCMS 2.2.1 и их исправления

miha
Хорошая идея.
Есть не только проблемы, но и очень, очень часто задаваемые вопросы по тюнингу, так скажем, например про автарки часто спрашивают, про кол-во выводимого контента, про объявления и т.д. и т.п. Не всегда можно в поиске найти сразу, плюс постоянно путаешься с версиями.
Можно создать тему (для двойки), в которой собрать все эти распространенные вопросы и решения (ответы под катом).

У меня в связи с этим вопрос: если я создам такую тему, я потом смогу (в течение долгого времени) редактировать первый пост?
#812 20 августа 2015 в 08:39

если я создам такую тему, я потом смогу (в течение долгого времени) редактировать первый пост?

alkokrolik
да
#813 20 августа 2015 в 09:20

У меня в связи с этим вопрос: если я создам такую тему, я потом смогу (в течение долгого времени) редактировать первый пост?

alkokrolik
и не только первый. Советую забить себе сразу 2-3 поста, так как есть ограничение на количество текста в посте.
#814 23 августа 2015 в 16:47
Ещё заметил, что поиск выводит результаты из контента в закрытых группах.
#815 1 сентября 2015 в 13:43
Посты из скрытых групп тоже попадают в карту сайта. В дополнение к:

5. В sitemap.xml попадают неопубликованные материалы

miha


system/controllers/content/hooks/sitemap_urls.php

  1. $items = $this->model->
  2. filterNotEqual('is_private', 1)->
  3. filterNotEqual('is_approved', 0)->
  4. filterNotEqual('is_pub', 0)->
  5. filterIsNull('is_parent_hidden')->
  6. limit(false)->
  7. getContentItems($ctype_name);

поиск выводит результаты из контента в закрытых группах.

miha
Решение:


system/controllers/search/model.php

Было:
  1. public function getSearchSQL($table_name, $fields){
  2.  
  3. $query = $this->getFullTextQuery();
  4.  
  5. $sql_fields = implode(', ', $fields);
  6.  
  7. $sql = "SELECT id, slug, date_pub, {$sql_fields}
  8. FROM cms_{$table_name}
  9. WHERE is_pub = 1 AND MATCH({$sql_fields}) AGAINST ('{$query}' IN BOOLEAN MODE)
  10. ";
Стало:
  1. public function getSearchSQL($table_name, $fields){
  2.  
  3. $query = $this->getFullTextQuery();
  4.  
  5. $sql_fields = implode(', ', $fields);
  6.  
  7. $sql = "SELECT id, slug, date_pub, {$sql_fields}
  8. FROM cms_{$table_name}
  9. WHERE is_pub = 1 AND is_parent_hidden is NULL AND MATCH({$sql_fields}) AGAINST ('{$query}' IN BOOLEAN MODE)
  10. ";
#816 1 сентября 2015 в 20:39
После обновления, проблем хватает. Но вот что сейчас заметил. загрузка картинки в теле сообщения, после сохранения получаю вот такой путь.

<img src="\"/upload/000/u1/000/720e8c9b.jpg\"">


обратил внимание что включен magic_quotes_gpc может как то влиять на работу системы ?

Пересохранил старый работающий материал, и пути к картинкам тоже испортились, а так же появилось в тексте лишних знаков \"

После пересохранения материалы, добавилсь \\\

klubexp.ru/posts/12-poezdka-v-gelendzhik-iz-moskvy.html
#817 2 сентября 2015 в 07:47

обратил внимание что включен magic_quotes_gpc может как то влиять на работу системы ?

Confignsk
Конечно может.

Для корректной работы InstantCMS ваш сервер должен иметь следующее...
… Опции PHP register_globals и magic_quotes_gpc должны быть выключены.

Cистемные требования
#818 2 сентября 2015 в 14:06
Заметил баг в функции parse, в файле \instantcms\system\fields\images.php (~51 строка)

При принудительном выводе изображений через
  1.  
  2. <?php if($fields['attach_image']['html']) {?>
  3. <div class="attachment_images">
  4. <h3><?php print_r($fields['attach_image']['title']);?></h3>
  5. <div class="list"><?php print_r($fields['attach_image']['html']);?></div>
  6. </div>
  7. <? } ?>
  8.  
А если изображений нет, то поле все равно отображается на сайте, потому что в конце функции parse дописывается
  1. $html .= '<script>$(document).ready(function() { icms.modal.bindGallery(".img-'.$this->getName().'"); });</script>';
Решение:
Включить проверку на наличие изображений
  1. if(!$images) {return false;}
И того функция parse будет выглядеть так:
  1.  
  2. public function parse($value){
  3.  
  4. $config = cmsConfig::getInstance();
  5.  
  6. $images = cmsModel::yamlToArray($value);
  7.  
  8. $html = '';
  9.  
  10. if(!$images) {return false;}
  11.  
  12. if($this->getOption('size_teaser')) {
  13. $size_teaser = $this->getOption('size_teaser');
  14. }
  15. else {
  16. $size_teaser = 'small';
  17. }
  18.  
  19. foreach($images as $paths){
  20. $full = isset($paths[$this->getOption('size_full')]) ? $paths[$this->getOption('size_full')] : '';
  21. $html .= '<a class="img-'.$this->getName().'" href="'.$config->upload_host . '/' . $full.'"><img src="'.$config->upload_host . '/' . $paths[$size_teaser].'" border="0" /></a>';
  22. }
  23.  
  24. $html .= '<script>$(document).ready(function() { icms.modal.bindGallery(".img-'.$this->getName().'"); });</script>';
  25.  
  26. return $html;
  27.  
  28. }
  29.  
  30.  
#819 3 сентября 2015 в 04:20

Конечно может.

Loadырь

Еще вчера по правил. Полет нормальный. Подскажите как настроить редактор записей. И главное что бы при вставке в редактор в текстовое поле, вставлялся только текст. Без стилей.
#820 10 сентября 2015 в 23:46
Проблема при создании пункта меню. Если создавать вложенный пункт, то он и вовсе не хочет создаваться. Если просто создавать пункт, то выдает следующее

при клике на кнопку сохранить порядок выдает 404 ошибку. Непонятно, почему сами меню не выдает в левой колонке
#821 12 сентября 2015 в 11:23
Если из админки удалить какой нибудь тип контента (Админка-Типы контента), например объявления или новости, то главная страница site/ перестает отображаться (белый экран). Страницы, вызываемые по адресам sitt/articles или site/admin/ доступны
Отладчик выводит:

Ошибка в запросе БД:
Table 'instantcms2.cms_con__cats' doesn't exist

SELECT i.*
FROM cms_con__cats i
ORDER BY i.ns_left


хост Denver 3
Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/1.0.1c PHP/5.3.13 Server at localhost Port 80
5.5.25 — MySQL Community Server (GPL)

InstantCMS 2.2.1 только скачанная с сайта
свежая база и свежий пользователь в Денвере
#823 12 сентября 2015 в 17:28
Soul,
Да, удаление с главной страницы виджета, соответствующего удаляемому типу контента помогло. спасибо
Теперь этот пост будет находится поиском по строке Table 'instantcms2.cms_con__cats' doesn't exist, что лучше, чем расплывчатый "белый экран"
#824 12 сентября 2015 в 17:48

что лучше, чем расплывчатый "белый экран"

Detroit
А искать будут именно по этому расплывчатому запросу :)
Я так понимаю проблема (в очередной раз) побеждена…
#825 16 сентября 2015 в 15:17

После удаления фото, записи об изменении рейтинга не удаляются. Проверить можно в таблице cms_rating_log [...]

miha

Решение:


system/controllers/photos/model.php

Было:
  1. public function deletePhoto($id){
  2.  
  3. $photo = $this->getPhoto($id);
  4.  
  5. if(is_array($photo['image'])){
  6.  
  7. $config = cmsConfig::getInstance();
  8.  
  9. foreach($photo['image'] as $path){
  10. @unlink($config->upload_path . $path);
  11. }
  12.  
  13. }
  14.  
  15. $this->filterEqual('id', $photo['album_id'])->decrement('con_albums', 'photos_count');
  16.  
  17. cmsCache::getInstance()->clean("photos.{$photo['album_id']}");
  18.  
  19. cmsCore::getModel('comments')->deleteComments('photos', 'photo', $id);
  20. cmsCore::getModel('rating')->deleteVotes('content', 'photo', $id);
  21.  
  22. $this->delete('photos', $id);
  23.  
  24. }
  25.  
  26. public function deletePhotos($album_id){
  27.  
  28. $photos = $this->getPhotos($album_id);
  29.  
  30. if (!$photos) { return; }
  31.  
  32. $config = cmsConfig::getInstance();
  33. $comments_model = cmsCore::getModel('comments');
  34. $rating_model = cmsCore::getModel('rating');
  35.  
  36. foreach($photos as $photo){
  37.  
  38. if(is_array($photo['image'])){
  39. foreach($photo['image'] as $path){
  40. @unlink($config->upload_path . $path);
  41. }
  42. }
  43.  
  44. $comments_model->deleteComments('photos', 'photo', $photo['id']);
  45. $rating_model->deleteVotes('content', $ctype_name, $id);
  46.  
  47. $this->delete('photos', $photo['id']);
  48.  
  49. }
  50.  
  51. cmsCache::getInstance()->clean("photos.{$album_id}");
  52.  
  53. }
Стало:
  1. public function deletePhoto($id){
  2.  
  3. $photo = $this->getPhoto($id);
  4.  
  5. if(is_array($photo['image'])){
  6.  
  7. $config = cmsConfig::getInstance();
  8.  
  9. foreach($photo['image'] as $path){
  10. @unlink($config->upload_path . $path);
  11. }
  12.  
  13. }
  14.  
  15. $this->filterEqual('id', $photo['album_id'])->decrement('con_albums', 'photos_count');
  16.  
  17. cmsCache::getInstance()->clean("photos.{$photo['album_id']}");
  18.  
  19. cmsCore::getModel('comments')->deleteComments('photos', 'photo', $id);
  20. cmsCore::getModel('rating')->deleteVotes('photos', 'photo', $id);
  21.  
  22. $this->delete('photos', $id);
  23.  
  24. }
  25.  
  26. public function deletePhotos($album_id){
  27.  
  28. $photos = $this->getPhotos($album_id);
  29.  
  30. if (!$photos) { return; }
  31.  
  32. $config = cmsConfig::getInstance();
  33. $comments_model = cmsCore::getModel('comments');
  34. $rating_model = cmsCore::getModel('rating');
  35.  
  36. foreach($photos as $photo){
  37.  
  38. if(is_array($photo['image'])){
  39. foreach($photo['image'] as $path){
  40. @unlink($config->upload_path . $path);
  41. }
  42. }
  43.  
  44. $comments_model->deleteComments('photos', 'photo', $photo['id']);
  45. $rating_model->deleteVotes('photos', $ctype_name, $id);
  46.  
  47. $this->delete('photos', $photo['id']);
  48.  
  49. }
  50.  
  51. cmsCache::getInstance()->clean("photos.{$album_id}");
  52.  
  53. }
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.