Jump to content

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


Recommended Posts

  • 5 months later...
  • 1 year later...

Да верно потому как инструкция не полная, точнее косячная. Итак по пунктам:
Правим контроллер 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 

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

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

{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}    

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites
  • 1 year later...

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

Link to post
Share on other sites
  • 2 weeks later...

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

Правим контроллер 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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...