2012-03-24 3 views
1

У меня есть Drupal сайт. Я хочу, чтобы следующее: - если пользователь находится на странице с именем «fotos (-20xx)» или «filmpjes (-20xx)» (в котором содержимое между скобками является необязательным, а x - цифрами от 0 до 9) ничего не происходит - если пользователь находится на странице, кроме указанных выше, новый rel atriibute добавляется $attributesЕсли НЕ равно

Это то, что я имел в виду:

$fotos = array('/fotos', '/fotos-2004', '/fotos-2005', '/fotos-2006', '/fotos-2007', '/fotos-2008', '/fotos-2009', '/fotos-2010', '/fotos-2011', '/filmpjes', '/filmpjes-2007', '/filmpjes-2009', '/filmpjes-2010', '/filmpjes-2011'); 
    $currentpage = $_SERVER['REQUEST_URI']; 

    foreach ($fotos as $foto) {if($foto != $currentpage) {$attributes['rel'] = 'shadowbox';}} 

Это имеет две проблемы:

  1. Это просто не работает
  2. Каждый год мне придется добавить новый год (например,/fotos-2013)

Кто-нибудь знает, как это можно записать в коротком фрагменте? И что еще более важно, кто-нибудь видит ошибку?

+0

вы можете сделать [регулярное выражение] [http://php.net/manual/en/function.preg-match.php] матч ссылку, если 'fotos' и/или' filmpjes' является постоянный срок. – hjpotter92

+0

Где находится этот код, 'index.php'? – galymzhan

ответ

1

Я думаю, что ваше требование, чтобы добавить переменную, когда Ури не присутствует в массиве.

$base = array('/fotos','/filmpjes'); 
    $baseFotos = '/fotos-'; 
    $baseFilm = '/filmpjes-'; 
    $i = '2004'; $j = date('Y'); 
    while ($i <= $j) { 
     $fotos[] = $baseFotos.$i; 
     $film [] = $baseFilm.$i; 
     $i++; 
    } 
    $result = array_merge($base,$fotos,$film); 

    // check if base uri in array. 
    if (!in_array($_SERVER['REQUEST_URI'], $result)) { 
     $attributes['rel'] = 'shadowbox'; 
    } 
+0

Большое спасибо, что похоже на шарм! –

+0

Добро пожаловать @Bram Vanroy –

+0

небольшой удар: я заметил, что это работает так, как должно, но, к сожалению, оно не работает для базовых дорожек/fotos 'и'/filmpjes '. Поэтому в основном их нужно добавить к результату $, но я откровенно не знаю, почему. Есть идеи? –

0

Чтобы решить проблему лет вы могли бы создать $fotos динамически, как этот

<?php 

$fixed = '/fotos'; 
$time = strtotime('now'); 
$year_start = '2004'; 
$year_end = date('Y', $time); 
$fotos = array($fixed); 
for(; $year_start <= $year_end; $year_start++){ 
    $fotos[] = "$fixed-$year_start"; 
} 

я не понимаю, что другие фрагменты кода, должны делать, но вы перекрывая те же элементы, каждый раз! В любом случае вы говорите о $attribute но писал $attributes

+0

Итак, это в основном создало бы массив в строках 2004, 2005, 2006, 2007, 2008, 2009 ...? И сиппет должен делать то, что я сказал: когда пользователь НЕ на годовой странице (например, fotos-2004, fotos-2005 ...), атрибут rel должен быть добавлен к атрибутам $. –

0

Я просто думаю об этой линии

<?php $currentpage = $_SERVER['REQUEST_URI']; ?> 

Может быть, это может быть изменение этого вместо

<?php $currentpage = drupal_get_path_alias($_GET['q']); ?> 
+0

У меня есть Drupal для своих ссылок, но что делает ваш пример? Что означает «q»? (ПРИМЕЧАНИЕ: это Drupal 7, о котором я говорю) –

+1

http://www.example.com/sample - даст вам значение «образец» –

Смежные вопросы