суббота, 29 января 2011 г.
Расширение NEWSLIST_EXT или делаем четные и нечетные (odd/even) строки в списке новостей
10:34 |
Автор:
Вадим Гиркало |
Изменить сообщение
Ни как не могу понять почему такую простую вещь разработчики не могут включить в ядро экстеншена.
Народ начинает изголяться, причем каждый по-своему. Один пишет экст (newslist_ext, например, который с tt_news 3.0.1 не работает), другой добавляет стили с помощью javascript (в надежде, что js включен у всех), третий в CSS применяет псевдо-классы first-child и last-child (чтобы выделить хотя бы первый и последний элемент списка новостей).
Для себя данную проблему решил следующим образом.
Сначала я установил расширение newslist_ext и посмотрел, что оно делает, а точнее, что оно должно делать. А делает оно элементарную вещь - переопределяет функцию getListContent класса tx_ttnews, т.е. к родному коду функции добавлено еще несколько дополнительных строк. Понятное дело, что за таким экстом, который обновляется каждые пол-года, автору было не угнаться и его творение (newslist_ext) перестало функционировать с выходом tt_news v.3. Похоже, что функция getListContent претерпела значительные изменения.
Вот кусочек php-кода (и моих 5 копеек), который родил автор newslist_ext, для того, чтобы наша жизнь стала краше и мы могли выделять в списке новостей не только первую и последнюю позиции, но и четные и нечетные строки:
// add code : add marker
$counter = $cc+1;
$markerArray['###NEWS_LIST1###'] = '';
$markerArray['###NEWS_LIST2###'] = '';
$markerArray['###NEWS_LIST3###'] = '';
$markerArray['###NEWS_LIST1###'] = $counter;
if ($counter==1) $markerArray['###NEWS_LIST2###'] = 'first';
if ($counter == $resCount) $markerArray['###NEWS_LIST2###'] = 'last';
if (($counter % 2) != 1) {
$markerArray['###NEWS_LIST3###'] = 'even';
} else {
$markerArray['###NEWS_LIST3###'] = 'odd';
}
// add code : end
Теперь в файле typo3conf\ext\tt_news\pi1\class.tx_ttnews.php находим актуальную для нашей версии tt_news функцию getListContent. Выделяем ее и копируем в буфер обмена. Переходим к файлу class.ux_tx_ttnews.php в директории typo3conf\ext\newslist_ext. В этом файле определена одна единственная функция - getListContent, которую мы вытираем и заменяем содержимым нашего клипборда.
Осталось дело за малым - добавить дополнительные строки php-кода, которые вы видите выше. Вставить их нужно за следующей строкой:
$layoutNum = ($itempartsCount == 0 ? 0 : ($cc % $itempartsCount));
Сохраняем файл и получаем работоспособное расширение newslist_ext.
Не забывайте добавить маркеры ###NEWS_LIST3### в те места, где вы собираетесь увидеть дополнительные CSS-стили - odd и even
Скачать обновленный NEWSLIST_EXT можно тут T3X_newslist_ext-0_0_1-z-201101291026.t3x
Народ начинает изголяться, причем каждый по-своему. Один пишет экст (newslist_ext, например, который с tt_news 3.0.1 не работает), другой добавляет стили с помощью javascript (в надежде, что js включен у всех), третий в CSS применяет псевдо-классы first-child и last-child (чтобы выделить хотя бы первый и последний элемент списка новостей).
Для себя данную проблему решил следующим образом.
Сначала я установил расширение newslist_ext и посмотрел, что оно делает, а точнее, что оно должно делать. А делает оно элементарную вещь - переопределяет функцию getListContent класса tx_ttnews, т.е. к родному коду функции добавлено еще несколько дополнительных строк. Понятное дело, что за таким экстом, который обновляется каждые пол-года, автору было не угнаться и его творение (newslist_ext) перестало функционировать с выходом tt_news v.3. Похоже, что функция getListContent претерпела значительные изменения.
Вот кусочек php-кода (и моих 5 копеек), который родил автор newslist_ext, для того, чтобы наша жизнь стала краше и мы могли выделять в списке новостей не только первую и последнюю позиции, но и четные и нечетные строки:
// add code : add marker
$counter = $cc+1;
$markerArray['###NEWS_LIST1###'] = '';
$markerArray['###NEWS_LIST2###'] = '';
$markerArray['###NEWS_LIST3###'] = '';
$markerArray['###NEWS_LIST1###'] = $counter;
if ($counter==1) $markerArray['###NEWS_LIST2###'] = 'first';
if ($counter == $resCount) $markerArray['###NEWS_LIST2###'] = 'last';
if (($counter % 2) != 1) {
$markerArray['###NEWS_LIST3###'] = 'even';
} else {
$markerArray['###NEWS_LIST3###'] = 'odd';
}
// add code : end
Теперь в файле typo3conf\ext\tt_news\pi1\class.tx_ttnews.php находим актуальную для нашей версии tt_news функцию getListContent. Выделяем ее и копируем в буфер обмена. Переходим к файлу class.ux_tx_ttnews.php в директории typo3conf\ext\newslist_ext. В этом файле определена одна единственная функция - getListContent, которую мы вытираем и заменяем содержимым нашего клипборда.
Осталось дело за малым - добавить дополнительные строки php-кода, которые вы видите выше. Вставить их нужно за следующей строкой:
$layoutNum = ($itempartsCount == 0 ? 0 : ($cc % $itempartsCount));
Сохраняем файл и получаем работоспособное расширение newslist_ext.
Не забывайте добавить маркеры ###NEWS_LIST3### в те места, где вы собираетесь увидеть дополнительные CSS-стили - odd и even
Скачать обновленный NEWSLIST_EXT можно тут T3X_newslist_ext-0_0_1-z-201101291026.t3x
Подписаться на:
Комментарии к сообщению (Atom)
О себе
- Вадим Гиркало
- Фрилансер, веб-разработчик сайтов на базе бесплатной, мощнейшей и очень гибкой CMS системы - TYPO3.
Мой сайт
Позвонить мне в Skype
TOP - 3
-
Как я уже писал в одной своей заметке ( SEO и общие рекомендации ), для сайта очень важно, чтобы при обращении к заведомо несуществующей ст...
-
Дорабатывая очередной свой сайт столкнулся с такой проблемкой. В шапке сайта есть две флэш вставки - банер, который вставлен через конструкц...
-
Несмотря на то, что материала по данной тематике вроде бы и достаточно, но весь он носит кусочно-латочно-разрозненный характер, что мешает б...
0 коммент.:
Отправить комментарий