Комментарии

Специальная настройка компоновки
( 0 Голосов )

Если еще раз проанализировать содержимое файла default.php, то можно заметить, что заголовок статьи и ссылка на нее извлекаются из переменной $item. Циклическое обращение к элементам массива организуется с помощью оператора foreach языка РНР, а следовательно, переменная $list содержит массив объектов, где каждый объект доступен из переменной $item.

Мы знаем также, что у объекта из переменной $item имеются, по крайней мере, два поля: link и title, поскольку они используются в компоновке. Но из данного файла мы не можем выяснить, какая еще информация в ней имеется. Правда, это нетрудно будет сделать, если добавить в файл компоновки команду var_dump ($item), расположив ее в цикле foreach. В итоге все содержимое переменной $item будет выведено на экран, и мы узнаем, что еще в ней хранится. Ниже показано, каким образом выглядит видоизмененный файл компоновки, где упомянутая выше команда выделена полужирным.

Если теперь перезагрузить статью из модуля последних статей (Latest Articles Module), появится длинный перечень содержимого, выведенного из переменной $item с помощью функции var_dump ().

Если воспользоваться отладчиком кода РНР, то можно получить ту же самую информацию, вставив точку прерывания там, где была введена функция var dump (), а затем проанализировать содержимое переменных средствами отладчика. Из выводимой информации выясняется, что переменная $item содержит объект типа stdClass, встроенный в РНР и действующий аналогично массиву. Каждое поле этого объекта доступно по записи Собъектная переменная => имя поля.

Таким образом, в стандартной компоновке мы обнаруживаем код $item->title, предоставляющий доступ к полю title внутри объекта из переменной $item. Кроме того, из выводимой информации выясняется тип каждого поля (строковый, целочисленный и т.д.), его значение и длина.

Мы обнаруживаем большое количество полей, доступных для статьи из данной компоновки. Но для рассматриваемого здесь примера нам требуется лишь одно поле — introtext. В этом поле хранится часть текста статьи вплоть до прерывающей ссылки Read More (Читать далее). А в отсутствие прерывающей ссылки Read More в этом поле хранится весь текст статьи.

Напомним, что наша задача — расположить первую часть каждой статьи под ее заголовком. Для этого можно было бы, например, воспользоваться функцией substr () языка РНР, которая позволяет извлечь часть символьной строки из заданного в ней места. Допустим, что нам требуется отобразить первых 50 символов из каждой статьи. С этой целью мы могли бы видоизменить компоновку так, как выделено ниже полужирным.

Функция substr () принимает три аргумента, указываемых в круглых скобках. В качестве первого аргумента указывается исходный текст, в качестве второго — место, с которого следует начинать извлечение фрагмента этого текста, и в качестве третьего аргумента — длину извлекаемого фрагмента. В данном случае нам требуется извлечь фрагмент текста длиной в 50 символов с самого начала статьи, для чего в качестве второго аргумента указывается 0, а не 1.

Для начинающих осваивать язык РНР заметим, что оператор точки (.) называется сцеплением. Этим замысловатым термином обозначается обычное соединение двух текстовых или символьных строк в одно целое. Таким образом, оператор сцепления лишь добавляет многоточие в конце извлекаемого из статьи начального фрагмента текста, давая пользователю знать, что у данной статьи имеется продолжение. А теперь перезагрузим страницу с поправленной компоновкой и посмотрим, как она выглядит после внесенных нами корректив.


Понравился материал? Пригодилась информация? Плюсани в социалки!


Теги:
 
Похожие новости