TypeError: Joomla.optionsStorage is undefined - быстрый fix
Если часть плагинов не работает в админке сайта и консоль разработчика выдает ошибку:
TypeError: Joomla.optionsStorage is undefined
как описывал в другой статье (Joomla 3.7.x - если не работает плагин TinyMCE), это связано с косяком параметров. Так вот нашел более предпочтительный вариант чем везде и всюду вставлять парсер параметров. Для решения задачи нам необходимо в исполняемом .js вставить кусок кода.
Joomla 3.7.x - если не работает плагин TinyMCE
Если не работает TinyMCE плагин и в консоле разработчика выдает вот такие ошибки:
TypeError: Joomla.optionsStorage is undefined - tinymce-builder.js:278:1
TypeError: Joomla.optionsStorage is undefined - tinymce.min.js:1:361
, это значит что плагин не может вытащить параметры передаваемые Joomla в json формате
Не стал долго и упорно выяснять причину и ковыряться во всей джумловской каше, а попросту написал свой парсер в обход core.js. Не стоит забывать, что это временное решение и с обновлением скорей всего слетит, а может это мой косяк в движке. В общем не удивлюсь, что вскоре косяк исправят.
И так приступим:
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 со своим разделителем
- Joomla /
- Virtuemart
- 03.04.2015
- job
- 4765
Давно это было когда прайсы конвертировались из xls в csv и через компонент CSVI импортировались в Virtuemart. В своей практике делал все связки, но на данный момент чаще задача импорта xml или xls. Но да это случилось, попалась мне такая задача импорта.
Умный поиск - плагин поиска товаров Virtuemart
- Joomla /
- Virtuemart
- 01.04.2015
- job
- 9154
Написал плагин для товаров Virtuemart, с помощью которого можно организовать так называемый Умный поиск.
Преимущество думаю всем известны:
- Релевантный поиск.
- Фильтры.
- Автоподсказки для пользователей.
- Простота настройки.
По надобности писал для Virtuemart 2.6 и Joomla 2.5
Demo IcoMoon Joomla 3.x
Собрал демку классов IcoMoon. Backend разработчикам сайтов на Joomla пригодится, мне уж точно понадобилось. Делюсь :)
Для тех кто пользуется шаблоном Protostar
<span class="icon-joomla"></span>