0 Пользователей и 1 Гость просматривают эту тему.
  • 41 Ответов
  • 11913 Просмотров
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Довольно часто встречаются запросы по организации показа разной информации для разных, скажем, городов (ещё не мультисайтовость, но уже интерактивность какая-никакая).
Т.е. при выборе из списка городов какого-нибудь города хочется получать новости по выбранному населённому пункту, и, скажем, пару дополнительных модулей с уникальной информацией.
Предлагаю своё небольшое решение для подобных задач, не требующих глобального программирования- модуль “Any chooser” (для J1.5 и 1.6/1.7, качать - по ссылкам в самом низу).



Сам по себе модуль ничего сложного не делает, а всего лишь позволяет создавать выпадающий список, и сохранять в куки пользовательские данные.

А далее - врубаем фантазию и думаем, что можно с этим делать :).
К примеру, я вывел стандартным модулем mod_latestnews информацию по выбранному городу, всего лишь хакнув пару строк в этом модуле (\modules\mod_latestnews\helper.php)

Код
if (isset($_COOKIE['cat'])) $catid=trim($_COOKIE['cat']); //проверили, есть ли такая кука
   else $catid = trim( $params->get('catid') ); //подставили её вместо номеров категорий, переданных через настройки модуля
$secid = trim( $params->get('secid') ); //это изначальная строка

Как вариант, можно выводить подобным методом в шаблон уникальное имя позиции модуля, а в админке создавать уникальные для каждого «города» модули и им прописывать эту позицию.

В общем, дальше сами играйтесь :)
Но сначала настраиваем и тестим всё на локалке, ибо, как показала практика, граната в опытных, но облизъяньих руках способна положить сайт (будет ругаться на куки неправильные).


[вложение удалено Администратором]
*

Aleks_El_Dia

  • Живу я здесь
  • 3671
  • 353 / 0
  • AEDStudio Joomla! Direction
Спам придумали боги в отместку за наши молитвы (с) Рома Воронежский
На молоко: Z369038872422 || R210017695494 || U247040729215 || ЯД 410011288250383
Мигрирую сайты, переношу расширения J!1.0->J!1.5->J!2.5. Более 50 успешных миграций.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
да там на картинке всё демо видно )
только сраный радикал тормозит неимоверно :)
выбрал значение-страница обновилась, новостной модуль вывел новость из соотвествующей категории. дальше делаешь что хошь :)

кстати, я тут нашёл ещё более интересное решение - надо будет затестить:
http://extensions.joomla.org/extensions/languages/multi-lingual-content/1767
там типа мультиязычность, но, по ходу, можно делать мульти_всё_что_хошь :)
для небольших сайтов очень удобная альтернатива джумфишам
*

zaero

  • Новичок
  • 6
  • 0 / 0
Отличный модуль. Подскажите пожалуйста, есть ли нечто подобное для Joomla 1.0?
Если нет, можно ли как-нибудь этот модуль адаптировать к J1.0?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
по сути там от Joomla только строки
$params->get('data', '');
$document    = & JFactory::getDocument();
и XML другой
так что берёшь модуль под 1.0, смотришь, как там оформлены эти моменты и переписываешь
*

KocmonpaB

  • Новичок
  • 5
  • 0 / 0
effrit, а не могли бы Вы еще раз залить модуль, к сожалению по ссылке файла нет.
заранее спасибо.

Ну вот, опять файл не найден :( А я так на него понадеялась! Вроде то, что надо...
*

god-master

  • Захожу иногда
  • 61
  • 2 / 0
Помогите перевести для Joomla 1.0.
Совсем не знаю функций и операторов, которые используются в 1.5!
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
*

god-master

  • Захожу иногда
  • 61
  • 2 / 0
Да в том то и дело, что XML перевёл - там ничего сложного.
А вот с & JFactory - проблемы. Поискал аналоги для Joomla 1.0. Но не пойму, что там в этих строчках делается.

В файле php необходимо сделать изменения во-первых, в этом месте:
Код
defined('_JEXEC') or die('Restricted access');

А во-вторых, в этом:
Код
$data=mb_ereg_replace("\]","",$data); 						// remoove all ']' simbol at once
$alldata=mb_split("\n",$data); // split text to array of strings
$document = & JFactory::getDocument();
Но вот здесь и не пойму, что делать. Если убрать строчки, то модуль работает, но, естественно, неправильно. Если не убирать, то не работает. Помогите, пожалуйста. Очень надо!
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
*

god-master

  • Захожу иногда
  • 61
  • 2 / 0
Это я сделал. Забыл написать. Проблемы со вторым местом.
*

god-master

  • Захожу иногда
  • 61
  • 2 / 0
Всё сделал, но всё равно не работает.
Работает только тогда, когда комментирую строчки
Код
$data=mb_ereg_replace("\]","",$data); 						// remoove all ']' simbol at once
$alldata=mb_split("\n",$data); // split text to array of strings
Естесственно, тогда меню селекторное пустое, но сайт работает нормально.
*

god-master

  • Захожу иногда
  • 61
  • 2 / 0
Может что не так делаю?
Но вроде ничего кроме вышеупомянутых строчек не менял. Странно как-то - это функции, вроде бы, обычные... ничего характерного именно для Joomla 1.5.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Всё сделал, но всё равно не работает.
Работает только тогда, когда комментирую строчки
Код
$data=mb_ereg_replace("\]","",$data); 						// remoove all ']' simbol at once
$alldata=mb_split("\n",$data); // split text to array of strings
Естесственно, тогда меню селекторное пустое, но сайт работает нормально.
Функции начинающиеся с mb_ насколько я помню требуют подключенного к апачу модуля для работы с многобитными кодировками (не помню как он называется), возможно у тебя его нет или не подключен. Но если Joomla 1.0, то там многобитных кодировок и не надо и смело можно эту приставку убрать, останутся функции, работающие с однобайтными кодировками.
*

god-master

  • Захожу иногда
  • 61
  • 2 / 0
Цитировать
Функции начинающиеся с mb_ насколько я помню требуют подключенного к апачу модуля для работы с многобитными кодировками (не помню как он называется), возможно у тебя его нет или не подключен. Но если Joomla 1.0, то там многобитных кодировок и не надо и смело можно эту приставку убрать, останутся функции, работающие с однобайтными кодировками.

Большое спасибо, результат налицо - теперь уже селектор появляется... =), но сайт по прежнему не работает. После селектора ничего не грузится.

Кто-нибудь тестировал вообще его под Joomla 1.0? Может я просто что-то не то делаю?
*

god-master

  • Захожу иногда
  • 61
  • 2 / 0
Там, оказывается, ещё ниже были функции с mb_.
Их тоже убрал и теперь всё стало выводиться, но теперь в выпадающем меню появляется только первая строчка, а все остальные - нет. Может дело именно в mb_? Может работает только с ней?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Нет, mb_ требуется для UTF-8, для 1251 не нужно. Дело в чем-то еще.
*

god-master

  • Захожу иногда
  • 61
  • 2 / 0
Может выложить изменённые файлы - кто-нибудь у себя потестирует?
Может у меня руки кривые? =)
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Попробуй
Код
$alldata=split("\n",$data); 	
заменить на
Код
$alldata=split("<br />",$data);
Мне помогло.
*

god-master

  • Захожу иногда
  • 61
  • 2 / 0
Цитировать
Попробуй
Код:

$alldata=split("\n",$data);    

заменить на
Код:

$alldata=split("<br />",$data);

Мне помогло.
Да, спасибо, это помогло - теперь выводятся все строчки, которые ввожу, но вот их выбор не происходит..
Когда выбираю какую-нибудь строчку, в фаерфоксе пишется сообщение: "Фаерфокс не может определить, как открытть данный адрес и т.п.". Тут, скорее всего, из-за того, что на локалхосте проверяю. Если проверяю на работающем сайте, то выскакивает просто абсолютный путь до файлов сайта.

Сменил строчку
Код
$redirectUrl=$mosConfig_absolute_path;
на
Код
$redirectUrl="index.php";
Но теперь не происходит выбора нужной строчки. Происходит перезагрузка страницы и строчка остаётся та, которая была, а не та, которую выбрал.
*

god-master

  • Захожу иногда
  • 61
  • 2 / 0
Попробуй
Код
$alldata=split("\n",$data); 	
заменить на
Код
$alldata=split("<br />",$data);
Мне помогло.
А у тебя выбор происходит нормально? Когда меняешь строчки в выпадающем списке одну на другую - всё нормально работает? У меня просто перекидывает по адресу, который указан (например, главная страница), а значение в выпадающем списке не меняется, а остаётся как предыдущее.
*

god-master

  • Захожу иногда
  • 61
  • 2 / 0
Если не трудно, прикрепи, пожалуйста, файл php твоего модуля. Что-то я ничего не понимаю.
А ещё вопрос, а где тестируешь скрипт? На локалхосте?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Код: php
<?php
/**
* @version $Id: mod_footer.php 14401 2010-01-26 14:10:00Z louis $
* @package Joomla
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// no direct access
defined( '_VALID_MOS' ) or die();

$data = $params->get('data', '');
$redirect=$params->get('redirect', '0');
$expire=(int)$params->get('expire', '0');
//require(JModuleHelper::getLayoutPath('mod_anychooser'));
?>

<script type="text/javascript"> 

function setCookie (name, value, expires, path, domain, secure) {
var exdate=new Date();
exdate.setDate(exdate.getDate()+expires);


  document.cookie = name + "=" + escape(value) +
((exdate)? "; expires=" + exdate : "") +
((path)? "; path=" + path : "") +
((domain)? "; domain=" + domain : "") +
((secure)? "; secure" : "");
}

    function checkit(cook){
//alert(cook);
var dataArr = cook.menu.value.split(';'); // make array from spllittin string
for(i = 0; i < dataArr.length; i += 1){
var n_v = dataArr[i].split('='); // make pair name / value
//alert( n_v[1]);
setCookie(n_v[0], n_v[1], <?php echo $expire;?>, "/"); // push name, value and expiration date to cookie
}
location=cook.action; // simple redirect
        //document.forms["anychooser"].submit(); 

</script>

<?
$data=mb_ereg_replace("\]","",$data); // remoove all ']' simbol at once
$alldata=mb_split("<br />",$data); // split text to array of strings
$redirectUrl=JPATH_SITE; // set redirect to the same page
if ($redirect) $redirectUrl="/"; // or to the main page

$label="";
if (isset($_COOKIE['label'])) $label=$_COOKIE['label']; // get value of 'label' from cookie if it's set
echo "<div class='anychooser ".$label."'><form action='". $redirectUrl ."' method='post' name='anychooser'><select name='menu' size='1' onchange='checkit(this.form);'>";
$datcount=0;
foreach($alldata as $single){
$parts=mb_split("\[",$single); // split string to two parts (label and data)
$shoosed=" ";
mb_ereg("label=(.*?);",$parts[1], $matches); // get value of 'label' from list
if($label==$matches[1]) $shoosed=" selected "; // and compare it to cookie (if "yes" - made current list item 'selected')
echo "<option".$shoosed."value='".$parts[1]."'>". $parts[0] ."</option>";
$datcount++;

}
//echo "<input type='submit' value='OK' />";
echo "</select></form></div>";

?>
Но предупреждаю - у меня Joostina 1.3, она схожа с Joomla 1.0 но не очень.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Бесплатный плагин импорта экспорта данных в поля материалов Joomla - CFI

Автор zikkuratvk

Ответов: 8
Просмотров: 4372
Последний ответ 02.04.2023, 11:35:58
от Olg
WT Digitally signed PDF отображения данных электронной подписи из PDF

Автор sergeytolkachyov

Ответов: 0
Просмотров: 1483
Последний ответ 23.03.2022, 13:45:39
от sergeytolkachyov
Модуль для вывода файлов меню из папки food

Автор draff

Ответов: 0
Просмотров: 1508
Последний ответ 19.09.2021, 10:17:14
от draff
Модуль случайной всплывающей цитаты для Joomla!

Автор Филипп Сорокин

Ответов: 2
Просмотров: 1861
Последний ответ 05.05.2021, 20:00:07
от Филипп Сорокин
jQuery модуль Обратный звонок, Форма заказа и многое другое

Автор extender

Ответов: 5
Просмотров: 8067
Последний ответ 26.11.2020, 08:59:36
от MariaK