SEO для записей - при редактировании статьи не меняется!

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 13 августа 2024 в 12:53

В статье есть анонс -тизер. В шаблоне шенерации SEO для записей стит — Автоматическая генерация META-описаний 

В строке — Шаблон генерации META-описаний — стоит {teaser} (системное название поля Анонс)

При редактировании статьи и изменении Анонса-тизера — meta description НЕ изменяется!!! В базе тоже старый анонс — новый тоже не пишется в базу.

Как побороть? 

#2 13 августа 2024 в 13:17

А где вы смотрите?

#3 13 августа 2024 в 13:25

в коде страницы, в базе и вебмастер выдаёт дубли по дескрипшену — отсюда и редактирование статьи.

#4 13 августа 2024 в 13:37

Смотрите. У вас сайт старый. Раньше СЕО генерировалось и писалось в базу сразу. Потом появились опции ручного указания сео и генерация на лету. И если сео указано вручную (а оно такое для всех старый статей, см. выше) оно не обновляется.

Это ваш случай. Если вы хотите исправить СЕО в старых статьях, у которых оно сохранено в базе, надо включить возможность указать сео вручную и править там.

С какой-то версии движка СЕО генерируется автоматически согласно настроек docs.instantcms.ru/manual/ctypes/add#seo-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B5%D0%B9

#5 13 августа 2024 в 13:46

Странно, конечно. Старые сайты по уму уже не обновить) Кстати, тайтлы-то обновляются) хоть и сайт старый)

А можно как-то через базу teaser переписать/скопировать в seo_desc?

Боюсь ошибиться, но правильно ли?: UPDATE table SET `seo_desc` = `teaser`; понимаю, что привязка к id должна быть или по порядку пойдёт?

#6 13 августа 2024 в 14:02

Странно, конечно

alfaclub

ничего странного. Движок развивается. Раньше не было возможности генерировать сео «на лету», потом ее добавили, оставив возможность указать сео вручную. Очевидно, что у сео вручную должен быть приоритет.

А можно как-то через базу teaser переписать/скопировать в seo_desc

alfaclub

это к Loadir вопрос :)

#7 13 августа 2024 в 17:54

Да и тизер-анонс я же в ручную заполняю, просто не даёт покоя возможность принудительной генерации мета описания. И теперь мне нужно и анонс заполнить и сео-дескрипшн чтобы всё правильно было??? Такие мысли посещают потому, что с  мета тайтлами всё работает на лету. 

Добавлено спустя 2 часа

Ага. заметил. из стандартного поля контента мета дескрипшн генерится на лету. из другого поля, как у меня — нет!!!

Добавлено спустя 40 минут

Понял логику!!!))) Если seo_desc заполнено, то что бы не случилось — отдаётся оно! Если не заполнено — отдаётся то, что указано в насттройках ТК)))

Всем спасибо!

#8 13 августа 2024 в 18:30

Чтобы выдавалось автоматом у всех записей, надо обнулить seo_desc у всех записей запросом

  1. UPDATE cms_con_articles SET seo_desc = NULL;

Если надо обновить seo_desc используя поле teaser, то тут простой запрос копирования

  1. UPDATE cms_con_articles SET seo_desc = teaser;

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

Поэтому запрос немного усложнится

  1. DELIMITER $$
  2. CREATE FUNCTION IF NOT EXISTS `strip_tags`($str text)
  3. RETURNS text
  4. DETERMINISTIC
  5. BEGIN
  6. DECLARE $start, $end INT DEFAULT 1;
  7. LOOP
  8. SET $start = LOCATE("<", $str, $start);
  9. IF (!$start) THEN RETURN $str; END IF;
  10. SET $end = LOCATE(">", $str, $start);
  11. IF (!$end) THEN SET $end = $start; END IF;
  12. SET $str = INSERT($str, $start, $end - $start + 1, "");
  13. END LOOP;
  14. END$$
  15. DELIMITER ;
  16.  
  17. UPDATE cms_con_articles SET seo_desc = SUBSTRING(strip_tags(teaser), 1, 254);
#9 13 августа 2024 в 21:36

вы гений!))

Спасибо большое!)

Теперь всё правильно)

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.