Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Удобное редактирование meta_description в админке. Как?


Recommended Posts

Собственно такая задача. Использую сборку ocStore 2.3.0.4, в которой в админке есть графа meta_description для заполнения мета-описания под поисковые системы. Как известно, ее длина ограничена, но есть одна большая недоработка. Дело в том, что в форме набора текста в эту графу можно написать текст любой длины, но после сохранения товара лишнее просто обрежется. Это крайне неудобно, поскольку постоянно приходится сокращать/редактировать и видоизменять текст.

Я пытался найти решение моей задачи в Интернете, но так и не нашел ничего путного.

Собственно как можно было бы решить эту проблему – отображать количество введенных символов снизу, а также не давать вводить текст при достижении определенного объёма символов. Как это можно реализовать?

Надіслати
Поділитися на інших сайтах


Можно считать текст, это не проблема, напишите скрипт JS для подсчета 

Надіслати
Поділитися на інших сайтах

Не подскажите, как будет выглядеть данная реализация? Будет писать количество уже набранных символов?

И где конкретно находится нужные мне файлы для редактирования? Понятно, что в папке admin, но какой путь дальше?

Змінено користувачем SergDrakus
Надіслати
Поділитися на інших сайтах


а пирожки звать вместо бабушки будет?

и сам по себе интернет магазин сделает... 

реализовать не собираюсь... оно мне надо? бездельем я не страдаю, а если и страдаю, то НГ - лучший для этого повод

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

p.s. Сразу не въехал, что темы создал холявщик- копипастер.... и влез со своими инструкциями)))) сорри... такие темы не по мне... удаляюсь

Не вижу здесь никакой «халявы». Не прошу никого делать что-то за меня, просто хочу услышать советы от знающих людей и получить рекомендации. Со всеми своими проблемами я предпочитают разбираться сам, пускай и с советами окружающий.

Вот код, отвечающий за вывод формы meta_description в админке:

<div class="form-group">
                    <label class="col-sm-2 control-label" for="input-meta-description<?php echo $language['language_id']; ?>"><?php echo $entry_meta_description; ?></label>
                    <div class="col-sm-10">
                      <textarea name="product_description[<?php echo $language['language_id']; ?>][meta_description]" rows="5" placeholder="<?php echo $entry_meta_description; ?>" id="input-meta-description<?php echo $language['language_id']; ?>" class="form-control"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['meta_description'] : ''; ?></textarea>
                    </div>
                  </div>

Как к нему приделать эту конструкцию?


                  <input type="text" id="sms"> символов: <span id="result"></span>
<script>
  function showCount() {
    result.innerHTML = sms.value.length;
  }


  sms.onkeyup = sms.oninput = showCount;
  sms.onpropertychange = function() {
    if (event.propertyName == "value") showCount();
  }
  sms.oncut = function() {
    setTimeout(showCount, 0); // на момент oncut значение еще старое
  };
</script>

И да, насчет создания разных тем, то создал только две таких. В остальных обсуждаются вопросы, которых действительно нет в Интернете.

Надіслати
Поділитися на інших сайтах



пример подсчета, и запрет вводить больше 15 символов

<script type="text/javascript">

$(function(){

$('#std').on('input',function(){

var max = 15;

var val = $(this).val();

var count = val.length;

if(count >= max){

var str = val.substr(0,max);

$(this).val(str);

$('#error').html('Максимум '+max+' символов');

$('#res').html('Введено: '+str.length+ 'символов(а)');

}

else{

$('#error').html('');

$('#res').html('Введено: '+count+ 'символов(а)');

}

})

})

</script>

<style>

.error{

color:red;

}

</style>

<form method="post">

<label>Проверка ввода количества символов</label>

<input id="std" type="text" name="test"><br>

<p id="res"></p>

<p id="error" class="error"></p>

</form>

Змінено користувачем fanatic
Надіслати
Поділитися на інших сайтах

Спасибо, но боюсь, что моих знаний в JavaScript недостаточно, чтобы связать два кода в один единый.

Как связать этот код:

<script type="text/javascript">
$(function() {
$("input[id='text-block']").keyup(function countRemainingChars(){
maxchars = 50;
number = $("input[id='text-block']").val().length;
if(number <= maxchars){
$("#block").html(maxchars-number + " символов осталось");
}
if(number == maxchars) {
$("#text-block").attr({ maxlength: maxchars});
}
});
});
</script>
<input type="text" id="text-block"/><span id="block"></span>

С этим кодом:

<div class="form-group">
                    <label class="col-sm-2 control-label" for="input-meta-description<?php echo $language['language_id']; ?>"><?php echo $entry_meta_description; ?></label>
                    <div class="col-sm-10">
                      <textarea name="product_description[<?php echo $language['language_id']; ?>][meta_description]" rows="5" placeholder="<?php echo $entry_meta_description; ?>" id="input-meta-description<?php echo $language['language_id']; ?>" class="form-control"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['meta_description'] : ''; ?></textarea>
                    </div>
                  </div>

Если кто-то поможет, буду крайне благодарен.

