Блог студии RGB http://blog.rgb.kiev.ua Разумные пределы и пределы разумного. Путеводные заметки Sun, 01 May 2011 08:26:46 +0000 ru hourly 1 Принудительный режим совместимости для Internet Explorer http://blog.rgb.kiev.ua/2011/03/ie_compatibility_mode/ http://blog.rgb.kiev.ua/2011/03/ie_compatibility_mode/#comments Tue, 15 Mar 2011 11:58:34 +0000 admin http://blog.rgb.kiev.ua/?p=300 Ликуйте земляне – наконец-то вышел многожданный Internet Explorer 9, сходу получив высочайшие оценки от Acid-ов. Собственно, именно это нам и обещали разработчики из Microsoft, именно над этим они так долго трудились, именно к этому так долго готовились. Стоит ли чрезмерно распространятся о том что реальные сайты проходящие верификацию на соответствие XHTML 1.0 Strict по сути своей существенно отличаются от синтетических тестов? Пожалуй нет смысла.
Короче говоря, приноравливаясь к новым багамфичам IE9 и подгоняя под них вёрстку, делаем сайт удобоваримым для новой версии експлорера:

<meta http-equiv="X-UA-Compatible" content="IE=8" />

Рекомендуется использовать исключительно как временную меру.

]]>
http://blog.rgb.kiev.ua/2011/03/ie_compatibility_mode/feed/ 0
Валидный тег <a> с функциями атрибута target (_blank, _top, _self, someframe) http://blog.rgb.kiev.ua/2011/03/a-target/ http://blog.rgb.kiev.ua/2011/03/a-target/#comments Sun, 13 Mar 2011 12:26:00 +0000 admin http://blog.rgb.kiev.ua/?p=287 Валидный код с использованием javascript-аналогов.

target="_blank"

<a href="http://rgb.kiev.ua" target="_blank">Создание сайта</a>
<a href="http://rgb.kiev.ua" onclick="return !window.open(this.href)">Создание сайта</a>

target="_top"

<a href="http://rgb.kiev.ua" target="_top">Создание сайта</a>
<a href="http://rgb.kiev.ua" onclick="top.location.href = this.href;">Создание сайта</a>

target="_self"

<a href="http://rgb.kiev.ua" target="_self">Создание сайта</a>
<a href="http://rgb.kiev.ua" onclick="self.location.href = this.href;">Создание сайта</a>

target="_parent"

<a href="http://rgb.kiev.ua" target="_parent">Создание сайта</a>
<a href="http://rgb.kiev.ua" onclick="parent.location.href = this.href;">Создание сайта</a>

target="_parent"

<a href="http://rgb.kiev.ua" target="someframe">Создание сайта</a>
<a href="http://rgb.kiev.ua" onclick="top.frames['someframe'].location.href = this.href;">Создание сайта</a>
]]>
http://blog.rgb.kiev.ua/2011/03/a-target/feed/ 0
Добавить новое поле в материал Joomla 1.5 http://blog.rgb.kiev.ua/2010/11/joomla-add-new-field/ http://blog.rgb.kiev.ua/2010/11/joomla-add-new-field/#comments Sun, 31 Oct 2010 23:19:02 +0000 admin http://blog.rgb.kiev.ua/?p=217 Нередко возникает необходимость расширить функциональность стандартного компонента публикации материалов Joomla, будь то добавление в панель администрирования контента дополнительного текстового поля, select-списка, информационного блока и т.д. В подобном случае, использование громоздких сторонних CCK является нерациональным, хотя бы по причине их значительной избыточности. Ищущим простых изящных решений предназначена эта статья.
Задача не из сложных, и требует не столько понимания принципов работы CMS Joomla, сколько эмпирического знания - где что нужно дописать/изменить. Далее следует пример создания "эталонного" дополнительно поля <input type="text" /> в админке материала.


Примеры тестировались на:

  • PHP - 5.3.2
  • Joomla - 1.5.21

1. Добавление в шаблон интерфейса back-end

Открываем файл administrator/components/com_content/admin.content.html.php - здесь содержится шаблон страницы добавляемого/редактируемого материала. Находим строку номер 833* где видим закрывающий тег. Непосредственно после него добавляем свою таблицу:

<table class="adminform">
	<tbody>
		<tr>
			<td>Новое поле:</td>
			<td><input id="new_field" class="inputbox" maxlength="255" name="new_field" size="40" type="text" value="<php echo $row->new_field; ?>" /></td>
			<td></td>
			<td></td>
		</tr>
	</tbody>
</table>

1.1. (опционально) Добавление в шаблон интерфейса front-end

Для возможности работы с новым полем непосредственно со страниц сайта, аналогично работаем с файлом components/com_content/views/article/tmpl/form.php:

<table class="adminform">
	<tbody>
		<tr>
			<td>Новое поле:</td>
			<td><input id="new_field" class="inputbox" maxlength="255" name="new_field" size="40" type="text" value="<php echo $this->article->new_field; ?>" /></td>
			<td></td>
			<td></td>
		</tr>
	</tbody>
</table>

2. Модификация базы данных

При помощи любого менеджера баз данных (например phpMyAdmin) редактируем структуру таблицы #__content (по умолчанию jos_content), добавляя поле new_field с текстовым типом данных. Например, таким запросом:

ALTER TABLE jos_content ADD new_field VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

3. Модификация библиотеки работы с базой данных

Открываем файл libraries/joomla/database/table/content.php , находим строку class JTableContent extends JTable и добавляем свойство var $new_field = null;

class JTableContent extends JTable {
	/** @var string This is our new field */
	var $new_field 		= null;
	/** @var int Primary key */
	var $id 			= null;
	/** @var string */
	var $title 			= null;

4. Модификация модели компонента

В папке components/com_content/models расположены несколько файлов, функциональное назначение которых отражено в их названии. Например, category.php содержит код MVC-модели части компонента отвечающего за вывод данных в формате списка/блога. В случае использования данных из нового поля вне пределов страницы материала/статьи, за которую отвечает файл article.php который не требует модификаций, необходимо будет внести изменения в запрос для выборки из таблицы . Проще всего это сделать найдя в нужном файле текст a.title_alias и добавив в перечень обрабатываемых столбцов a.new_field . К примеру, для модели категории это изменение будет выглядеть следующим образом:
В строке 361 файла category.php найти текст:

$query = 'SELECT cc.title AS category, a.id, a.title, a.alias, a.title_alias, a.introtext, ...

И модифицировать выборку:

$query = 'SELECT cc.title AS category, a.id, a.title, a.alias, a.title_alias, a.new_field, a.introtext, ...

5. Использование

К этому моменту мы уже имеем полнофункциональную систему, осталось лишь продемонстрировать пример использования добавленного функционала, что мы и сделаем, добавив данные из нового поля как постскриптум материала/статьи. Один из вариантов реализации - модификация стандартных шаблонов. Для этого необходимо открыть файл components/com_content/views/article/tmpl/default.php и, добавив необходимый html-блок, вывести данные из переменной $this->article->new_field . Находим html-код и добавляем перед ним наш код:

</table>
<div><?php echo $this->article->new_field; ?></div>
<span class="article_separator">&nbsp;</span>

* Здесь и далее приведены номера строк которые могут незначительно отличаться в последующих и предыдущих релизах CMS Joomla

]]>
http://blog.rgb.kiev.ua/2010/11/joomla-add-new-field/feed/ 11