SergDrakus

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

Рекомендуемые сообщения

SergDrakus    1

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    386

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SergDrakus    1

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

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

Изменено пользователем SergDrakus

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Pascha    645
 Будет писать количество уже набранных символов?

 

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SergDrakus    1

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

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

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

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

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>

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
fanatic    62


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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    933
SergDrakus    1

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Pascha    645
Как к нему приделать эту конструкцию?

 

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

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

делай раз

делай два

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SergDrakus    1

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

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

делай раз

делай два

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Pascha    645

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SergDrakus    1

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Pascha    645

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SergDrakus    1

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Pascha    645

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SergDrakus    1

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    386

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SergDrakus    1

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Pascha    645

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SergDrakus    1

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
fanatic    62

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу