Я пытаюсь показать значок темы по xml.
Как я могу получить значок с правой иконки идентификатора. Теперь он всегда загружает id 0.
Спасибо вам за помощь.
Я пытался и искал предложенные примеры, но не повезло.
XML:
<icons type="user" width="48" height="48">
<icon id="0" name="default" published="1" b2="file" b3="file" fa="file" src="user/default.png" />
<icon id="1" name="exclamation" published="1" b2="notification-circle" b3="exclamation-sign" fa="exclamation-circle" src="user/exclamation.png" />
<icon id="2" name="question" published="1" b2="question-sign" b3="question-sign" fa="question-circle" src="user/question.png" />
<icon id="3" name="idea" published="1" b2="lamp" b3="lamp" fa="lightbulb-o" src="user/idea.png" />
<icon id="4" name="love" published="1" b2="heart" b3="heart" fa="heart" src="user/love.png" />
</icons>
PHP:
$topicicon = $topic->icon_id;
$xmlfile = topicicons.xml';
if (is_file($xmlfile))
{
$xml = simplexml_load_file($xmlfile);
if (isset($xml->icons))
{
foreach ($xml->icons as $icons)
{
foreach ($icons->icon as $icon)
{
$attributes = $icon->attributes();
$icon = new stdClass();
$icon->id = (int) $attributes->id;
$icon->b2 = (string) $attributes->b2;
$icon->b3 = (string) $attributes->b3;
$icon->fa = (string) $attributes->fa;
$icon->src = (string) $attributes->src;
if ($topicicontype == 'B2')
{
return '<span class="icon icon-' . $icon->b2. '"></span>';
}
elseif ($topicicontype == 'B3')
{
return '<span class="glyphicon glyphicon-' . $icon->b3 . '"></span>';
}
elseif ($topicicontype == 'fa')
{
return '<i class="fa fa-' . $icon->fa . '"></i>';
}
else
{
return '<img src="' . $icon->src . '" alt="topicicon" />';
}
}
}
}
}
Я только что попытался var_dump / print_r объекта, и кажется, что он не загружает корневой элемент с его именем, поэтому проверка его имени (требует php 5.1.3)
РЕДАКТИРОВАТЬ: поэтому, если я правильно понимаю, вы хотите вернуть только значок, который $topicicon = $topic->icon_id
так вот обновленный код
if (is_file($xmlfile))
{
$xml = simplexml_load_file($xmlfile);
if (isset($xml) && $xml->getName()=="icons")
{
$icon = $xml->xpath('/icons/icon[@id='.$topicicon.']');
$attributes = $icon[0]->attributes();
$icon = new stdClass();
.. your conditions here
}
}
Других решений пока нет …