Надіслати
Поділитися на інших сайтах


Да хэр его знает как приделать... мы ж неучи, 3 класса церковно-приходской школы

и только вот так можем.... одним словом... бездари

делай раз

делай два

Не думаю, что такого рода скриншоты как-то мне помогут)

Надіслати
Поділитися на інших сайтах


тебе доступ в админку дать? ))))

Думаю и это не поможет отцу мирового программирования)))))

Вполне достаточно куска кода. Доступ к админке не требуется

Надіслати
Поділитися на інших сайтах


Я искренне надеюсь, что однажды вас будут точно также «троллить», когда вы будите что-то покупать/выбирать и при этом у вас не будет времени сидеть дни напролет и изучать все аспекты.

Надіслати
Поділитися на інших сайтах


я сегодня добр... хотя бессмысленно все это... горбатого только.. сами знаете что исправит

http://joxi.ru/8An04JDHeBj1mO

думаю что дальше последуют вопросы, а куда, а как и еще тысяча вопросов от нищего неуча...

любая работа должна оплачиваться... но все хотят холявы... жаль... трудно им по жизни... можно и холявы... а можно и по морде... как у Ржевского.. думаю по морде - будет чаще))))

 

Спасибо за код, пускай и в виде фотографии. Все работает. Если кому-то нужно, выкладываю который вариант для ocStore 2.3.0.2.

 

<div class="form-group">
                    <label class="col-sm-2 control-label" for="input-meta-description<?php echo $language['language_id']; ?>"><?php echo $entry_meta_description; ?></label>
                    <div class="col-sm-10">     
<script type="text/javascript">
$(function() {
$("textarea[id='input-meta-description<?php echo $language['language_id']; ?>']").keyup(function countRemainingChars(){
maxchars = 255;
number = $("textarea[id='input-meta-description<?php echo $language['language_id']; ?>']").val().length;
if(number <= maxchars){
$("#block").html(maxchars-number + " символов осталось");
}
if(number == maxchars) {
$("#text-block").attr({ maxlength: maxchars});
}
});
});
</script>
<textarea name="product_description[<?php echo $language['language_id']; ?>][meta_description]" rows="5" placeholder="<?php echo $entry_meta_description; ?>" id="input-meta-description<?php echo $language['language_id']; ?>" class="form-control"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['meta_description'] : ''; ?></textarea>
<br/><span id="block"></span>
</div>
</div>

PS. Если вы хотите заработать денег, то рекомендую вам создать расширение (модуль) для OpenCart, которое будет добавлять такой функционал. Думаю с вашими навыками это не займет много времени.

Змінено користувачем SergDrakus
Надіслати
Поділитися на інших сайтах


 

Спасибо, но боюсь, что моих знаний в JavaScript недостаточно, чтобы связать два кода в один единый.

Как связать этот код:

<script type="text/javascript">
$(function() {
$("input[id='text-block']").keyup(function countRemainingChars(){
maxchars = 50;
number = $("input[id='text-block']").val().length;
if(number <= maxchars){
$("#block").html(maxchars-number + " символов осталось");
}
if(number == maxchars) {
$("#text-block").attr({ maxlength: maxchars});
}
});
});
</script>
<input type="text" id="text-block"/><span id="block"></span>

С этим кодом:

<div class="form-group">
                    <label class="col-sm-2 control-label" for="input-meta-description<?php echo $language['language_id']; ?>"><?php echo $entry_meta_description; ?></label>
                    <div class="col-sm-10">
                      <textarea name="product_description[<?php echo $language['language_id']; ?>][meta_description]" rows="5" placeholder="<?php echo $entry_meta_description; ?>" id="input-meta-description<?php echo $language['language_id']; ?>" class="form-control"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['meta_description'] : ''; ?></textarea>
                    </div>
                  </div>

Если кто-то поможет, буду крайне благодарен.

 

<script type="text/javascript">
        $(function () {
            $("#input-meta-description<?php echo $language['language_id']; ?>").on('input', function () {
                var max = 250;
                var val = $(this).val();
                var count = val.length;
                if (count >= max) {
                    var str = val.substr(0, max);
                    $(this).val(str);
                    $('#err').html('Максимум ' + max + ' символов');
                    $('#res').html('Осталось: 0 символов');
                } else {
                    $('#err').html('');
                    $('#res').html('Осталось: ' + (max - count) + 'символов(а)');
                }

            })
        })
    </script>
       <div class="form-group">
        <label class="col-sm-2 control-label" for="input-meta-description<?php echo $language['language_id']; ?>"><?php echo $entry_meta_description; ?></label>
        <div class="col-sm-10">
            <textarea name="product_description[<?php echo $language['language_id']; ?>][meta_description]" rows="5" placeholder="<?php echo $entry_meta_description; ?>" id="input-meta-description<?php echo $language['language_id']; ?>" class="form-control"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['meta_description'] : ''; ?></textarea>
        </div>
        <div id="res"></div>
        <div id="err"></div>
    </div>
Змінено користувачем fanatic
  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.