Midgard

Хотя можно хранить список логотипов в таблице базы данных, но, здесь есть лучшая альтернатива: создать каталог в прострастве "Публикуемых материалов", статьи которого будут определениями отдельных логотипов. Пусть это будет каталог No.54 (в новых версиях Midgardвозможна ссылка по имени). В каталоге 54 разместим статьи, причем в атрибут extra1 этой статьи запишем url изображения, а в атрибут extra2 - url ссылки. Чбы отличать логотипы от всех других статей в этом каталоге, присвоим им тип номер 12. Несмотря на то, что при этом используется интерфейс Midgard и который позволяет создать статьи в каталоге, на самом деле вносятся данные в аналогичную таблицу MySQL, но ее поля были предопределены разработчиками (если не хватило предопределенных полей - то об этом отдельный разговор, начиная с версии Bifrost).

Для отображения указаного списка логотипов требуется в адресном пространстве поместить следующий фрагмент кода:


<P>
<?
        $article = mgd_list_topic_articles(54,"order",12);
        if ($article)
                while($article->fetch()) {
                $article_item = mgd_get_article($article->id);
?>           <A HREF="&(article_item.extra2);">
                <IMG SRC="&(article_item.extra1);"> </A> <?
        }
?>
</P>

Как видим, о декомпозиции кода и дизайна речи пока не идет. К счастью, есть выход: определить участки HTML-кода в виде стилевых элементов и разместить их в пространстве Стилей. Тогда фрагмент кода изменится:


<[LOGO_head]>

<?
        $article = mgd_list_topic_articles(54,"order",12);
        if ($article) while($article->fetch()) {
                $article_item = mgd_get_article($article->id);
?>           <[LOGO_item]>  <?
        }
?>

<[LOGO_tail]>

А в таблице стилей появятся следующие элементы:


LOGO_head -- <p>

LOGO_item -- <A HREF="&(article_item.extra2);">
<IMG SRC="&(article_item.extra1);"> </A>

LOGO_tail -- <p>

Кажется, нужно еще сказать что-то о повторном использовании? Хорошо, создадим страничный элемент LOGO_list, следующего содержания:


<[LOGO_head]>

<?
        $article =
                mgd_list_topic_articles($article_topic,"order",12);
        if ($article) while($article->fetch()) {
        $article_item = mgd_get_article($article->id);
?>       <[LOGO_item]>  <?
        }
?>

<[LOGO_tail]>

А на самой странице разместим следующий код:


<? $article_topic = 54; ?>

<[LOGO_list]>

Вот, в принципе готово. Объяснив дизайнеру какие элементы можно редактировать и зачем, можно ожидать что дизайнер сделает дизайн.

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