
Всем привет! Сегодня я расскажу Вам, как создавать динамически такую картинку, как выше с использованием PHP. Все наверное задумывались, как такое реализовать. Мне кажется, если очень хорошо подумать, то нам на ум придет новая технология, которая сейчас внедряется, особенно с приходом HTML5. Это, как наверное многие уже догадались — SVG. Для тех, кто не знает, по сути, это — всего-лишь обыкновенная картинка, но записанная в виде подобия XML. Картинку можно получить двумя способами: нарисовать самому например в Inkscape или скачать уже готовую. Я воспользуюсь вторым методом, так как ни времени, ни художественного таланта у меня нет. Я буду делать на примере личных сообщений/почты, поэтому мне понадобяться две картинки, первая — сообщений нет, вторая — мы имеем некоторое количество новых сообщений. Скачаем картинки вот тут. old.svg — сообщений нет, new.svg сообщение есть.
Итак, перейдем к реализации. Нам понадобиться:
- Некоторые знания PHP и HTML
- Понимание, что такое шаблонизатор
- Понимание, что такое SVG
Качаем вот отсюда шаблонизатор.
Как работает шаблонизатор? Работает он довольно легко. Указываем классу шаблон, инициализируем переменные, парсим, получаем готовый к выводу код.
Если в коде, то работает примерно так:
require_once('template.php'); // Подключаем шаблонизатор $var = "Text"; $tpl->get_tpl('file.html'); $tpl->set_value('Var',$var); $tpl->tpl_parse();
Таким же образом мы и будем работать с нашими картинками. Для начала откроем каринку new.svg например в блокноте. Найдем в самом конце файла строки:
<tspan sodipodi:role="line" id="tspan5273" x="71.75" y="11.791">1</tspan>
И поменяем на:
<tspan sodipodi:role="line" id="tspan5273" x="71.75" y="11.791">{MSG}</tspan>
Этими действиями мы добавили переменную в шаблон. Теперь, когда у нас есть шаблон картинки, мы переходим к самой функцией. Перед написанием, нужно осознавать, что у нас две картинки и нам нужно подумать какую вывести в зависимости от значения переменной. Потом подставить это значение в шаблон и получим простенький код:
// Подключаем шаблонизатор require_once('template.php'); // Подключаем шаблонизатор $number = 1; if ($number == 1){ // Новое сообщение $tpl->get_tpl('imgs/new.svg'); $tpl->set_value('MSG',$number); $tpl->tpl_parse(); echo $tpl->html; } else{ // Сообщений нет $tpl->get_tpl('imgs/old.svg'); $tpl->tpl_parse(); echo $tpl->html; }
Учтем, что картинки лежат в поддериктории imgs, а шаблонизатор рядом со скриптом, в котором он подлючается.
Вот и все! Простое решение, простой проблемы.
P.S: Простите за картинку new.svg. Рисовать не умею, если не понравиться подправьте.
