1) ID поста - подставить его в цикл и вывести то что мне надо ...
В цикл чего? Куда вывести? Откуда данные?
Варианта действительно 2:
1) по клику на неполный текст подгружать аяксом с сервера в переменную полностью пост, затем вывалить ее в элемент в модальном окне.
2) подгружать контент изначально весь в невидимый элемент, часть яваскриптом перебросить в видимый элемент в виде превью, по клику тупо все содержимое невидимого блока вываливать в элемент в модальном окне.
1 вариант медленнее и более нагрузочный, вам придется 2 раза запрашивать одни данные, + второй раз ждать загрузки с удаленного сервера.
2 вариант более затратный по памяти браузера, все содержимое(всех статей выводимых для превью) будет сдублировано на стороне клиента в виде скрытого элемента + видимого сокращенного куска, зато модаль будет загружаться мгновенно, и второй запрос к серверу будет не нужен.