Перейти к содержимому


Фотография
- - - - -

Разный вид тизеров в разных категориях

teaser category teaser шаблон тизер

Лучший Ответ SmetDenis , 04 August 2015 - 16:22

Не совсем понимаю вопроса.


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

Получается что ответа на ваш вопрос два.

Либо мы проверяем категорию, которая в ссылке
$categoryId = $this->app->jbrequest->getSystem('category');
либо ту, которая установлена у материала как основная.
$categoryId = $item->getPrimaryCategoryId();

Далее ищем совпадение в нашем условии
if ($categoryId & in_array($categoryId, array(9))) {
    echo $this->renderPosition('price');
}
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 10

#1 LeMax

LeMax

Отправлено 03 August 2015 - 13:43

Добрый день!

 

Так и не смог понять как сделать по этому совету: Топик

а топик закрыт и решение итоговое не опубликовано (хотя если это сделать, то можно избежать дублирующих вопросов и использование "поиска" будет более продуктивным)

 

Прошу помощи в следующем:

 - укажите что именно нужно указать в teaser.php

 - куда именно и как применить   $item->category

 - возможно ли использовать обратное значение, т.е. не "Показать блоки, если категория = А", а наоборот, "показать блоки, если категория не ровна А"

 

Спасибо.

 

ПС: понимаю, что вопрос вроде простой и есть справка по PHP в интернетах, и куча примеров.

Но вот чего-то не растет у меня с этим. Заранее благодарен за помощь.

 

ППС: для будущих сборок (коробки) было бы отлично переопределять в админке шаблон Тизера для категории (в рамках одного приложения и одного шаблона материала), тогда не нужно будет мастерить сложный teaser и будет абсолютно все настраиваемо.


Сообщение отредактировал LeMax: 03 August 2015 - 13:44

  • 0

#2 SmetDenis

SmetDenis

Отправлено 03 August 2015 - 15:33

В одном и том же файле teaser.php делается несколько разных условий
$categoryId = $item->getPrimaryCategoryId();
if ($category == 42) {
     // вывод только для категории 42
} elseif ($category == 43) {
     // вывод только для категории 43
}

ППС: для будущих сборок (коробки) было бы отлично переопределять в админке шаблон Тизера для категории (в рамках одного приложения и одного шаблона материала), тогда не нужно будет мастерить сложный teaser и будет абсолютно все настраиваемо.

Идея хорошая, но сейчас нет такой возможности.
С точки зрения Zoo категория и шаблон материала находятся слишком далеко друг от друга.
  • 2
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 LeMax

LeMax

Отправлено 03 August 2015 - 19:08

Благодарю за ответ, и все же не получается реализовать задуманное.

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

 

(Необходимо чтобы позиция 'price' отображалсь только у категорий 9, 10, 11)

<?php defined('_JEXEC') or die('Restricted access'); ?>

<h2><?php echo $this->renderPosition('title'); ?></h2>
<?php echo $this->renderPosition('image'); ?>

<?php
$categoryId = $item->getPrimaryCategoryId();
if ($category == 9, 10) {
<?php echo $this->renderPosition('price'); ?>
} ?>
 

или так (тоже не работает)

<?php 
defined('_JEXEC') or die('Restricted access');
$categoryId = $item->getPrimaryCategoryId(); 
?>

<h2><?php echo $this->renderPosition('title'); ?></h2>
<?php echo $this->renderPosition('image'); ?>

<?php if ($category == 9, 10, 11) { ?>
<?php echo $this->renderPosition('price'); ?>
} <?php endif; ?>
 

Сообщение отредактировал LeMax: 03 August 2015 - 19:09

  • 0

#4 woodman

woodman

Отправлено 03 August 2015 - 19:21

Если я не ошибаюсь, нельзя внутрь <php ?> еще раз вставлять тег <php ?>

 

В первом варианте попробуйте так

