Forum categories

Записки CotoДела

Мои записи, как типовые решения разных вопросов с Cotonti

webitproff
webitproff • 2026-04-29 19:15 #536

Предохранитель, не превышать количество символов для мета-заголовка и мета-описания.

 

Зачем нужны ограничения и счётчики символов для SEO-полей

Meta Title и Meta Description — ключевые элементы, которые поисковые системы показывают в результатах выдачи. Их длина напрямую влияет на кликабельность и восприятие вашего предложения.

  • Meta Title (до 55 символов) — заголовок, который виден в поиске и на вкладке браузера. Если он обрезается, теряется смысл и снижается CTR.
  • Meta Description (до 160 символов) — краткое описание под заголовком. Слишком длинное описание обрезается многоточием, что может отпугнуть пользователя.

Мы добавили в форму редактирования товара автоматические ограничители и счётчики оставшихся символов. Теперь при заполнении полей вы сразу видите остаток и не сможете случайно выйти за пределы рекомендуемой длины.

Как это работает

Для каждого поля задан лимит (55 и 160 символов соответственно). При вводе текста скрипт:

  • отображает количество оставшихся символов прямо под полем;
  • автоматически обрезает лишнее, если лимит превышен.

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

 

в шаблоне старый код меняем на новый:

<div class="col-12 js-chars-limit-block">
   <label for="marketMetaTitle" class="form-label fw-semibold">{PHP.L.market_metatitle}</label>
   <div class="input-group has-validation">
       {MARKETEDIT_FORM_METATITLE}
   </div>
   <div class="form-text text-end">
       <span class="text-muted small js-chars-counter" data-limit="55"></span>
   </div>
</div>
<div class="col-12 js-chars-limit-block">
   <label for="marketMetaDesc" class="form-label fw-semibold">{PHP.L.market_metadesc}</label>
   <div class="input-group has-validation">
       {MARKETEDIT_FORM_METADESC}
   </div>
   <div class="form-text text-end">
       <span class="text-muted small js-chars-counter" data-limit="160"></span>
   </div>
</div>

 

и в конец шаблона, перед закрывающим шаблон, XTemplate-блоком <!-- END: MAIN -->   вставить скрипт:

<script>
   document.addEventListener('DOMContentLoaded', function() {
       // Для каждого блока с js-chars-limit-block
       document.querySelectorAll('.js-chars-limit-block').forEach(function(block) {
           // Найти первое поле ввода или textarea внутри этого блока
           const field = block.querySelector('input, textarea');
           // Найти счётчик внутри этого же блока
           const counter = block.querySelector('.js-chars-counter');
           if (!field || !counter) return;
           
           const limit = parseInt(counter.getAttribute('data-limit'), 10);
           
           function update() {
               let val = field.value;
               if (val.length > limit) {
                   field.value = val.substring(0, limit);
               }
               const remaining = limit - field.value.length;
               counter.textContent = 'Осталось: ' + remaining + ' симв.';
           }
           
           field.addEventListener('input', update);
           update(); // начальное значение
       });
   });
</script>

 

 

 

 

🗿

🧙‍♂️ Well met, good traveler! Fate has guided your steps to our humble realm. Here, wise sages and masters of the coding craft ⚒️📜 gather to unravel the mysteries of the code ✨⚙️, share their knowledge, and add new chapters to our chronicles.
⬅️ To the left lie ancient scrolls 📚 filled with forgotten wisdom. ⬆️ Straight ahead, friendly folk offer counsel 💬 to those in need. ➡️ To the right, you may become a chronicler ✍️ yourself, sharing your craft and leaving words of wisdom for those yet to come.
📝 Delay no longer—tell us the name by which you are known, complete the rite of registration 🛡️, and join our fellowship!
🏰 Our brotherhood holds no secret initiation, yet many halls remain closed to wandering guests, for some knowledge 💎 is reserved for those who choose to walk this path beside us.