На счет дизайна не совсем понял - что у вас не получается конкретно? В любом случае за представление элементов на страницах отвечает CSS. Да, есть зашитые в PHP элементы, без этого, увы, никак, но вы всегда можете переназначить класс(ид) и привязать к ним свои правила.
То есть как, есть зашитые php элементы и без них нельзя обойтись... на мой взгляд это большое заблуждение, со всем уважением Oldman... Зашитые PHP элементы это способ реализации, но никак не обязательный фактор... на данный момент классы различных элементов прописаны не только в темах, но и в файлах index, и даже внутри движка... Хотя за отображение содержимого должны отвечать только файлы .tpl... У CMS есть программисты, и они решили так реализовать вывод определенных элементов, это ни в коем случае ни ваша вина, ни Дмитрия и ни кого-либо еще... Все зашитые элементы делаются для облегчения формирования шаблона... Ведь намного проще передать например {title}, вместе с каскадом дивов обертки, чем прописывать их в шаблоне, или приписать в шаблоне каскад тех-же дивов с предустановленными классами... Хотя ничто не мешает передать классы теми-же переменными....
И на мой взгляд, этот вопрос более чем актуален, потому что мне приходилось лазить по коду в поисках какого-то класса, который используется один раз и прописан в движке... Где увидеть его по сути-то и не ожидаешь... И я не говорю в данный момент именно про danneo, я работал с 4-мя CMS, и везде эти проблемы есть.... И на мой взгляд, от них надо избавляться...
Просто для примера... Функция tableprint() в классе tm danneo...
<?php
function tableprint($variable,$re = false)
{
$r = '';
$table = array();
$table[1] = "<table width="100%" class="tables" cellpadding="0" cellspacing="0">n";
$table[2] = " <tr>n";
$table[3] = " <td style="width:".$this->width."%" class="tabletd vt">n";
$table[4] = " </td>n";
$table[5] = " </tr>n";
$table[6] = " </table>n";
if(is_array($variable)){
foreach ($variable as $key) {
if ($re) {
$r.= $table[$key];
} else {
echo $table[$key];
}
}
} else {
if ($re) {
$r.= $table[$variable];
} else {
echo $table[$variable];
}
}
if ($re) {
return $r;
}
}
Я добавил 3 переменные, и изменил функцию до такого вида...
<?php
function tableprint($variable,$re = false)
{
$this->table_class = ($this->table_class == '') ? 'tables' : $this->table_class;
$this->tr_class = ($this->tr_class == '') ? 'tabletr' : $this->tr_class;
$this->td_class = ($this->td_class == '') ? 'tabletd vt' : $this->td_class;
$r = '';
$table = array();
$table[1] = "<table width="100%" class="".$this->table_class."" cellpadding="0" cellspacing="0">n";
$table[2] = " <tr class=".$this->tr_class.">n";
$table[3] = " <td style="width:".$this->width."%" class="".$this->td_class."">n";
$table[4] = " </td>n";
$table[5] = " </tr>n";
$table[6] = " </table>n";
if(is_array($variable)){
foreach ($variable as $key) {
if ($re) {
$r.= $table[$key];
} else {
echo $table[$key];
}
}
} else {
if ($re) {
$r.= $table[$variable];
} else {
echo $table[$variable];
}
}
if ($re) {
return $r;
}
}
Изменений минимум, но зато я могу поставить любой класс, который мне нравиться.... Или, если мне это не надо, классы по умолчанию ставятся автоматом... Разве так не удобней???
Можно написать функцию divprint(), spanprint()... можно просто object_print(), и передавать ей во что оборачивать, какие ID и классы ставить... Это все вопросы реализации....