Перейти к содержанию
Официальный форум поддержки Simpla

Отдельная страница всех брендов


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

Отдельная страница по отображению всех брендов.
Наконец-то опробовал новую архитектуру в действии. Кому интересно - http://blog.rlstudio.com/2011/09/simpla-2-0-vse-brendy/

Ссылка на сообщение
Поделиться на другие сайты
  • 5 месяцев спустя...
  • 1 год спустя...

Да верно потому как инструкция не полная, точнее косячная. Итак по пунктам:
Правим контроллер api/Brands.php:
Добавляем свою функцию, которая генерирует бренды: (я вставил после функции  public function delete_image($brand_id))

 

	public function get_rand_brands($count = 2)
	{
		$brands = array();
		$category_id_filter = '';
		// Выбираем все бренды
		$query = $this->db->placehold("SELECT id, name, url, meta_title, meta_keywords, meta_description, description, image FROM __brands WHERE 1 ORDER BY RAND() LIMIT $count");
		$this->db->query($query);
 
		return $this->db->results();
	}

 

Далее в файле view/IndexView.php сразу после function fetch() { вставляем:

$brandni = $this->brands->get_rand_brands(15);
      $this->design->assign('brandni', $brandni);

get_rand_brands(15) - 15 это число брендов выведенных в блоке.

 

Теперь в шаблоне design/{ваш_шаблон}/index.tpl вместо полного списка брендов, будет выводить случайный набор:

В любом месте шаблона вставьте:
 

<h2>Производители</h2>
                 <div class="catalog_menu">
                  
                  <ul>
 
        	   {foreach $brandni as $brandss}
        		<!-- Бренд -->
        		<li>            
            		<!-- Фото бренда -->          
            		 {if $brandss->image}
            			<div><a href="brands/{$brandss->url}"><img src="./files/brands/{$brandss->image}" alt="{$brandss->name|escape}"/></a></div>
            		 {else}
            		  <!-- Фото бренда (The End) -->
            		  <!-- Название бренда -->
            		  <h3><a href="brands/{$brandss->url}">{$brandss->name|escape}</a></h3>
            		  <!-- Название бренда (The End) -->  
                         {/if}
        		<!-- Бренд (The End)-->
                   	
        	  {/foreach}    
    		  </ul>
                  <hr>
                  <b><center><a href="brands/">Все бренды</a><center></b>
                 </div>

Добавим с .htaccess перекидку на новый модуль — сразу после RewriteRule ^products/?$    index.php?module=ProductsView [L,QSA] Вставляем:

RewriteRule ^brands/?$    index.php?module=BrandsView [L,QSA]

Создаем файл подготовки данных view/BrandsView.php, который формирует данные для страницы брендов.

<?PHP
require_once('View.php');
class BrandsView extends View
{
    function fetch()
    {   
        // Выбираем товар из базы
        $this->design->assign('meta_title', 'Все производители');
        $this->design->assign('meta_keywords', 'Все производители');
        $this->design->assign('meta_description', 'Все производители');
 
        $brands = $this->brands->get_brands();
        $this->design->assign('brands', $brands);
 
        return $this->design->fetch('brands.tpl');
    }
}

И теперь делаем вывод всего этого в новый шаблон design/{ваш_шаблон}/brands.tpl (этот файл нужно создать)

{if $brands}
 
    <!-- Список брендов -->
    <ul>
 
        {foreach $brands as $brand}
        <!-- Бренд -->
        <li>            
            <!-- Фото бренда -->          
            {if $brand->image}
            <div><a href="brands/{$brand->url}"><img src="./files/brands/{$brand->image}" alt="{$brand->name|escape}"/></a></div>
            {/if}
            <!-- Фото бренда (The End) -->
            <!-- Название бренда -->
            <h3><a href="brands/{$brand->url}">{$brand->name|escape}</a></h3>
            <!-- Название бренда (The End) -->  
        </li>
        <!-- Бренд (The End)-->
        {/foreach}    
    </ul>
    <!-- Список брендов (The End)-->
    {else}
    Бренды не найдены<br /><br />
    {/if}

Вот и все работает! Пример http://s.intimdolgopa.ru 

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

А в чем косячность, если не секрет? Из тех 20 с "копейками" человек, которые за более чем 2 года (как была написана статья) писали мне - особых проблем не было. Только по верстке в основном спрашивали. Скажите, что Вы переписали и в каких версиях тестировали - я поправлю статью.

P.S. Извините, что я не предусмотрел в 2012 году функционал последующих версий Симплы и писаль только под версию 2.1.3 (на тот момент).

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

У многих мог не работать вывод брендов в блоге, из-за того, что вы передаете массив, а выводите ссылку из объекта.

Тут необходимо было использовать цикл:
 

{foreach $brandni as $brandss}
        		<!-- Бренд -->
        		<li>            
            		<!-- Фото бренда -->          
            		 {if $brandss->image}
            			<div><a href="brands/{$brandss->url}"><img src="./files/brands/{$brandss->image}" alt="{$brandss->name|escape}"/></a></div>
            		 {else}
            		  <!-- Фото бренда (The End) -->
            		  <!-- Название бренда -->
            		  <h3><a href="brands/{$brandss->url}">{$brandss->name|escape}</a></h3>
            		  <!-- Название бренда (The End) -->  
                         {/if}
        		<!-- Бренд (The End)-->
                   	
        	  {/foreach}    

А так все замечательно.

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

Понял :) К сожалению всего не учтешь... А насчет необходимости замены переменных - даже в стандартном шаблоне в некоторых местах есть загвоздка, например, связанные товары в карточке - одна и та же переменная $product.

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

