?

Log in

No account? Create an account

предыдущие | cледующие

Я не встречал еще ни одной темы для Wordpress в которой стандартная форма поиска генерит корректный HTML код при втором ее добавлении на страницу, например в body для 404 ошибки.

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

Вся проблема в том, что горе-программисты жестко записывают id формы и элементов ввода прямо в HTML темплит! В результате при добавлении 2 и последующих копий, в пределах одной страницы появляются кучи элементов с одинаковыми айди!

Для Wordpress приходиться каждый раз топать в редактор темы, и для файла Search Form (обычно "searchform.php") добавлять подобный код в начале:

<?php
 
global $some_variable;
if (isset($some_variable)) $some_variable += 1; else $some_variable = 0;   

$form_id = '';
if ($some_variable > 0) $form_id = $some_variable;

?>

Ну а потом фиксить HTML код самой формы, добавляя цифру порядкового номера формы в параметры id и name. Вот реальный пример с одного сайта:

<form role="search" method="get" id="searchform<?php echo $form_id ?>" class="searchform" action="<?php echo home_url( '/' ); ?>">
    <input type="text" value="" name="s" id="s<?php echo $form_id ?>" />
    <input type="submit" id="searchsubmit<?php echo $form_id ?>" value="<?php _e('Search','priimo'); ?>" />
</form>

Надеюсь что такой "фокус" будет полезен для продвинутых владельцев сайтов на Wordpress.

Ну и не плохо чтобы такой подход стал стандартом для веб-программистов. Нельзя же думать только прямолинейно, если публичный код может применяться в разных системах непрогнозируемой сложности!

Повбывавбы...

Comments

( 5 комментариев — оставить комментарий )
mayevski
18 сент, 2012 07:14 (UTC)
Відома проблема, але невідоме її вирішення. ID має унікально ідентифікувати елемент. А віджети майже ніколи не розробляються для повторного використання в межах сторінки (це я як автор віджета кажу :). Відповідно, ускладнювати код віджета з міркування, що якось десь хтось може його покласти двічі, маловиправдано. І малоймовірно для аматорських опенсорсних поробок.
karpolan
18 сент, 2012 07:34 (UTC)
Ну да, конечно :)

Сайдбар всегда один! В хедер и футер виждеты не ставятся...

Лень это все, свой глобальный счетчик инстансов иметь или генерить уикальный ID каждый раз нифига не проблема!
mayevski
18 сент, 2012 07:39 (UTC)
Технічно не проблема, але економічно невигідно.
karpolan
18 сент, 2012 07:41 (UTC)
На да, писать код без багов - это разрушает экономику :)
mayevski
18 сент, 2012 08:19 (UTC)
Звичайно - тоді ніхто не буде апгрейдитись, та й вартість розробки *набагато* збільшується.
( 5 комментариев — оставить комментарий )

Latest Month

Март 2016
Вс Пн Вт Ср Чт Пт Сб
  12345
6789101112
13141516171819
20212223242526
2728293031  

Метки

Разработано LiveJournal.com