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


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

Условие в шаблоне для опреления чётных и нечётных материалов


Сообщений в теме: 37

#11 mmth

mmth

Отправлено 17 March 2017 - 13:38

а в чем сложность то тогда, как и писал выше делай, + css тебе в помощь

.odd .image{float:left;}
.even .image{float:right;}

вот тебе пример быстрый набросал https://jsfiddle.net/pukeoeyd/


  • 0

#12 zeus07

zeus07

Отправлено 17 March 2017 - 13:43

Да это всё понятно, Спасибо. Но писать кучу лишнего кода CSS просто нецелесообразно, если есть возможность подменять именно разметку. 


  • 0

#13 mmth

mmth

Отправлено 17 March 2017 - 13:57

Тебе только выравнивание (float) для блоков c контентом нужно задать, в твоем случае, если я все правильно понял 2 контейнера, первый фото, второй остальное (название, рейтинг, описание). Пара тройка ксс строчек.

А как писал выше Денис, будет очень тяжело передать параметр чётности в функцию рендера. 


  • 0

#14 zeus07

zeus07

Отправлено 17 March 2017 - 14:02

Нет, не пара контейнеров. 

 

В тизере используются такие элементы, как: 

 

- название материала

- вывод количества комментариев

- краткое описание

- рейтинг

- изображение

- кнопка Далее

 

Поэтому ещё раз повторюсь, нерентабельно использовать только CSS. как я говорил выше, удобнее подменять разметку, так как придётся слишком много править через CSS, поверьте, я не первый год в веб-разработке, и знаю, о чём говорю. 


  • 0

#15 mmth

mmth

Отправлено 17 March 2017 - 14:07

Дизайна я не видел, возможно. Но пусть даже и с таким кол-вом это по времени сделать быстрее (тем более если less scss), чем заниматься дебагом php)


  • 0

#16 zeus07

zeus07

Отправлено 17 March 2017 - 14:10

Там где удобнее делать через PHP, надо делать через PHP, а не костыли на CSS. Давайте не будем философствовать на данную тему.


  • 0

#17 mmth

mmth

Отправлено 17 March 2017 - 15:11

Костылем язык не поворачивается это называть, таблицы "зеброй" размечаются по тому же принципу в css только, через псевдокласс nth-child. Где метку для четности прописать в php я вам выше пример привел. Денис указал, где можно попробовать с render решение поискать.


  • 0

#18 zeus07

zeus07

Отправлено 17 March 2017 - 17:12

В плане item_columns я согласен, идея отличная! Добавил вам плюсик за это! Единственное, другая переменная счётчика используется - $j.

 

По поводу CSS устал повторять, что это вариант мне не подходит.


Денис, подскажите пожалуйста, можно ли передать переменную счётчика из шаблона с item_columns в teaser.php? И если да, то как это можно сделать?


  • 0

#19 SmetDenis

SmetDenis

Отправлено 17 March 2017 - 19:42

Денис, подскажите пожалуйста, можно ли передать переменную счётчика из шаблона с item_columns в teaser.php? И если да, то как это можно сделать?

 

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

 

Например, в месте где определяется четность

global $itemEven;
 
$itemEven= true|false;

Потом используем внутри рендера

global $itemEven;
 
if ($itemEven) {
    // один вариант
} else {
    // другой вариант
}
 

Самый коварный минус - мы должны синхронизировать переключение переменной и рендеринг.

Сложно предсказать из-за разница абстракций.

 

 

 

Еще вариант. Глобальность переменной переключать внутри рендеринга в рамках одной и той же функции

static $itemEven;
if (!isset($itemEven)) {
    $itemEven = 0; // Стартовое значение
}
 
$itemEven = 1 - $itemEven; // Переключатель, при вызове каждый раз меняет  0,1,0,1, ...
 
// Используем
if ($itemEven) {
    // один вариант
} else {
    // другой вариант
}

Минусы - чревато, если в одном материале выводятся другие материалы или будут подкатегории.


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



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


#20 zeus07

zeus07

Отправлено 17 March 2017 - 20:43

Еще вариант. Глобальность переменной переключать внутри рендеринга в рамках одной и той же функции global $itemEven; if (!isset($itemEven)) {     $itemEven = 0; // Стартовое значение }   $itemEven = 1 - $itemEven; // Переключатель, при вызове каждый раз меняет  0,1,0,1, ...   // Используем if ($itemEven) {     // один вариант } else {     // другой вариант }   Минусы - чревато, если в одном материале выводятся другие материалы или будут подкатегории.

 

Такой вариант предпочтительнее, как я понимаю?

 

Если будет подкатегория с материалами, то там разве не будет работать данное правило, ведь подкатегория по сути имеет такой же шаблон, как и категория? А про другие материалы - это вы имеете в виду Related Items?


  • 0




Click to return to top of page in style!