Флуд о поиске в Joomla (28.11.2012)
Компонент поиска (com_search) в данной CMS - далеко не то, чем кажется на первый взгляд - он эксплуатирует чужой труд и кидает сам себе запросы, да еще и преобразуя методы на ходу.
Рабочей лошадкой при поиске является плагин (search), а компонент занимается приемом и обработкой пользовательских данных и выводом результата. Кстати, в запасе Joomla еще имеется модуль поиска и, так называемый, "умный поиск", при включении которого база растет неимоверными темпами.
С пересылкой запросов все настолько же путано: поисковая форма POST'ом отправляет данные контроллеру компонента поиска, который GET'ом пересылает их модели, которая передает их вызываемой из плагина функции.
Joomla
Произвольное независимое поле материала в Joomla (28.11.2012)
На этот раз добавим полноценное поле в базу и во все соответствующие инстанции, будто так оно и было. Для примера будем ковырять имеющийся тип материала - статью.
Содержимое материалов хранится в таблице 'content'. При установке Joomla по умолчанию предлагает задать для своих таблиц префикс, поэтому следует поискать таблицу вида 'xxxxx_content'. Добавим в нее поле города:
ALTER TABLE 'content' ADD city VARCHAR (255) NOT NULL
Опишем необходимое поле в модели формы редактирования (/administrator/components/com_content/models/forms/article.xml). Поместим его внутрь основного набора полей (fieldset), располагающегося в основной части окна редактирования материала.
  <fieldset addfieldpath="/administrator/components/com_categories/models/fields" >
    ...
    <field name="city" type="text" label="Город"
      description="Город" class="inputbox" size="45" />
    ...
  </fieldset>
//Использование произвольных значений и, особенно, кириллицы в полях 'label' и 'description' иначе как вкорячиванием не назовешь, т.к. лучше указывать здесь понятные константы заглавными буквами, которые парсятся и заменяются значениями для текущего языка из файлов в каталоге /language/.
Теперь, чтобы увидеть поле в административной панели, добавим его в шаблон редактирования материала (/administrator/components/com_content/views/article/tmpl/edit.php):
  <fieldset class="adminform">
    ...
    <li><?php echo $this->form->getLabel('city'); ?>
    <?php echo $this->form->getInput('city'); ?></li>
    ...
  </fieldset>
Можно прямо сейчас бежать в админку и заполнять данное поле у всех материалов. Потом бежать в базу и видеть, что значения и в самом деле записываются. Но Joomla пока так не думает.
Запрос в базу для выборки полей материала производится в его модели (/components/com_content/models/article.php). Для добавления нашего поля требуется отредактировать запрос следующим образом:
  $query->select($this->getState(...,a.city,...)
//Префикс '.a' возникает оттого, что далее в запросе таблице 'content' назначается данный псевдоним: '$query->from('#__content AS a');'.
Теперь можно смело выводить созданное поле в шаблоне материала (/conponents/com_content/views/article/tmpl/default.php), например, перед основным текстом:
  <?php echo $this->item->city; ?>
  <?php echo $this->item->text; ?>

Если хочется отделаться меньшей кровью
Типы полей формы в Joomla
Joomla
Произвольное поле для материала в Joomla (20.08.2012)
Фишка Джерси - добавить произвольное поле к материалу без работы с БД:
Заносим данные поля в /administrator/components/com_content/models/forms/article.xml

<fields name="images">
  <field
    name="image_intro"
    type="media"
    label="COM_CONTENT_FIELD_INTRO_LABEL"
    description="COM_CONTENT_FIELD_INTRO_DESC" />
...
</fields>

В компоненте выуживаем данные:
<?php foreach ($this->items as $i => $article) : ?>
<img src="<?=json_decode($article->images)->image_intro?>"/>
<?php endforeach; ?>

Это возможно, т.к. содержимое каждой предопределенной группы полей (fields) хранится в json.
Joomla
Альтернативные шаблоны Joomla (20.08.2012)
Изменение отображения компонентов:
в /templates/%templateName%/html/%com_name%/%viewName%/ кладутся php файлы из /components/%com_Name%/views/%viewName%/tmpl/
Добавление шаблона для пункта меню:
там же подредактировать %templateName%.xml
Шаблоны модулей кладутся прямо в корень:
../html/%mod_name%/
Joomla
JavaScript (13)
PHP (11)
Brainfuck (8)
adm (8)
Joomla (4)
Canvas (3)
answers (2)
API (2)
CMS (2)
Modx (2)
jQuery (1)
Ajax (1)
SQL (1)
Shell (1)
batch (1)
10-6