lakbor

Пользователи
  • Число публикаций

    84
  • Регистрация

  • Последнее посещение

Репутация

49 Очень хороший

1 подписчик

О lakbor

  • Звание
    Пользователь

Информация

  • Пол
    Мужчина
  • Город:
    Москва

Недавние посетители профиля

2 239 просмотров профиля
  1. 1. можно пушнуть в конец массива маркер и проверять в каждой итерации его достижение (ресурсрёмко) 2. можно перед циклом count(), а в цикле счётчик и проверка достижения последнего элемента 3. можно перед циклом array_pop(), потом перебрать стд циклом, а выдранный элемент отобразить отдельно
  2. Вы наверное не смотрели код модуля. В плане интерфейсов он работает как сеопро, работает с той же таблицей url_alias. Не вижу причин, по которым какой-то модуль может не заработать с seobro. Да, если решить с него откатиться на сеопро или сеоурл, то будет мучительно больно, тут не спорю. Давайте ради эксперимента, скажите с какими модулями потестить работоспособность (бесплатные разумеется), а то вы уже в который раз упоминаете про несовместимость, но какие именно модули могут не заработать - не называете.
  3. стандарт - не стандарт... я читал ваши холивары на тему ОС 3й версии. и ой вэй, о каких стандартах может идти речь, если с выходом каждой новой ветки ОС мы получаем сильно несовместимые релизы? пожалуй единственное, что остаётся неизменным, это как раз таблица url_alias)) а если говорить о "стандартах" в рамках одной ветки, то иногда возникают нестандартные потребности, которые о-боже-как-же-решить-конечно-велосипедом. в общем, вы не переживайте, я всегда и всем по нескольку раз повторяю что это нестандартное решение и всё такое, и люди в курсе что они получают. ЗЫ - seo_bro уже 4+ месяца на продакшене работает
  4. Если нужно, боевая версия по запросу в ЛС
  5. Если вы про обычные теги для сео, то keywords сейчас не нужны, для продвижения остаются H1, title, description, ну и тексты, юзабилити, итд)
  6. Это метаинформация для, например, репоста в соцсетях. протокол Open Graph. для сео ничего страшного Подробнее: http://pr-cy.ru/news/p/5407
  7. Для начала хорошо бы удалить этот "спам" из футера
  8. Скорее всего вот отсюда http://joxi.ru/Q2K1WJMuDPzxrj Гугл собирает инфу для создания сниппета по всей странице
  9. http://joxi.ru/eAOW348u1M4xAo http://joxi.ru/ZrJkLqxHVX1Nmj 1 - что, 2 - куда
  10. Я так, чисто на всякий случай уточню, вы хтмл-теги вводите в режиме кода? или в визуальном редакторе?
  11. Я думаю, я выражу общее мнение, что мы занимаемся гаданием на кофейной гуще. Здесь надо отслеживать где происходит замена хттпс на хттп, или почему не происходит изначальная подстановка хттпс к урлам. На ВСЁМ вашем сайте все урлы идут через хттп. и форм экшены в том числе. (то что вы не можете зайти в админку это только малая часть проблемы). по-моему только гуглапи подключается через хттпс. здесь что-то не то творится в контроллерах. поэтому вам нужно или предоставить кому-нибудь доступ к фтп или ссш (кому-то кто понимает как в окарте формируются урлы), или самому копаться в контроллерах.
  12. переходить - да, но этот файл не имеет никакого отношения к формированию урлов на сайте
  13. хтаксесс тут ни при чём, за формирование урла отвечает контролер. проверьте в БД, таблица setting http://joxi.ru/8AnbP01cZjvkAO
  14. У вас и на сайте все формы через хттп. (т.е. не работает авторизация, регистрация и иже с ими.) В настройках сайта: http://joxi.ru/Y2LQZq1ik9zwA6
  15. Доброго всем дня! По просьбам трудящихся выкладываю код для OC второй версии) Скачал: ocStore 2.1.0.2.1 Во-первых, сразу предупреждаю: ВНИМАНИЕ! Все изменения, вносимые в код вы делаете на свой страх и риск, все файлы советую бэкапить, В ТОМ ЧИСЛЕ БАЗУ ДАННЫХ! Во-вторых, этот код писался под мой любимый ocStore, поэтому для чистого Opencart и его просто русифицированных версий будет отличаться. Итак, во-первых, как и раньше, лезем в файл: /admin/controller/catalog/category.php там перед последней фигурной скобкой } вставляем следующий код: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public function my_copy() { $this->load->language('catalog/category'); $this->document->setTitle($this->language->get('heading_title')); $this->load->model('catalog/category'); if (isset($this->request->post['selected'])) { foreach ($this->request->post['selected'] as $category_id) { $this->my_copycat($category_id); } } $this->getList(); } private function my_copycat($cid) { // GET LAST CID $query_id = $this->db->query("SELECT * FROM " . DB_PREFIX . "category;"); $last_cid=0; foreach ($query_id->rows as $qqqq) { if ($last_cid < (int)$qqqq['category_id']) { $last_cid = (int)$qqqq['category_id']; } } ++$last_cid; // 1-st QUERY ('category' DB) $qq = "SELECT * FROM " . DB_PREFIX . "category WHERE category_id = " . $cid . ";"; $query = $this->db->query($qq); $my_category = array(); foreach ($query->rows as $qqqq) { foreach ($qqqq as $mkey => $mval) { if ($mval == '') { $my_category[$mkey] = 'NULL'; } else { $my_category[$mkey] = $mval; } } } // 2-nd QUERY ('category_description' DB) $qq = "SELECT * FROM " . DB_PREFIX . "category_description WHERE category_id = " . $cid . ";"; $query = $this->db->query($qq); $my_category_description = array(); $j=0; foreach ($query->rows as $qqqq) { foreach ($qqqq as $mkey => $mval) { if ($mval == '') { $my_category_description[$j][$mkey] = 'NULL'; } else { $my_category_description[$j][$mkey] = $mval; } } $j++; } // 3-rd QUERY ('category_to_store' DB) $qq = "SELECT * FROM " . DB_PREFIX . "category_to_store WHERE category_id = " . $cid . ";"; $query = $this->db->query($qq); $my_category_to_store = array (); foreach($query->rows as $qqqq){ foreach ($qqqq as $mkey => $mval) { $my_category_to_store[$mkey] = $mval; } } // READING ENDED // READING ENDED // READING ENDED // WRITING TO DATABASE!!! // WRITING TO DATABASE!!! // WRITING TO DATABASE!!! //INS 1st ARRAY $qs = ', '; $qq_values = $last_cid . $qs . '\'' . $my_category['image'] . '\''. $qs . $my_category['parent_id'] . $qs . $my_category['top'] . $qs . $my_category['column'] . $qs . $my_category['sort_order'] . $qs . $my_category['status'] . ', \'' . $my_category['date_added'] . '\', \'' . $my_category['date_modified'] . '\''; $qq = 'INSERT INTO ' . DB_PREFIX . 'category (`category_id` ,`image` ,`parent_id` ,`top` ,`column` ,`sort_order` ,`status` ,`date_added` ,`date_modified`) VALUES (' . $qq_values . ');'; $query = $this->db->query($qq); //INS 2nd ARRAY $li = 0; $qs = ', '; while ($li < sizeof($my_category_description)) { $qq_values = $last_cid . $qs . $my_category_description[$li]['language_id'] . ', \'' . $my_category_description[$li]['name'] . '\', \'' . $my_category_description[$li]['description'] . '\', \'' . $my_category_description[$li]['meta_description'] . '\', \'' . $my_category_description[$li]['meta_keyword'] . '\', \'' . $my_category_description[$li]['meta_title'] . '\', \'' . $my_category_description[$li]['meta_h1'] . '\''; $qq = 'INSERT INTO ' . DB_PREFIX . 'category_description VALUES (' . $qq_values . ');'; $query = $this->db->query($qq); $li++; } //INS 3rd ARRAY $qq = 'INSERT INTO ' . DB_PREFIX . 'category_to_store VALUES (' . $last_cid . ', ' . $my_category_to_store['store_id'] . ');'; $query = $this->db->query($qq); // WRITING COMPLETED!!! // WRITING COMPLETED!!! // WRITING COMPLETED!!! } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Далее, в этом же файле перед: $data['add'] = $this->url->link('catalog/category/add', 'token=' . $this->session->data['token'] . $url, 'SSL'); вставляем: $data['copy'] = $this->url->link('catalog/category/my_copy', 'token=' . $this->session->data['token'], 'SSL'); Теперь переходим к файлу: /admin/view/template/catalog/category_list.tpl В нём, в самом начале после: <div class="page-header"> <div class="container-fluid"> <div class="pull-right"> Вставляем: <a onclick="$('#form-category').attr('action', '<?php echo $copy; ?>'); $('#form-category').submit();" class="btn btn-warning"><?php echo 'Copy Category'; ?></a> Класс кнопки может быть вместо btn-warning следующим: btn-default (белая) btn-primary (синяя) btn-success (зелёная) btn-info (голубая) btn-warning (желтая) btn-danger (красная) btn-link (в виде ссылки) Вот, собственно, и всё. Ещё раз - делайте бэкапы! May the Force be with you! P.S. Также поступило предложение заморочиться, чтобы копировалась не только сама категория, но и рекрсивно все подкатегории. Что ж, как будет время реализую) P.P.S. Весь мусорный отладочный выврд убрал, код работает чисто.