Понял :) К сожалению всего не учтешь... А насчет необходимости замены переменных - даже в стандартном шаблоне в некоторых местах есть загвоздка, например, связанные товары в карточке - одна и та же переменная $product.

Да мне пришлось некоторые переменные переназначить

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

Если тема еще не мертва подскажите пожалуйста как в таком ключе сделать вывод товаров каждого бренда отдельно по аналогии c products /  product и можно ли вытащить сначала категории товаров к которым принадлежат товары данного бренда?

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

В Симпле есть по умолчанию вывод товаров бренда:

http://demo.simplacms.ru/brands/blackberry

http://demo.simplacms.ru/brands/samsung

По поводу категорий бренда - есть решение на форуме, используйте поиск.

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

Да верно потому как инструкция не полная, точнее косячная. Итак по пунктам:

Правим контроллер api/Brands.php:

Добавляем свою функцию, которая генерирует бренды: (я вставил после функции  public function delete_image($brand_id))

 

	public function get_rand_brands($count = 2)
	{
		$brands = array();
		$category_id_filter = '';
		// Выбираем все бренды
		$query = $this->db->placehold("SELECT id, name, url, meta_title, meta_keywords, meta_description, description, image FROM __brands WHERE 1 ORDER BY RAND() LIMIT $count");
		$this->db->query($query);
 
		return $this->db->results();
	}

 

Далее в файле view/IndexView.php сразу после function fetch() { вставляем:

$brandni = $this->brands->get_rand_brands(15);
      $this->design->assign('brandni', $brandni);

get_rand_brands(15) - 15 это число брендов выведенных в блоке.

 

Теперь в шаблоне design/{ваш_шаблон}/index.tpl вместо полного списка брендов, будет выводить случайный набор:

В любом месте шаблона вставьте:

 

<h2>Производители</h2>
                 <div class="catalog_menu">
                  
                  <ul>
 
        	   {foreach $brandni as $brandss}
        		<!-- Бренд -->
        		<li>            
            		<!-- Фото бренда -->          
            		 {if $brandss->image}
            			<div><a href="brands/{$brandss->url}"><img src="./files/brands/{$brandss->image}" alt="{$brandss->name|escape}"/></a></div>
            		 {else}
            		  <!-- Фото бренда (The End) -->
            		  <!-- Название бренда -->
            		  <h3><a href="brands/{$brandss->url}">{$brandss->name|escape}</a></h3>
            		  <!-- Название бренда (The End) -->  
                         {/if}
        		<!-- Бренд (The End)-->
                   	
        	  {/foreach}    
    		  </ul>
                  <hr>
                  <b><center><a href="brands/">Все бренды</a><center></b>
                 </div>

Добавим с .htaccess перекидку на новый модуль — сразу после RewriteRule ^products/?$    index.php?module=ProductsView [L,QSA] Вставляем:

RewriteRule ^brands/?$    index.php?module=BrandsView [L,QSA]

Создаем файл подготовки данных view/BrandsView.php, который формирует данные для страницы брендов.

<?PHP
require_once('View.php');
class BrandsView extends View
{
    function fetch()
    {   
        // Выбираем товар из базы
        $this->design->assign('meta_title', 'Все производители');
        $this->design->assign('meta_keywords', 'Все производители');
        $this->design->assign('meta_description', 'Все производители');
 
        $brands = $this->brands->get_brands();
        $this->design->assign('brands', $brands);
 
        return $this->design->fetch('brands.tpl');
    }
}

И теперь делаем вывод всего этого в новый шаблон design/{ваш_шаблон}/brands.tpl (этот файл нужно создать)

{if $brands}
 
    <!-- Список брендов -->
    <ul>
 
        {foreach $brands as $brand}
        <!-- Бренд -->
        <li>            
            <!-- Фото бренда -->          
            {if $brand->image}
            <div><a href="brands/{$brand->url}"><img src="./files/brands/{$brand->image}" alt="{$brand->name|escape}"/></a></div>
            {/if}
            <!-- Фото бренда (The End) -->
            <!-- Название бренда -->
            <h3><a href="brands/{$brand->url}">{$brand->name|escape}</a></h3>
            <!-- Название бренда (The End) -->  
        </li>
        <!-- Бренд (The End)-->
        {/foreach}    
    </ul>
    <!-- Список брендов (The End)-->
    {else}
    Бренды не найдены<br /><br />
    {/if}

Вот и все работает! Пример http://s.intimdolgopa.ru 

делал всё как вы говорили, но после изменения файла brands.php симпла выдала ошибку, Parse error: syntax error, unexpected T_PUBLIC in Z:\home\lec\www\api\Brands.php on line 132

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

Возможно, вставили в api/Brands.php в неверное место.

Надо вставлять по аналогии с другими функциями (перед заключительной фигурной скобкой).

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

У меня работает, но я использовал обычный список брендов для вывода всех, вместо:

$brandni = $this->brands->get_rand_brands(15);
      $this->design->assign('brandni', $brandni);
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...