Вход • Регистрация

Вывести название категории в блоке на главной

  • 07 июля 2014 г. , редакция: 07 июля 2014 г.
  • Вывожу блок на главной таким образом:
    Код
    <insert name="show_block" module="shop" new_only="true" count="4" images="1" template="new">

    Пытаюсь в шаблоне (shop.view.show_block_new.php) вывести для каждого товара название его категории, перебираю массивы а там нет названия категории, как её вытащить?

    p.s. diafan 5.4
    • 09 июля 2014 г.
    • Попробуйте в файл modules/shop/shop.model.php, функцию public function show_block(...), в запрос добавить выборку для категорий:
      Код
      foreach ($rands as $rand)
      {
      $rows = DB::query_fetch_all("SELECT e.id, e.[name], sc.name1 as category_name, e.[anons], e.timeedit, e.site_id, e.brand_id, e.no_buy, e.article,
      e.hit, e.new, e.action, e.is_file".($sort == "sale" ? ", COUNT(g.id) AS count_sale" : "")."
      FROM {shop} AS e"
      . ($sort == "sale" ? " INNER JOIN {shop_order_goods} AS g ON g.good_id=e.id AND g.trash='0'" : '')
      . ($sort == "price" || $discount_only ? " INNER JOIN {shop_price} AS pr ON pr.good_id=e.id AND pr.trash='0'"
      ." AND pr.date_start<=".time()." AND (pr.date_start=0 OR pr.date_finish>=".time().")"
      ." AND pr.currency_id=0"
      ." AND pr.role_id".($this->diafan->_users->role_id ? " IN (0,".$this->diafan->_users->role_id.")" : "=0")
      ." AND (pr.person='0'".($this->person_discount_ids ? " OR pr.discount_id IN(".implode(",", $this->person_discount_ids).")" : "").")"
      : '')
      .$inner
      . ($this->diafan->_users->role_id ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='shop' AND a.element_type='element'" : "")
      . " LEFT JOIN {shop_category} AS sc ON sc.id=e.cat_id"
      . " WHERE e.[act]='1' AND e.trash='0'"
      .($this->diafan->_site->module == 'shop' && $this->diafan->_route->show ? " AND e.id<>".$this->diafan->_route->show : '')
      . ($hits_only ? " AND e.hit='1' " : "")
      . ($action_only ? " AND e.action='1' " : "")
      . ($new_only ? " AND e.new='1' " : "")
      . ($discount_only ? " AND pr.discount_id>0" : "")
      . $where
      ." AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
      . " AND (e.access='0'"
      . ($this->diafan->_users->role_id ? " OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id : '')
      . ")"
      . " GROUP BY e.id"
      . $order
      . ' LIMIT '
      . ($sort == "rand" ? $rand : 0).', '
      . ($sort == "rand" ? 1 : $count), $values);
      $this->elements($rows, 'block', array("count" => $images, "variation" => $images_variation));
      $this->result["rows"] = array_merge($this->result["rows"], $rows);
      }


      В самом шаблоне обращаться к этому полю можно как echo $row["category_name"];

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум