В предыдущей заметке я вкратце рассказал о том, что представляет из себя CMS 2z. В этой – приведу пример того, как можно доработать модуль голосования, чтобы результаты опросов выводились в более приятном для глаза виде. По-умолчанию результаты опросов выводятся в текстовом виде: вариант ответа, количество ответов и процент проголосовавших за этот вариант. А душа просила чего-то более красивого… В этой заметке речь пойдет о том, как вывести результаты голосования в виде красивых цветных шкалок. Я видел, что на форуме разработчиков 2z этот вопрос озвучивали, но решение так и не было найдено. Чтож, попытаюсь восполнить пробел своим примером. Так как в коде шаблона PHP использовать не получится, придется дорабатывать непосредственно код модуля voting. Итак, нам нужно доработать 2 файла плагина + шаблоны.
2z/extras/voting/config.php:
Найдите строку 27 с таким текстом:
1 | array_push($cfg, array('name' => 'skin', 'title' => 'Используемый скин', 'descr' => 'Вы можете использовать только один скин единовременно', 'type' => 'select', 'values' => $skList, 'value' => extra_get_param('voting','skin'))); |
После нее вставьте еще одну строку:
1 | array_push($cfg, array('name' => 'max_px', 'title' => 'Максимальная ширина шкалы', 'descr' => 'Укажите максимальный размер шкалы в пикселах', 'type' => 'input', 'value' => extra_get_param('voting','max_px'))); |
2z/extras/voting/voting.php:
Найдите строку 82:
1 | $cnt = 0; |
И вставьте после нее 2 строки:
1 2 | $max_px = extra_get_param('voting','max_px'); $max_cnt = 0; |
Теперь найдите строку (87):
1 | foreach ($lrows as $lrow) { $cnt += $lrow['cnt']; } |
И ЗАМЕНИТЕ ее на:
1 | foreach ($lrows as $lrow) { $cnt += $lrow['cnt']; $max_cnt = max($lrow['cnt'], $max_cnt); } |
Найдите строку:
1 | 'perc' => intval($lrow['cnt']*100/$cnt), |
и после нее добавьте строку:
1 | 'px' => intval($lrow['cnt']*$max_px/$max_cnt), |
Теперь у вас в шаблне появилась еще 1 переменная: {px}
Используйте ее в свое удовольствие!
Ну, например, вот так:
1 | <div style="height: 10px; background-color: #003399; width: {px}"></div> |

октября 12, 2008 в 9:38
А почему в шаблоне нельзя редактировать прямо? почему только в voting?
октября 12, 2008 в 12:13
В шаблоне нельзя использовать код php. Соответственно, вычислить необходимую ширину шкалки в пикселях – не получится.
октября 19, 2008 в 22:45
Я видел, что на форуме разработчиков 2z этот вопрос озвучивали, но решение так и не было найдено.
Решение было найдено (точнее оно не искалось, а был предложен макет), правльней надо было читать, и если кто-то сделал это то забыл поделится
, кстати реализовано было на javascript без дописывание модуля