Перейти к содержанию
unknown

Как создать блог? Или блог для "бедных".

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

Работает на Ocstore 2.1.0.2

Для тех кто не хочет покупать модули и кому не страшно потом получить ошибки, добро пожаловать.

Для создания блога нам понадобится:

1. OpenCart (проверял на ocstore 2.1.0.2)

2. Модуль  Персонализованные шаблоны

3. images.png.2ed33537e808404c3cfef6c8f2a4eed1.png

 

Всё просто.

1. Устанавливаете модуль.

2. Создаете категорию с названием Блог и SEO URL.

3. С папки /catalog/view/theme/default/template/product - копируете файлы category.tpl и product.tpl, переименовываете их в понятные для вас названия (например, blog_category.tpl и blog_post.tpl ), вносите в них любые правки, загружаете обратно.

4. Админка - Дополнения - Модули - Персонализованные шаблоны - редактировать.

 

Для категории блога:

  • Добавить модуль
  • Тип шаблона: Для категории
  • Категории: Блог
  • Файл нового шаблона: product/blog_category (вводить нужно без .tpl, можете нажать "проверить путь" для проверки)

 

Для постов в блоге:

  • Добавить модуль
  • Тип шаблона: Шаблон для всех товаров из определенной категории (только с SEO URL)
  • Категории: Блог
  • Файл нового шаблона: product/blog_post (вводить нужно без .tpl, можете нажать "проверить путь" для проверки)

 

Сохранить.

 

Теперь у нас есть Блог, со своим дизайном.

 

Но наш блог, не совсем блог, и посты не посты, а товар, поэтому они будут появляться в результатах поиска, а также в модуле Последние поступления.

Решение такое.

в

/catalog/model/catalog/product.php

 

ищем

public function getLatestProducts($limit) {

к запросу

$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN `" . DB_PREFIX . "product_to_category` p2c ON (p.product_id = p2c.product_id) WHERE p.status = '1' AND quantity > 0 AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND p2c.category_id <> '59' ORDER BY p.date_added DESC LIMIT " . (int)$limit);

добавляем

AND p2c.category_id <> '59'

59 - это id категории Блог. У вас он может быть другой.

Получается вот так

$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN `" . DB_PREFIX . "product_to_category` p2c ON (p.product_id = p2c.product_id) WHERE p.status = '1' AND quantity > 0 AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND p2c.category_id <> '59' ORDER BY p.date_added DESC LIMIT " . (int)$limit);

После этого, в Последние поступления все "товары" "категории" 59 - "Блог", попадать не будут.

 

Теперь поиск.

/catalog/controller/product/search.php

 

ищем

$data['products'][] = array(

добавляем

'stock'       => $result['quantity'],

получаем

				$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
					'name'        => $result['name'],
					'stock'       => $result['quantity'],
					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
					'price'       => $price,
					'special'     => $special,
					'tax'         => $tax,
					'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
					'rating'      => $result['rating'],
					'href'        => $this->url->link('product/product', 'product_id=' . $result['product_id'] . $url)
				);

 

дальше в

/catalog/view/theme/default/template/product/search.tpl

 

ищем

<?php foreach ($products as $product) { ?>

 

Под ним добавляем

<?php if ($product['stock'] >= 0) { ?>

а также закрывающую скобку в конце, перед закрывающей скобкой foreach products as product

<?php } ?>

>=0 будет выводить товары в наличии и не в наличии (количество больше или равно 0)

> 0 только те, которые в наличии (количество больше 0)

 

В стандартном шаблоне выглядит так

Spoiler

<?php foreach ($products as $product) { ?>
        <?php if ($product['stock'] >= 0) { ?>
        <div class="product-layout product-list col-xs-12">
          <div class="product-thumb">
            <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" title="<?php echo $product['name']; ?>" class="img-responsive" /></a></div>
            <div class="caption">
              <h4><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></h4>
              <p><?php echo $product['description']; ?></p>
              <?php if ($product['price']) { ?>
              <p class="price">
                <?php if (!$product['special']) { ?>
                <?php echo $product['price']; ?>
                <?php } else { ?>
                <span class="price-new"><?php echo $product['special']; ?></span> <span class="price-old"><?php echo $product['price']; ?></span>
                <?php } ?>
                <?php if ($product['tax']) { ?>
                <span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
                <?php } ?>
              </p>
              <?php } ?>
              <?php if ($product['rating']) { ?>
              <div class="rating">
                <?php for ($i = 1; $i <= 5; $i++) { ?>
                <?php if ($product['rating'] < $i) { ?>
                <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span>
                <?php } else { ?>
                <span class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i><i class="fa fa-star-o fa-stack-2x"></i></span>
                <?php } ?>
                <?php } ?>
              </div>
              <?php } ?>
            </div>
            <div class="button-group">
              <button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
              <button type="button" data-toggle="tooltip" title="<?php echo $button_wishlist; ?>" onclick="wishlist.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-heart"></i></button>
              <button type="button" data-toggle="tooltip" title="<?php echo $button_compare; ?>" onclick="compare.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-exchange"></i></button>
            </div>
          </div>
        </div>
        <?php } ?>
        <?php } ?>

 

 

При создании Новости в Блоге, нужно будет проставить количество -1, тогда новость не попадет в выдачу поиска по сайту

Готово.

Изменено пользователем unknown
  • +1 1

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


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

После того как сделаем этот велосипед,аккуратно закатываем его в сайрай и забываем.

Возвращаемся на форум и ставим хотя бы это

Скрытый текст

1430989171_1871837159.jpg

 

  • +1 3

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.