Joomla 2.5 - API reCaptcha для работы с ajax формой

Если необходимо быстро без сторонних компонентов и модулей реализовать отправку jquery.ajax формы обратной связи и при этом защититься reCaptcha - вот решение. Сразу оговорюсь, не буду описывать как для начинающих, кому надо тот поймет как применить.

Вывод капчи в форме:

<?
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
// Обрабатываем блок dynamic_recaptcha_1 капчей
$dispatcher->trigger('onInit','dynamic_recaptcha_1');
?>
<form action="<?=JURI::root()?>?tmpl=ajax" method="POST">
	<input type="text" name="name" value="" />
	<input type="text" name="phone" value="" />
	<div id="dynamic_recaptcha_1"></div>
	<input type="submit" value="ОТПРАВИТЬ" class="submit" />
</form>
<script>
// Сценарий отправки формы на адрес обработчика
</script>

Скрипт обработчик:

$post = JRequest::get('post');     
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$captcha = $dispatcher->trigger('onCheckAnswer',$post['recaptcha_response_field']);
if ($captcha[0] == false) {
	echo 'false';
} else {
	echo 'true';
}

Вот и все. Естественно не забываем выбрать reCaptcha по умолчанию и прописать в плагине ключики.

Joomla - как убрать id материала

Не буду рассказывать про ARTIO JoomSEF, SH404SEF так как не уважаю подобные компоненты/расширения. Предпочитаю следовать архитектуре Joomla, чего и другим советую.

Изучай архитектуру движка, а не ломайте сайты как тебе привычно.

И так, доставучие seo'шники требуют убрать id из url'а материала типа блог. Проделать подобное можно подправив router.php компонента com_content. В функция build() и parse() находим:

$advanced = $params->get('sef_advanced_link', 0);

и меняем на:

$advanced = $params->get('sef_advanced_link', 1);

Так же в функции parse() находим кусок кода и комментируем его:

Подробнее...

Joomla слэш на конце

Joomla не любит слэши на конце, сталкивался с глюками Virtuemart. Но иногда сделать это жизненно необходимо. Конечно можно воспользоваться 301 редиректом .htaccess, но ПС все-равно видит ее без слэша, а перейдя получает 301 редирект. Немножко облегчим задачу роботам )

(j2.5) редактируем includes/router.php в классе JRouterSite находим функцию _buildSefRoute() в ней меняем последнюю строчку

$uri->setPath($route.'/');

(j3.x) редактируем libraries/cms/router/site.php в классе JRouterSite находим функцию buildSefRoute() в ней меняем последнюю строчку

$uri->setPath($route.'/');

Да, этот способ плох тем что после обновления слетит. Но SEO'шники неисправимы, требуют.

Ну и для верности сделать 301 редирект через .htaccess с без слэша на слэшь. Ссылку на статью приводил выше.

Joomla подключение языкового файла

Бывает необходимо подключить языковой файл другого компонента или модуля. Все просто

JFactory::getLanguage()->load('com_namecomponent')

Вот как то так

Cackle комметарии - обработка плагинами Joomla

Пользуюсь системой комментариев от Cackle. В связке с виджетом использую плагин синхронизации комментариев, который индексируется ПС. На днях в комментариях вел дискуссию, в который указал свой email. Надеюсь не для кого не секрет что в дистрибутиве joomla есть плагин маскировки email адресов. Так вот, заметил что комментарии Cackle не обрабатываются плагинами. Полез дорабатывать )))

Лень выкладывать файликами, просто опишу что надо сделать.

Подробнее...

Конвертер CSV из XLS со своим разделителем

Давно это было когда прайсы конвертировались из xls в csv и через компонент CSVI импортировались в Virtuemart. В своей практике делал все связки, но на данный момент чаще задача импорта xml или xls. Но да это случилось, попалась мне такая задача импорта.

Подробнее...

Умный поиск - плагин поиска товаров Virtuemart

Написал плагин для товаров Virtuemart, с помощью которого можно организовать так называемый Умный поиск.

Преимущество думаю всем известны:

  • Релевантный поиск.
  • Фильтры.
  • Автоподсказки для пользователей.
  • Простота настройки.

По надобности писал для Virtuemart 2.6 и Joomla 2.5

Подробнее...

Demo IcoMoon Joomla 3.x

Собрал демку классов IcoMoon. Backend разработчикам сайтов на Joomla пригодится, мне уж точно понадобилось. Делюсь :)

Для тех кто пользуется шаблоном Protostar

демо в отдельном окне

<span class="icon-joomla"></span>

Подробнее...

Joomla: JSON обработка запросов AJAX

Хочу рассказать точнее записать что-бы не забывать реализацию JSON запросов к серверу через библиотеку jQuery функция getJSON , часто уж голова выкидывает из памяти редко используемую информацию ))).

Естественно разработчики движка Joomla начиная с версии 1.5 которые используют шаблон программирования MVC позаботились об реализации данного функционала. А делается это просто:

Серверная часть: В вид (view) компонента добавляем класс view.json.php следующего содержания

<?php
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.view' );

class ComponentViewAjax extends JView
{	
		
	var $json = array();

	public function display($tpl = null)
	{	
		$result = new stdClass(); // или передать некий объект
		$this->json['result'] = $result;
		echo json_encode($this->json);
		exit();
	}
	
}

Надеюсь пояснять не надо что к чему иначе это не ваше и передайте работу профессионалу (не люблю это обращение).

И сам js запрос в сформированном html:

$.getJSON("<?php echo JURI::root(false) ?>index.php?option=com_component&view=ajax&format=json&request=1", function(json){
	alert(json.result); // вывод JSON объекта
});

Как видите все ну очень просто, за что и люблю разрабатывать сайты на Joomla, как бы его не хаяли, но гибкость в руках специалиста горы сворачивает. Таким же образом формируется и xml ответ на запрос, куда поставить xml думаю объяснять не надо ;)

Virtuemart транслитерация Алиас (псевдоним)

Если у кого проблемы с транслитерацией псевдонимов в латиницу, лечится просто

добавляем в запись БД,
таблица #__virtuemart_configs,
поле config,
добавить запись

|transliterateSlugs=s:1:"1";

Так же в файл конфигурации administrator/components/com_virtuemart/virtuemart.cfg добавить параметр

transliterateSlugs=1

Подкатегории