Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Recommended Posts

Добрый день, уважаемые форумчане. Снова нужна ваша помощь. Я новичек в openCarte?

Но устроился на работу где придется много сайтов писать именно на его движке. И вот столкнулся с проблеммой.

Написал свой скрипт для вывода из БД товара. На jQuery(ajax в основном) php mysql

Вот пример того что работает http://automehanik.seomax.biz/chain/

Есть файл index.php - в нем в header скрипт 

 

 

 

 



<script type="text/javascript">
$(document).ready(function(){
$("select#type").attr("disabled","disabled");
$("select#year").attr("disabled","disabled");
$("select#modification").attr("disabled","disabled");

$("select#category").change(function(){
$("select#type").attr("disabled","disabled");
$("select#type").html("<option>wait...</option>");
var vendor = $("select#category option:selected").attr('value');
$.post("select_type.php", {vendor:vendor}, function(data){
$("select#type").removeAttr("disabled");
$("select#type").html(data);
});
});

...................

if(cat != "" && type != "")
{
var result = $("select#type option:selected").html();
$("#result").html('your choice: '+result);
}
else
{
$("#result").html("you must choose two options!");
}
return false;
});
});
</script>
 

Этот скрипт передает методом пост значения в три пхпшных файла по очереди:

 

 



$.post("select_type.php", {vendor:vendor}, function(data){
 

И главный пхп файл обрабатывает значения принятые из пост - берет из БД значения и возвращает обратно в список селект значения.

 

ТАК ВОТ! САМ СКРИПТ РАБОТАЕТ ЧУДЕСНО!

Но блин в opencarte жеж скрипты отдельно, хеадер отдельно, левая колонка, куда нужно залить выпадающее меню отдельно и файл вывода - главный блок container - отдельно.

 

Например подключил я скрипт в хеадер что в папке common

<script type="text/javascript" src="catalog/view/javascript/shini.js"></script>

А файлы которые постом прописаны в моем скрипте куда копировать?

Или взял я уже и прописал в header весь скрипт, но он все равно почему то не работает.

 

И даже скрипт не работает, т.к. $(document).ready(function(){ уже используется opencartom изначально для других целей?

Или есть статья на форуме как подключить свои скрипты на эту машину??? ОЧЕНЬ НАДО, люди добрые помогите. второй день капаюсь не могу подключить.

 

 

С Уважением,

Евгений.

Link to post
Share on other sites

Колонки это фиксированные позиции для вывода модулей.

 

Да, в OpenCart есть такая штука как модули, но чтобы понять как его засунуть в колонку надо открыть код существующих модулей и посмотреть. Или почитать доки. В общем, создать примитивный модуль. Если Вы делаете "сайт под ключ", то можно согрешить и засунуть код прямо в commom/column_left.tpl.

 

Чтобы не править ядро есть vQmod. Про это читайте в документации. 

 

JavaScript сценарии в OpenCart сплошь и рядом разбросаны по шаблонам так что тут можно излишне не стараться придерживаться чистоты кода.

Link to post
Share on other sites

почитай про MVC.

посмотри код любого стандартного модуля (как то: featured, latest).

 

начни с оригинального Opencart - там большинство компонентов имеют такие же названия, как и имена их файлов (product, category, latest, etc).

должно помочь в ориентации по структуре каталогов/файлов.

Link to post
Share on other sites

Вот пример того что работает

О! А вот к вам есть вопрос:

насколько актуальна ваша версия базы соответствия машин к размерам шин и дисков?

Авто каких лет выпуска у вас последние?

 

Чьи-то модули

Link to post
Share on other sites

Отвечу deim этот скрипт что вы прикрепили в спойлере - мой начальник купил на этом сайте. Но я хочу сделать все немного по другому. И когда начал капаться в скрипте понял - что можно еще поколдовать и улучшить. А так база прошлогодняя, и перебивать коммерцию человеку я не собираюсь. Но скрипт для вывода как у tpyht сделал сам под свои нужды.

 

Так вот структуру opencart я знаю. Уже делал пару сайтов на нем. Логику MVC изучал.

Вопрос у меня совсем другой был.

 

Я просто вставил куски кода по сайту без создания модуля - в left_collumn вывел список, в header записал javascript код, но все это дело не заработало и я распихивал файлы по различным папкам что бы хотябы запросы пост шли на файлы что указаны в яваскрипт функциях - а они не идут. То есть визуальные эффекты работают. Первый массив из пхп файла что я инклюдил - запустился - а вот пост что передается странице не пошел.

Так вот есть ли на форуме статья или может кто то сталкивался с таким, потому что где то читал, что в левой-правой колонках и футере-топе вообще нельзя оттуда ассинхронные запросы посылать! Это правда или бред? Статей  в интернете мало по созданию своих модулей - везьде как то кратко о структуре и куда записывать файлы и как вызывать товар и каталог. А если мне нужно самому сделать запрос к БД. Стоит ли к ней подключатся и будет ли модуль видить не только один файл в модулях а если их 4штуки, короче такие мелкие нюансы. Я на этом форуме находил вещи и по серьездней, как ребята ядро opencarta изменяли, переделывали товары добавляя ячейки, делали ветер. А вот с ассинхронностью что то я еще парюсь.

 

То есть проблемма в том что бы добавить в левую колонку выпадающий ассинхронный список, который уже я написал а результат так же ассинхронно выдавался в главной колонке. Что мне почитать для этого и делал ли кто так? Сейчас читаю о создании модулей.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Similar Content

    • By caest16
      https://www.statusdoors.com/ вот сайт, там идет скрипт класс dropdown находится в хедере каталог, не могу понять что не так делаю?
      document.addEventListener('mouseover', event => { if(event.target.classList.contains('dropdown')) { event.target.classList.add('dropdown-active') } }); document.addEventListener('mouseout', event => { if(event.target.classList.contains('dropdown')) { setTimeout(() => event.target.classList.remove('dropdown-active'), 3000) } });  
    • By AlexMax13
      Предлагаю составить список таблиц в БД, которые время от времени желательно очищать.
       
       
      Данные действия рекомендуется выполнять для больших сайтов с множеством клиентов. Ну или тех, которые годами не подозревали что у них есть БД и сайт начинает тормозить.
       
      Если знаете что еще можно очистить - дополняйте. Только хотя бы в двух словах опишите что предлагаете очистить.
    • By Denys
      Добрый день, нужен бесстрашный специалист для доработки и исправления ошибок в ocStore 2.3.0.2.3
      В карте сайта для контента на русском языке исправить вывод ссылки (добавить ru/ после домена) В модуле генератора фидов для контента на русском языке исправить вывод ссылки (добавить ru/ после домена) Убрать вывод дублей постов с категорией в карте сайта блога, продублировать ссылки с ru/ Исправить чпу для пагинации, тегов и сортировки Настроить корректную передачу целей/событий в расширенную эл.коммерцию гугл аналитикс Подробнное ТЗ тут https://docs.google.com/document/d/13SdbXH3r7weAnsWb4Jq-CzXjcCE_hzhnAeZzcSSZX6k/edit?usp=sharing
      Важно! При работе не в коем случае не переключать движок чпу с СЕО ПРО на стандартный.
      Задачи не сложные, думаю за день можно справится не напрягаясь для опытного разработчика.
      Ставить модули не предлагать.
      По окончанию работы предоставить список затронутых файлов.
      Жду ваши предложения.
    • By MaJIon
      Здравствуйте, можно ли как-то соединить эти запросы таким образом, чтобы через post передавать нужные параметры и эти запрос как-то фильтровать в зависимости от клика по кнопке + или - 

       
      public function updateLike($product_id) { $this->db->query("SELECT * FROM " . DB_PREFIX . "product SET like_count = (like_count - 1) WHERE product_id = '" . (int)$product_id . "'"); } public function updateLikeMinus($product_id) { $this->db->query("UPDATE " . DB_PREFIX . "product SET like_count = (like_count - 1) WHERE product_id = '" . (int)$product_id . "'"); } public function updateLikePlus($product_id) { $this->db->query("UPDATE " . DB_PREFIX . "product SET like_count = (like_count + 1) WHERE product_id = '" . (int)$product_id . "'"); }  
    • By Krasulin
      Добрый день, кто может качественно оптимизировать MySQL, хостер пишет что медленная загрузка сайта может бить из-за БД. Так ли это ?
      "заметили на сервере в процессах постоянно работающий процесс mysql, который грузит на 100+% постоянно, возможно время отклика каким то образом связано с работой базы данных"
  • Recently Browsing   1 member

×
×
  • Create New...

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.