php добавить изображение в заголовок, если используется определенное слово - PullRequest
0 голосов
/ 19 января 2012

У меня есть следующий код:

<h2>
  <?php echo $this->item->title; ?>
</h2>

В зависимости от того, какое слово вводится в качестве заголовка, мне нужно разместить другое изображение слева от текста заголовка.

Изображения: uk.png, france.png, germany.png

Так что, если в тексте заголовка написано Франция, мне нужно вытащить изображение france.png. Поэтому мне нужен список изображений и заголовков, которые можно использовать, и если заголовок не соответствует изображению, изображение не отображается.

Надеюсь, это имеет смысл ...

Ответы [ 5 ]

1 голос
/ 19 января 2012
<?php

  $images = array (
    'France' => 'france.png',
    'UK' => 'uk.png',
    'Germany' => 'germany.png'
  );

  if (isset($images[$this->item->title])) {
?>

<img src="<?php echo $images[$this->item->title]; ?>" />

<?php } ?>

<h2>
<?php echo $this->item->title; ?>
</h2>
0 голосов
/ 19 января 2012

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

Я бы рекомендовал использовать ISO 3166-1 коды стран в качествеключи.Затем, основываясь на коде страны, у вас могут быть две функции, которые возвращают название страны и изображение.

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

<?php
function getCountryNameByIsoCode($iso_code)
{
    static $country_names = array ("FRA" => "France", "GBR" => "United Kingdom", ...);
    return $country_name[$code];
}

function getCountryFlagImageFileNameByIsoCode($code)
{
    static $country_flags = array ("FRA" => "france.png", "GBR" => "uk.png", ...);
    return $country_flags[$iso_code];
}
?>

<h2>
    <img src="/img/<?php echo getCountryFlagImageFileNameByIsoCode($this->item->iso_code); ?>" alt="" />
    <?php echo getCountryNameByIsoCode($this->item->iso_code); ?>
</h2>
0 голосов
/ 19 января 2012

Возможно, это не правильный ответ на ваш вопрос, но для ссылок вы можете получить то, что вы хотите, используя только css.

a[href$='.zip'], a[href$='.rar'], a[href$='.gzip'] {
    background:transparent url(../images/zip.png) center left no-repeat;
    display:inline-block;
    padding-left:20px;
    line-height:18px;
}

См. web-kreation для дополнительных примеров.

Только что подумал, я бы добавил это, так как это хороший совет для тех, кто хочет добавить значки в ссылки в зависимости от частей ссылки, что несколько похоже на то, что вы хотели.

0 голосов
/ 19 января 2012

Вы можете написать функцию, которая возвращает файл изображения на основе входной строки, которая, как мы полагаем, на вашем примере равна $this->item->title. Его основное назначение - вернуть строку после определения «страны» из входной строки.

function getCountryImage($input)
{
    // an array containing the mapping of country names to image file names
    $images = array(
        'France' => 'france.png',
        'UK' => 'uk.png',
        'Germany' => 'germany.png' );

    for each( $images as $country => $filename )
        if( $country == $input )
            return $filename;

    return '';
}

Осталось только отобразить изображение:

<img src="[image path]/<?php echo getCountryImage($this->item->title);?>" />

Хорошего дня.

0 голосов
/ 19 января 2012

например:

function getPic($title)
{
    static $pics = array('uk'      => 'uk.png',
                         'france'  => 'france.png',
                         'germany' => 'germany.png');
    return isset($pics[$title]) ? "<img src='{$pics[$title]}' >" : "";
}
...