Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Уникальный ID модулю


afinalux

Recommended Posts

Как дать выводимым на странице одинаковым модулям разные #id?

Например, есть модуль обратной связи.

Я го вывожу в левой колонке и в правой колонке.

Получается что-то вроде:

<div id="column-left">

<div class="feedback">{...}</div>

</div>

<div id="column-right">

<div class="feedback">{...}</div>

</div>

Задача сделать так:

<div id="column-left">

<div class="feedback" id="some-id">{...}</div>

</div>

<div id="column-right">

<div class="feedback" id="some-other-id">{...}</div>

</div>

 

 

Надіслати
Поділитися на інших сайтах


@Wadamir , вы не совсем поняли вопрос. Модуль один, я его вывожу из настроек модуля в 2 позиция в шаблоне. Мне надо, чтобы в итоге двух этих экземпляров модуля были разные id.

Сейчас просто яваскриптом добавляю attr(id, some-id), но, думаю, что может есть другой вариант...

Надіслати
Поділитися на інших сайтах


8 минут назад, afinalux сказал:

Сейчас просто яваскриптом добавляю attr(id, some-id), но, думаю, что может есть другой вариант...

У родительского элемента всегда свой id. Зачем придумывать велосипед если к интересующей "копии" модуля всегда можно обратиться по "#id_родителя > .класс_модуля"?

Надіслати
Поділитися на інших сайтах

@iglin , к большому сожалению, в jquery dialog (всплывашка) не работает обращение по родителю, иначе я бы не занимался этой фигней.

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

Змінено користувачем afinalux
Надіслати
Поділитися на інших сайтах


@afinalux Тогда самое простое, что мне приходит в голову, это в column_left.tpl, column_right.tpl и т.д. "оборачивать" все элементы массива $modules в блоки с определёнными id/

Что то вроде такого:

  <?php $nomer_modulia=1; //номер модуля по порядку ?> 
  <?php foreach ($modules as $module) { ?>
  <div id="left_<?php echo $nomer_modulia; ?>">
  <?php echo $module; ?>
  <div>
   <?php $nomer_modulia++; //увеличиваем номер модуля  ?> 
  <?php } ?>

 

Надіслати
Поділитися на інших сайтах

1 час назад, iglin сказал:

@afinalux Тогда самое простое, что мне приходит в голову, это в column_left.tpl, column_right.tpl и т.д. "оборачивать" все элементы массива $modules в блоки с определёнными id/

Что то вроде такого:


  <?php $nomer_modulia=1; //номер модуля по порядку ?> 
  <?php foreach ($modules as $module) { ?>
  <div id="left_<?php echo $nomer_modulia; ?>">
  <?php echo $module; ?>
  <div>
   <?php $nomer_modulia++; //увеличиваем номер модуля  ?> 
  <?php } ?>

 

Спасибо за наводку.

Единственная проблема, если изменится порядок модулей или добавится/удалится порядок модуля, все слетит.

Наверное, надо так:

<?php foreach ($modules as $module) { ?>
	<?php if(isset($module['name']) { ?>
  		<div id="left_<?php echo $module['name']; ?>">
   
  <?php echo $module; ?>
  <div>
     <?php } else { ?>
    
      <?php echo $module; ?>
   <?php } ?>
    
  <?php } ?>

Только придется озаботиться наличием $module['name'] в контроллере.

 

Спасибо за совет!

Змінено користувачем afinalux
Надіслати
Поділитися на інших сайтах


46 минут назад, afinalux сказал:

Что-то мне у меня закрались сомнения, что моя конструкция заработает =)

Куда надо пихнуть $module['name'], подскажите, плз.

Верно она у вас закралась) Чтобы озаботиться наличием ['name'] придётся копать сильно глубже. 

-----------cпустя полчаса раздумий-----------

Если для какого то определённого модуля эта штука требуется, то в голову вот такой костыль пришёл) :

1. В контроллера левой колонки и правой колонки if ($part[0]=='код модуля') то посылаем в функцию index контроллера модуля переменную с обозначением колонки

2. В контроллере модуля эту переданную переменную вписываем в $data['переменная_колонки']

3. В модуль.tpl  'id='.переменная_колонки.'_идентификатор_модуля'

Змінено користувачем iglin
Надіслати
Поділитися на інших сайтах

@afinalux   

1.

 $part = explode('.', $module['code']);
        if ($part[0]=='category')  {
            if (isset($part[0]) && $this->config->get($part[0] . '_status')) {
                $module_data = $this->load->controller('extension/module/' . $part[0], 'column_left');

                if ($module_data) {
                    $data['modules'][] = $module_data;
                }
            }
        } else {

2. 

public function index($column) {

...

$data['column'] = $column.'_cat';

3.

<div id="<?php echo $column; ?>">

 

Наверняка есть более элегантный и простой способ, но на скорую руку только такое в голову пришло))

Надіслати
Поділитися на інших сайтах

После установки у в массиве $settings будет элемент  module_id

public function index($settings) 
{
	$data['module_id']  =  $settings['module_id'];
}

APL.ocmod.xml

Надіслати
Поділитися на інших сайтах

42 минуты назад, iglin сказал:

Верно она у вас закралась) Чтобы озаботиться наличием ['name'] придётся копать сильно глубже. 

-----------cпустя полчаса раздумий-----------

Если для какого то определённого модуля эта штука требуется, то в голову вот такой костыль пришёл) :

1. В контроллера левой колонки и правой колонки if ($part[0]=='код модуля') то посылаем в функцию index контроллера модуля переменную с обозначением колонки

2. В контроллере модуля эту переданную переменную вписываем в $data['переменная_колонки']

 3. В модуль.tpl  'id='.переменная_колонки.'_идентификатор_модуля'

Уоу-уоу-уоу, палехче :D Я пока не настолько продвинут в php и opencart.

Прошу вас более детально описать действия, конкретно первый эта:

 if ($part[0]=='код модуля')   - не совсем понятно, что есть $part[0] и где взять 'код модуля' и как и послать их в контроллер =)

Остальное понятно.

 

P.S: в данном случае реализовать это требуется на ocStore 1.5.5.1.2, если это имеет значение.

Спасибо за уделенное время!

Надіслати
Поділитися на інших сайтах


@afinalux ocStore 1.5.5.1.2 у меня к сожалению нет под рукой, так что этот костыль для него написать не смогу)) 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.