За последние 24 часа нас посетили 35499 программистов и 1819 роботов. Сейчас ищут 832 программиста ...

Два объекта в цикле Smarty foreach

Тема в разделе "Прочие вопросы по PHP", создана пользователем allforweb, 1 окт 2010.

  1. allforweb

    allforweb Активный пользователь

    С нами с:
    18 сен 2010
    Сообщения:
    72
    Симпатии:
    0
    Простой вопрос, но ответ нигде не могу найти. Как разместить два объекта в одну строку в цикле Smarty foreach?
    Задача очень простая, есть меню, в каждой строке которого 2 объекта:
    - первый – иконка RSS и она же ссылка на RSS канал раздела
    - второй – ссылка на саму категорию

    Smarty foreach генерирует почему-то две строки, одну для RSS иконки, вторую для категории.

    Вот такой код у меня, вроде правильный:

    HTML:
    1. <div id="menu">
    2.            <ul>
    3.             <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>
    4.             {foreach from=$categories item=cat key=cat_id}
    5.             <li>
    6.             <a href="/rss.php?cat={$cat_id}"><img src="/images/rss.gif" width="12" height="12" border="0" alt="RSS"></a>
    7.             {""|indent:$cat.level:"&nbsp;&nbsp;&nbsp; "}
    8.             <a href="/categories/id/{$cat_id}">{$cat.title}</a>
    9.             </li>{/foreach}
    10.             <ul>
    11.                 </div>
    А в браузере получается так:
    Иконка
    Категория
    Иконка
    Категория

    А мне нужно так:
    Иконка – категория
    Иконка - категория
    Иконка - категория
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    во первых <ul> не помешает закрыть

    во вторых - код правильный с точки зрения шаблонизатора, но с точки зрения html - предполагаю, что у вас ширина
    меньше чем
    потому и переносится слово на следующую строку. ну и стили ссылок тоже загадка
     
  3. allforweb

    allforweb Активный пользователь

    С нами с:
    18 сен 2010
    Сообщения:
    72
    Симпатии:
    0
    Главный div - 210
    div самого меню 200
    а для иконки и ссылки вообще стиля нет никакого, может надо для них тоже сделать отдельные div?
     
  4. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    А Иконка – категория по ширине получается 200px или больше? Попробуйте поставить 400 px и посмотреть что получится

    А вообще установите себе Firefox и плагин firebug. Там можно нормально посмотреть стили элементов.
     
  5. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    allforweb
    Объединить массивы в PHP и вывести как один массив в Smarty.

    После этого отойти от компа на все выходные и подумать о смысле жизни и о том, хотите ли вы быть программистом. И если хотите, то купить пару книжек для старта, много гуглить и тренироваться. А ещё лучше пойти учится профильно.
    Потому что такой идиотский вопрос...

    З.Ы. Да, я злобен! Выборы-выборы - кандидаты пидоры!
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Psih человек немного некорректно вопрос сформулировал. Ему не объекты выводить надо и не массивы, а html-элементы.

    А про книжки, гугл и обучение полностью согласен. Если хотите заниматься вебом - начните с html, он первичен по отношению к php
     
  7. allforweb

    allforweb Активный пользователь

    С нами с:
    18 сен 2010
    Сообщения:
    72
    Симпатии:
    0
    В html коде все верно выводится, одним блоком списка, а на странице их два получается.
    HTML:
    1. <li>
    2. <a href="/rss.php?cat=-1"><img src="/images/rss.gif" width="12" height="12" border="0" alt="RSS"></a>
    3. <a href="/">Главная</a>
    4. </li>
    P.S. To Psih - ну я вот такой тупой, заняться мне больше нечем, открыл первый попавшийся сайт и от нечего делать начал разбирать код PHP и Smarty. Если нечего сказать то нефиг засорять ветку и корчить из себя крутого гуру. Тут каждый второй такой и выпендриваться особо не перед кем.
     
  8. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    allforweb
    Еще раз повторяю, у тебя ширина дива уже чем значение в нем, потому оно переносится. Сделай ширину 400 рх и посмотри что получится.
    Или шрифт уменьшай.
     
  9. allforweb

    allforweb Активный пользователь

    С нами с:
    18 сен 2010
    Сообщения:
    72
    Симпатии:
    0
    Нет, я пробовал как ты написал, если увеличивать значение, справа еще одно меню вылазит, только уже пустое.
    Иконка всего 16 пикселей - потом текст ну 10 символов, и переноса в HTML коде нет, а генерируется новый блок в списке.
     
  10. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    у изображения попробуй сделать align ="left"

    Если ты прислал сгенерированный html, а не подправленный руками, то он правильный
     
  11. allforweb

    allforweb Активный пользователь

    С нами с:
    18 сен 2010
    Сообщения:
    72
    Симпатии:
    0
    Я прислал код из браузера, исходный. Там проблема в том, что генерируется отдельная строка для каждого элемента. Генерирует цикл как то интересно, что код правильный а в браузере полная фигня.

    align ="left" тоже пробовал, никакой разницы, он и так по левому стоит.
     
  12. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    по умолчанию и img стоит align="bottom"
    Залей в инет свой проект и покажи) Кажется ты что-то скрываешь)))))
     
  13. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    надо добавить именно сюда
    <img src="/images/rss.gif" width="12" height="12" border="0" alt="RSS" align="left">
     
  14. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Не с того начали. Мой вам совет: сперва HTML & CSS, и только потом PHP. Причём без свякого Smarty по началу. Он мозги извращает и потом вы не в состоянии иметь дело с другими подходами. А он далеко не идиал, ой как далеко не идиал.
     
  15. allforweb

    allforweb Активный пользователь

    С нами с:
    18 сен 2010
    Сообщения:
    72
    Симпатии:
    0
    Psih
    HTML & CSS я знаю неплохо. Smarty не знаю совсем, но скрипт который хочу переделать на смарти написан, и вроде все сделал и все работает нормально, кроме меню. Я понял уже что со смарти сложно будет, на 5 форумах никто не смог подсказать ничего дельного.

    tommyangelo
    <img src="/images/rss.gif" width="12" height="12" border="0" alt="RSS" align="left"> - я ставил такой код. Вопрос решил проще, просто убрал иконки RSS и все, хотя с ними конечно меню смотрелось посолиднее.

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

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Psih
    Не, я с тобой не согласен. Он, конечно, не идеален, но удобен более чем.
    Сравни с шаблонизатором тех же IPB - у них чистая шизиловка. (правка, когда разберешься, удобная таки шизиловка =))

    И я не понял фразы о том, что

    С чего сей вывод? С собственного опыта?
     
  17. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Да не при чем тут Смарти, и вообще не при чем php. Подписываюь под словами Psih. Ты пробовал свою задачу на html решить??? Руками?
    Когда получится, тогда сразу всё ясно станет.
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Может &nbsp; попробовать, чтобы не разбивал строку. А по мне так и вобще пробел лишний.

    Ну и конечно, дело тут не в смарти, а в том коде который вы его заставляете рисовать. Смарти делает все ок, если есть и категории и иконки и все это по очереди. Почему разбиваются на строки - учите цсс и хтмл.
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ЗЫ: Firebug украли? что мешает поковыряться с кодом и стилями там?
     
  20. allforweb

    allforweb Активный пользователь

    С нами с:
    18 сен 2010
    Сообщения:
    72
    Симпатии:
    0
    Ну я же показал что код чистый, никаких пробелов и переносов нет. И Firebug чем поможет если с кодом все нормально?
     
  21. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Тем, что там можно хтмл корректировать без перезагрузки и смотреть что получится. А также видеть скомпилированные размеры элементов. Да и еще много чего. Установи и поймешь.
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а я вот не верю - это раз. тот код который был показан - с пробелом =)

    а два - фаербаг не для того, чтобы "показывать" а чтобы как я написал - поковыряться самому.