Jump to content
Sign in to follow this  
SergDrakus

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

Recommended Posts

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Edited by SergDrakus

Share this post


Link to post
Share on other sites
 Будет писать количество уже набранных символов?

 

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

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

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

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

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

  • +1 1

Share this post


Link to post
Share on other sites

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

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

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

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

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>

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

Share this post


Link to post
Share on other sites


пример подсчета, и запрет вводить больше 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>

Edited by fanatic

Share this post


Link to post
Share on other sites

Спасибо, но боюсь, что моих знаний в 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>

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

Share this post


Link to post
Share on other sites
Как к нему приделать эту конструкцию?

 

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

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

делай раз

делай два

Share this post


Link to post
Share on other sites

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

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

делай раз

делай два

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

Share this post


Link to post
Share on other sites

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

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

Думаю и это не поможет отцу мирового программирования)))))©Бендер О.

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Вполне достаточно куска кода

post-20793-0-56264300-1483119898_thumb.jpg

 

"Пилите, Шура, пилите. Они золотые" Источник: "Золотой телёнок"

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

p.s.  Я склонен помогать только тем людям, которые пытаются делать, а не ждут готового на тарелочке с каемочкой.... 
я показал, что реализуемо... остальное - флуд и стеб... и пока все еще добрый и дружеский... потому как праздник Новый Год не приемлет негатива...

  • +1 1

Share this post


Link to post
Share on other sites

Вы думаете я не знал, что эту форму можно прикрутить? Что-то я не виду тут какой-то помощи совсем. 

Share this post


Link to post
Share on other sites

Разве я кого-то обвиняю? Я прекрасно понимаю, что один код нужно совместить с другим. Как этого сделать я НЕ ЗНАЮ.

Share this post


Link to post
Share on other sites

я сегодня добр... хотя бессмысленно все это... горбатого только.. сами знаете что исправит
http://joxi.ru/8An04JDHeBj1mO
думаю что дальше последуют вопросы, а куда, а как и еще тысяча вопросов от нищего неуча...
любая работа должна оплачиваться... но все хотят холявы... жаль... трудно им по жизни... можно и холявы... а можно и по морде... как у Ржевского.. думаю по морде - будет чаще))))
 

Share this post


Link to post
Share on other sites

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

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, которое будет добавлять такой функционал. Думаю с вашими навыками это не займет много времени.

Edited by SergDrakus

Share this post


Link to post
Share on other sites

 

Спасибо, но боюсь, что моих знаний в 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>
Edited by fanatic
  • +1 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.