Простой вопрос, но ответ нигде не могу найти. Как разместить два объекта в одну строку в цикле Smarty foreach? Задача очень простая, есть меню, в каждой строке которого 2 объекта: - первый – иконка RSS и она же ссылка на RSS канал раздела - второй – ссылка на саму категорию Smarty foreach генерирует почему-то две строки, одну для RSS иконки, вторую для категории. Вот такой код у меня, вроде правильный: HTML: <div id="menu"> <ul> <li><a href="/rss.php?cat=-1"><img src="/images/rss.gif" width="12" height="12" border="0" alt="RSS"></a> <a href="/">Главная</a></li> {foreach from=$categories item=cat key=cat_id} <li> <a href="/rss.php?cat={$cat_id}"><img src="/images/rss.gif" width="12" height="12" border="0" alt="RSS"></a> {""|indent:$cat.level:" "} <a href="/categories/id/{$cat_id}">{$cat.title}</a> </li>{/foreach} <ul> </div> А в браузере получается так: Иконка Категория Иконка Категория А мне нужно так: Иконка – категория Иконка - категория Иконка - категория
во первых <ul> не помешает закрыть во вторых - код правильный с точки зрения шаблонизатора, но с точки зрения html - предполагаю, что у вас ширина меньше чем потому и переносится слово на следующую строку. ну и стили ссылок тоже загадка
Главный div - 210 div самого меню 200 а для иконки и ссылки вообще стиля нет никакого, может надо для них тоже сделать отдельные div?
А Иконка – категория по ширине получается 200px или больше? Попробуйте поставить 400 px и посмотреть что получится А вообще установите себе Firefox и плагин firebug. Там можно нормально посмотреть стили элементов.
allforweb Объединить массивы в PHP и вывести как один массив в Smarty. После этого отойти от компа на все выходные и подумать о смысле жизни и о том, хотите ли вы быть программистом. И если хотите, то купить пару книжек для старта, много гуглить и тренироваться. А ещё лучше пойти учится профильно. Потому что такой идиотский вопрос... З.Ы. Да, я злобен! Выборы-выборы - кандидаты пидоры!
Psih человек немного некорректно вопрос сформулировал. Ему не объекты выводить надо и не массивы, а html-элементы. А про книжки, гугл и обучение полностью согласен. Если хотите заниматься вебом - начните с html, он первичен по отношению к php
В html коде все верно выводится, одним блоком списка, а на странице их два получается. HTML: <li> <a href="/rss.php?cat=-1"><img src="/images/rss.gif" width="12" height="12" border="0" alt="RSS"></a> <a href="/">Главная</a> </li> P.S. To Psih - ну я вот такой тупой, заняться мне больше нечем, открыл первый попавшийся сайт и от нечего делать начал разбирать код PHP и Smarty. Если нечего сказать то нефиг засорять ветку и корчить из себя крутого гуру. Тут каждый второй такой и выпендриваться особо не перед кем.
allforweb Еще раз повторяю, у тебя ширина дива уже чем значение в нем, потому оно переносится. Сделай ширину 400 рх и посмотри что получится. Или шрифт уменьшай.
Нет, я пробовал как ты написал, если увеличивать значение, справа еще одно меню вылазит, только уже пустое. Иконка всего 16 пикселей - потом текст ну 10 символов, и переноса в HTML коде нет, а генерируется новый блок в списке.
у изображения попробуй сделать align ="left" Если ты прислал сгенерированный html, а не подправленный руками, то он правильный
Я прислал код из браузера, исходный. Там проблема в том, что генерируется отдельная строка для каждого элемента. Генерирует цикл как то интересно, что код правильный а в браузере полная фигня. align ="left" тоже пробовал, никакой разницы, он и так по левому стоит.
по умолчанию и img стоит align="bottom" Залей в инет свой проект и покажи) Кажется ты что-то скрываешь)))))
надо добавить именно сюда <img src="/images/rss.gif" width="12" height="12" border="0" alt="RSS" align="left">
Не с того начали. Мой вам совет: сперва HTML & CSS, и только потом PHP. Причём без свякого Smarty по началу. Он мозги извращает и потом вы не в состоянии иметь дело с другими подходами. А он далеко не идиал, ой как далеко не идиал.
Psih HTML & CSS я знаю неплохо. Smarty не знаю совсем, но скрипт который хочу переделать на смарти написан, и вроде все сделал и все работает нормально, кроме меню. Я понял уже что со смарти сложно будет, на 5 форумах никто не смог подсказать ничего дельного. tommyangelo <img src="/images/rss.gif" width="12" height="12" border="0" alt="RSS" align="left"> - я ставил такой код. Вопрос решил проще, просто убрал иконки RSS и все, хотя с ними конечно меню смотрелось посолиднее. Я написал уже, что проблема в том, что смарти генерирует почему то для каждого элемента списка свой отдельный блок. А поскольку в блоке списка два элемента, то получается такая ерунда. Тут нужен человек который хорошо знает Smarty.
Psih Не, я с тобой не согласен. Он, конечно, не идеален, но удобен более чем. Сравни с шаблонизатором тех же IPB - у них чистая шизиловка. (правка, когда разберешься, удобная таки шизиловка =)) И я не понял фразы о том, что С чего сей вывод? С собственного опыта?
Да не при чем тут Смарти, и вообще не при чем php. Подписываюь под словами Psih. Ты пробовал свою задачу на html решить??? Руками? Когда получится, тогда сразу всё ясно станет.
Может попробовать, чтобы не разбивал строку. А по мне так и вобще пробел лишний. Ну и конечно, дело тут не в смарти, а в том коде который вы его заставляете рисовать. Смарти делает все ок, если есть и категории и иконки и все это по очереди. Почему разбиваются на строки - учите цсс и хтмл.
Ну я же показал что код чистый, никаких пробелов и переносов нет. И Firebug чем поможет если с кодом все нормально?
Тем, что там можно хтмл корректировать без перезагрузки и смотреть что получится. А также видеть скомпилированные размеры элементов. Да и еще много чего. Установи и поймешь.
а я вот не верю - это раз. тот код который был показан - с пробелом =) а два - фаербаг не для того, чтобы "показывать" а чтобы как я написал - поковыряться самому.