<?php
$categoryId = $item->getPrimaryCategoryId();
if ($category == 9, 10) {
echo $this->renderPosition('price');
} 
?>

  • 1

#5 LeMax

LeMax

Отправлено 03 August 2015 - 19:27

Благодарю за помощь, но не помогло, элемент по прежнему не отображается.

Также попробовал вот так, но изменений нет:

<?php defined('_JEXEC') or die('Restricted access'); 
$categoryId = $item->getPrimaryCategoryId();
?>

<h2><?php echo $this->renderPosition('title'); ?></h2>
<?php echo $this->renderPosition('image'); ?>

<?php
	if ($category == 7) {
	echo $this->renderPosition('price');
	} 
?>

  • 0

#6 SmetDenis

SmetDenis

Отправлено 04 August 2015 - 09:49

Дело не в коде, в синтаксисе PHP (основы).

Приложите пожалуйста файл шаблона.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#7 LeMax

LeMax

Отправлено 04 August 2015 - 10:37

Дело не в коде, в синтаксисе PHP (основы).

Приложите пожалуйста файл шаблона.

Выше как раз и указан весь шаблон.

Сейчас он в таком виде:

<?php defined('_JEXEC') or die('Restricted access'); ?>
 
<h2><?php echo $this->renderPosition('title'); ?></h2>
<?php echo $this->renderPosition('image'); ?>
<?php echo $this->renderPosition('price'); ?>

Позицию 'price' нужно вывести только в трех определенных категориях.

Для остальных категорий эта позиция не должна отображаться.


  • 0

#8 SmetDenis

SmetDenis

Отправлено 04 August 2015 - 10:40

Позицию 'price' нужно вывести только в трех определенных категориях.


<?php
$categoryId = $item->getPrimaryCategoryId();
if ($categoryId & in_array($categoryId, array(9, 10, 11))) {
    echo $this->renderPosition('price');
}
?>
Это основы PHP синтаксиса.


Вам нужно проверять категорию из материала или ссылки?
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#9 LeMax

LeMax

Отправлено 04 August 2015 - 11:55

Вам нужно проверять категорию из материала или ссылки?

Не совсем понимаю вопроса.

Как это будет использоваться:

 

Есть категории:

  • Категория  А
    • Подготегория А1
    • ...А2
    • ...А3
  • Категория Б
    • Подкатегория Б1
    • ...Б2
    • ...Б3

Созданы пункты меню для "категории А" и "категории Б".

Материалам присваивается по две-три подкатегории (например А1, Б2, Б3).

Если заходим через меню в "Категорию А1", то у тизеров должны видеть цены.

Если заходим через меню в "Категорию Б2", то у тизеров не должны видеть цену.

 

Так как используется один и тот же материал (и шаблон), то в этом и возник вопрос - как разделить отображение.

Сейчас буду пробовать реализовать Ваш совет, по итогам отпишусь.

 

Заранее благодарен.

 

ПС: 

Это основы PHP синтаксиса.

В том то и дело что я сидел с учебником и Вашим комментарием - и у меня родилось только два варианта, которые указаны в шапки поста - и все равно не работало, видимо либо не дочитал, либо не понял как этими основами пользоваться :)))


  • 0

#10 LeMax

LeMax

Отправлено 04 August 2015 - 12:24

Шаблон приобрел вид:

<?php defined('_JEXEC') or die('Restricted access'); ?>

<h2><?php echo $this->renderPosition('title'); ?></h2>
<?php echo $this->renderPosition('image'); ?>

<?php
$categoryId = $item->getPrimaryCategoryId();
if ($categoryId & in_array($categoryId, array(9))) {
    echo $this->renderPosition('price'); ?>
}
?>

На сайте теперь просто белая страница в тех местах, где должен отображаться тизер


  • 0





Темы с аналогичным тегами teaser category, teaser, шаблон, тизер

Click to return to top of page in style!